2012-03-27 208 views
4

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

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当我得到: - 失败的错误

安全连接到本地主机 连接的过程中出现。 Peer的证书有一个无效的签名。 (错误代码: sec_error_bad_signature)您试图查看的页面不能为 ,因为接收到的数据的真实性可能不是 已验证。 *请联系网站所有者告知他们这个问题。

任何想法的人?

感谢

普通不可信错误 本地主机使用无效的安全证书。 证书不可信,因为它是自签名的。

我的CA证书错误 连接到本地主机时发生错误。 对等方的证书有无效签名。

+0

生成证书时使用了什么常用名称(CN)? – 2012-03-27 12:37:02

+0

对于服务器和CA我用localhost – TSUK 2012-03-27 12:39:45

回答

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

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

+1

我认为我的错误可能是配置之一,而不是我的证书自签名。我从来没有使用SSLCertificateChainFile“C:/Apache2/conf/ca.crt”作为自签名证书,但是如果我不使用ca.crt并生成非加密文件,它可以很好地工作。 – TSUK 2012-03-27 12:31:32

0

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

尝试免费的证书既然你只是在本地主机上测试,不用担心警告。但是在制作过程中,这可能会阻止您的用户。

+2

在非CA不受信任的证书上通常会出现错误代码:sec_error_untrusted_issuer,但错误代码:sec_error_bad_signature不允许我添加异常。你能否看到我是否犯了配置错误? – TSUK 2012-03-27 12:23:53