生成SSL证书

我想知道如果有人有任何想法如何使用openssl生成一个签名的CA证书和密钥? 我发现这个网站( http://dev.mysql.com/doc/refman/5.1/en/secure-create-certs.html )生成客户端和服务器证书的MySQL服务器,但例子是一个自签名证书。 我使用以下命令来使用openssl和生成的证书和密钥运行服务器和客户端:

openssl s_server -accept 6502 -cert server-cert.pem -key server-key.pem -CAfile ca-cert.pem -www openssl s_client -connect 192.168.1.92:6502 -cert client-cert.pem -key client-key.pem -CAfile ca-cert.pem 

我得到的错误输出是“validation返回码:18(自签名证书)”。

保罗

创build根CA(自签名):

我们来看看详细的选项:

  • x509标识需要证书,而不仅仅是证书请求(见下文)。
  • 天数 30000将证书在30000天内过期。 你可能想延长这段时间。 logging到期date,以便在必要时更新它!
  • sha1指定应该使用SHA1encryption。 rsa:2048将密钥设置为2048位RSA。
  • 节点不指定密码。
  • 输出输出指定在哪里存储证书和密钥。 密钥只能是根可读的; 该证书可以是世界可读的,并且必须由Apache运行的用户可读。
  • subj标志设置公司名称,部门名称和网站地址。 如果你把这些留下,你会被提示。 CN必须与您网站的地址相同,否则证书不符,连接时用户会收到警告。 确保你不使用质询密码。

创造它 :

 sudo openssl req -x509 -nodes -newkey rsa:2048 -sha1 -keyout rootkey.key -out rootca.crt -passin pass:root -days 30000 -subj "/C=DU/ST=Dubai/L=TownCenter/O=AmesCom/CN=AmesCom Int" -config openssl.cnf.my 

手动encryption密钥:

密钥没有encryption,因为-nodes选项,所以我们手动encryption:

 sudo cp rootkey.key rootkey.key.org sudo openssl rsa -in rootkey.key.org -out rootkey.key 

testing它:

为了立即testing,您可以采取两种方式:

 openssl x509 -text -noout -in rootca.crt 

或在浏览器上检查其内容:

 cp rootca.crt /var/www/html/ 

从浏览器请求地址:

 http://yourserverdomain/rootca.crt 

现在您可以创build证书请求并使用此自签名证书对其进行签名

  • 您可以从那里购买商业提供商签署的证书。
  • 你可以使用OpenCA
  • 您可以build立自己的证书颁发机构
  • 您可以使用自签名证书,如下所示: http : //www.stunnel.org/?page=howto

去年我写了一个脚本,为我做了所有的事情 – 创build一个虚假的CA,并签署该CA的证书。 如果需要链接完整,请确保将ca.crt的内容添加到最终的PEM文件中。

http://tacticalvim.wordpress.com/2010/06/20/sslkeygen-sh-complete-ssl-cert-creation-helper-script/

根据它的使用情况,你仍然会与伪造的签名者得到CA的问题,但它可能在技术上符合你的目的。

我已经解决了这个问题,但这是答案。

我设法使用以下网站生成我自己的证书: ConfiguringApache2ForSSLTLSMutualAuthentication

我已经在两台PC之间的openssl上进行了testing,并在Sierra Wireless调制解调器和openssl服务器之间的电波上进行了testing。