我正在将 SSL crt 和密钥从一台服务器移动到一台新服务器。旧服务器位于带有 cpanel 的盒子上,而新服务器只是一个 LAMP Ubuntu 盒子。我已经按照教程和说明操作了几个小时,但没有任何进展。我创建了一个 VirtualHost 文件,监听 443。所有非 https 页面都可以正常工作,但只要我转到 https 页面,它就会拒绝连接。我尝试使用 digicert.com/help,它报告“未找到证书”。我究竟该如何解决此问题?
答案1
如果您收到拒绝连接错误,则可能是该盒子未在端口 443 上监听,或者防火墙阻止了它。您可以使用netstat -an | grep :443
(在该盒子上)查看它是否在监听。
答案2
监听 443 的 VirtualHost 应该有一个类似这样的块:
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.example.com-key
SSLCertificateChainFile /etc/pki/tls/certs/startssl.intermediate.bundle.pem
SSLCACertificateFile /etc/pki/tls/certs/startssl-ca.pem
您需要将证书和密钥文件从旧服务器复制到新服务器,并根据需要调整配置文件中的路径。
其中有几行与我使用的证书颁发机构有关。特别是,我使用 SSLCertificateChainFile 行指定中间证书。您可能需要对 CA 的文件执行类似操作(查看 CA 的文档以了解具体文件)。
完成上述操作后,重新加载 Apache。如果出现问题,请检查 /var/log/httpd/error.log。确保权限正确,即 Apache 用户可以读取上述文件,并且其他人无法访问私钥。
答案3
仅仅监听 443 是不够的。您需要告诉 apache 要使用哪个证书。如果您可以为服务器检索旧证书,则只需配置 apache 即可使用它。
这是出色地已记录在 apache.org 上。