我被委托更新我们一个客户服务器上的证书。问题是,我不仅以前从未做过这件事,而且我读过的所有网站上涉及的流程似乎都不适合我。
首先,在客户获得新证书之前,我从未向客户提供密钥文件,我以为他们需要该文件来生成证书。
其次,服务器上唯一的其他证书文件是来自 Verisign 的通用证书文件,而不是像我收到的新证书文件那样特定于域的证书文件。
最后,我收到的是一个 .cer 文件,它显然与 .crt 文件一样好,但它让我更加怀疑它是错误的证书。
引用证书的我的 ssl.conf 是这样的;
SSLCertificateFile /etc/httpd/ssl/ssl.cert.pem
SSLCertificateKeyFile /etc/httpd/ssl/ssl.key
SSLCACertificateFile /etc/httpd/ssl/ca.crt <<< This is the verisign one
所以,基本上,我有一个 .cer 文件、一个 conf 和一个服务器,但我觉得它们都不对劲。我真的需要任何帮助。
谢谢,
基督教
答案1
你还有很多东西要学。SSL 是一个棘手的问题。第一个问题是:当前安装的证书对他们托管的域(模数到期日期)是否有效(由“真实”CA 等颁发)?如果是,事情就简单多了。
哦,顺便说一句,之前设置这个的人显然有点 RHEL 狂热,因为/etc/httpd
Ubuntu 的东西不在这里保存。这可能会给你带来麻烦。
首先,“Verisign”证书/etc/httpd/ssl/ca.crt
不是最终用户证书,而是颁发前一个证书的 CA 的证书。如果您从其他 CA 获取新证书,则可能需要更改。
听起来,如果是续订(并且上面的先前证书有效),新证书可能是从现有密钥生成的。这很好——毕竟密钥是私有的,不需要每年更改。要检查它们是否一致,请运行:
openssl rsa -noout -in /etc/httpd/ssl/ssl.key -text
openssl x509 -noout -in /new_cert_file.cer -text
并检查每个命令输出的模数数据。如果它们相同,则新证书是从旧密钥生成的,一切可能都正常。如果它们不同,则您需要获取生成证书的密钥,然后使用它。如果 openssl 抱怨证书文件的格式无效,那么您的猜测是正确的,该文件不好,需要转换或重新发布。(在这种情况下,粘贴证书文件,有人可能会识别格式并能够告诉您如何转换它)。
要安装新证书(可能还有密钥),请重命名现有文件,然后将新文件复制到位。重新启动 Apache(完全重新启动是最安全的,但如果您只更改了证书,则需要重新加载应该解决问题)。检查 Apache 是否恢复,使用 HTTPS 访问网站应该会报告证书的新到期日期。如果有问题,最好将旧文件移回原位(这就是我们首先将它们移开的原因),然后检查日志中的错误以查看出了什么问题以及如何修复它。