Apache2 + OpenSSL,证书CA.

时间:2012-03-27 12:01:12

标签: apache2 openssl certificate

我使用以下命令创建了自签名服务器证书,私有服务器密钥和证书颁发机构自己的证书。

openssl genrsa -out ca.key 2048
openssl req -config openssl.cnf -new -x509 -days 365 -key ca.key -out ca.crt
openssl genrsa -out server.key 2048
openssl req -config openssl.cnf -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

然后我使用下面的内容将它们添加到httpd-ssl.conf。

SSLCertificateFile "C:/Apache2/conf/server.crt"
SSLCertificateKeyFile "C:/Apache2/conf/server.key"
SSLCertificateChainFile "C:/Apache2/conf/ca.crt"

然而,在访问https://localhost时,我得到: -

  

安全连接失败连接期间发生错误   本地主机。同行的证书签名无效。 (错误代码:   sec_error_bad_signature)您尝试查看的页面不能   显示是因为接收数据的真实性不可能   验证。   *请联系网站所有者告知他们这个问题。

任何想法?

由于

正常不受信任的错误 localhost使用无效的安全证书。 证书不受信任,因为它是自签名的。

我的CA证书错误 连接到localhost期间发生错误。 同行的证书签名无效。

3 个答案:

答案 0 :(得分:11)

尝试以这种方式重新生成证书:

openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr

然后,从服务器证书中删除密码,以避免Apache每次重新启动时都询问密码:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

然后,生成您的自签名证书

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

之后,只需指定SSLCertificateFileSSLCertificateKeyFile即可使用新证书。

答案 1 :(得分:1)

由于自签名证书没有受信任的根证书颁发机构,因此您需要将它们添加到浏览器的可信CA列表中。浏览器无法验证未经证实的证书。

答案 2 :(得分:0)

这是因为它是一个自签名证书。要避免此消息,您需要自己验证并从Verisign,GoDaddy等受信任的CA机构购买证书。 您还可以尝试COMODO Instant SSL

中的免费证书

由于您只是在localhost上进行测试,因此请不要担心警告。但在生产方面,这可能会阻止您的用户。