安装SSL证书会导致服务器在重新启动时失败

时间:2012-02-08 13:07:48

标签: apache ssl centos

我通过电子邮件收到了我的证书,然后创建了必要的文件并将其复制过来。我去重新启动服务器并收到以下错误。

  

[Wed Feb 08 13:02:06 2012] [错误]初始化:无法从文件/home/sslcertificates/mydomain.crt读取服务器证书   [Wed Feb 08 13:02:06 2012] [错误] SSL库错误:218529960错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标签   [Wed Feb 08 13:02:06 2012] [错误] SSL库错误:218595386错误:0D07803A:asn1编码例程:ASN1_ITEM_EX_D2I:嵌套asn1错误

有没有人有任何想法?

9 个答案:

答案 0 :(得分:20)

导致此错误消息的另一个可能的失败原因是: 而不是我链接到认证请求文件的证书文件。 当您阅读文件的第一行时,它是可识别的: 任

-----BEGIN CERTIFICATE REQUEST-----

-----BEGIN CERTIFICATE-----    

: - )

答案 1 :(得分:13)

情况:Apache 2.4使用StartSSL证书生成ASN编码错误

问题:

AH02564: Failed to configure encrypted (?) private key <domain>.com:80:0, check /etc/pki/tls/certs/ssl.key

默认情况下,某些SSL颁发者会对ssl密钥文件进行加密,因此请确保在服务器上对其进行解密并将其从虚拟主机中指向。

只需回显密钥文件即可确保其未加密。

enter image description here

解密mod_ssl的密钥文件

openssl rsa -in ssl.key -out ssl.key

对于Apache conf(httpd.conf)中的SSL配置,添加以下配置并重新启动Apache。

enter image description here

# SSL
<VirtualHost *:443>
    ServerName gajen.com
    SSLCertificateKeyFile /etc/pki/tls/certs/ssl.key
    SSLCertificateFile /etc/pki/tls/certs/ssl.crt
    SSLCertificateChainFile /etc/pki/tls/certs/root.ca.pem
</VirtualHost>

进行问题排查:

  • 首先调试Apache tail 50 /var/log/httpd/error_log
  • 调试mod_ssl tail 50 /var/log/httpd/ssl_error_log

答案 2 :(得分:9)

在我的情况下,我将证书混合在一起:SSLCertificateFile具有private_key,SSLCertificateKeyFile具有证书。

答案 3 :(得分:5)

离开这里,因为这是第一次谷歌搜索错误:当你安装一个新的密码短语保护证书并且只是重新加载apache配置(而不是完全重启apache)时,也会导致这种情况。重新加载本身不会抛出任何错误,但它也不会要求您的密码并且无法解密证书。

可以通过完全重启apache来解决这个问题,这将要求密码短语并允许你解密。

答案 4 :(得分:0)

使用重新创建* .key文件并再次复制粘贴内容解决了问题。

答案 5 :(得分:0)

或者在禁用旧密码自动输入之前需要。 评论规则如:

#SSLPassPhraseDialog exec:/etc/ssl/passphrase-script

答案 6 :(得分:0)

最近在Apache 2.4中安装SSL期间,我们遇到了相同的错误-'asn1编码例程'

我们已经正确放置了所有文件,并将它们正确指向.conf文件。经过一天的故障排除,我们意识到在获得证书后配置没有问题。

我们使用供应商的内置系统创建了证书签名请求(CSR)。这使我们可以粘贴我们创建的密钥。供应商返回的SSL证书应该映射此CSR,该CSR已映射到我们的私钥。显然不匹配。他们提供的SSL证书不会映射到CSR。

可能的原因 由于unix行尾(\ n而不是\ r \ n)/编码(ANSI / UTF8)/预期的新行,CSR转换的关键在卖方方面是错误的。

我们使用OpenSSL自己创建了CSR,并绕过了供应商CSR的产生。 有效。因此,在我们的情况下,使用OpenSSL创建密钥和相应的CSR并使用它来生成公共SSL即可。

OpenSSL命令

openssl req -new -sha256 -key ~/site.com.ssl/site.com.key -out ~/site.com.ssl/site.com.csr

答案 7 :(得分:0)

我遇到了这个问题,因为向我发送了粘贴到电子邮件中的IIS样式.p7b文件的内容。像.pem一样,它具有“ ----- BEGIN CERTIFICATE -----”和“ ----- END CERTIFICATE -----”标签,内容使用类似外观的base64编码。我将其转换为* .pem文件,如下所示:

openssl pkcs7 -print_certs -in cert.p7b -out cert.cer

之后,Apache 2.2很高兴。

答案 8 :(得分:-3)

您的SSL证书似乎未遵循ASN.1编码规则。本书可以帮助您找到原因:ASN.1 Complete