我从 GoDaddy 收到了新的 SSL 证书,旧证书来自 Comodo。
内容/etc/ssl/private/pure-ftpd.pem
如下:
-----BEGIN PRIVATE KEY-----
PRIVATE KEY USED TO CREATE THE CSR
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
CONTENTS OF CRT FILE RECEIVED BY GODADDY
-----END CERTIFICATE-----
更新文件内容后,我重新启动pure-ftpd
并检查状态:
/etc/init.d/pure-ftpd restart
/etc/init.d/pure-ftpd status
[ ok ] pure-ftpd is running.
一切似乎都很好。现在我尝试验证新证书:
编辑CRT
:我将GoDaddy 提供的“捆绑”文件添加到了 中,现在我得到了这个输出(但由于下面显示的错误,/etc/ssl/certs
仍然无法重新启动)apache2
openssl verify -CApath /etc/ssl/certs /etc/ssl/private/pure-ftpd.pem
pure-ftpd.pem: OK
然后我尝试重新启动apache2
(假设这会告诉系统使用新的证书):
apache2ctl graceful
httpd not running, trying to start
Action 'graceful' failed.
The Apache error log may have more information.
Apache 错误日志:
[error] Unable to configure RSA server private key
[error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
看似相关的部分/etc/apache2/sites-available/default-ssl
:
PEM
如果我生成了新的私钥,是否需要以某种方式更新声明的文件?SSLCertificateFile
(如果是这样,其中到底需要包含什么,以及如何实现?)
SSLCertificateFile /etc/ssl/certs/my.server.net.pem
SSLCertificateKeyFile /etc/ssl/private/my.server.net.key
我也尝试使用这些命令来比较每个文件的模量,它们是相同的:
openssl x509 -noout -modulus -in /etc/ssl/private/pure-ftpd.pem | openssl md5
openssl rsa -noout -modulus -in /etc/ssl/private/my.server.net.key | openssl md5
有人能给我指出正确的方向吗?
另一处编辑:当我通过 FileZilla 等客户端访问 FTP 服务器时,系统会显示新 GoDaddy 证书的凭证。这很棒,但这个问题让我抓狂不已!
答案1
如果我生成了新的私钥,是否需要以某种方式更新声明为 SSLCertificateFile 的 PEM 文件?
是的,因为证书代表密钥的公共部分(以及其他数据,例如有效期),所以这个公共部分必须与 .key 文件中的私有部分相匹配。您不能单独生成它们。
如果您一开始提供的是您的新证书,则必须创建 2 个文件my.server.net.pem
,.key
并将 BEGIN PRIVATE KEY/END PRIVATE KEY 内的部分(包括这些行)放入 .key 文件中,将下一部分(带有标题)放入 .pem 文件中。但是,Apache2 TLS 最终能否正常工作还取决于证书内的 CN + SAN。如果仅为名称创建了证书,ftp.myserver.whatever
而没有同时为证书创建证书www.myserver.whatever
,则浏览器将显示警告(因为名称不匹配)。