【问题标题】:SSL renew certificate on apache keeps using old certtificate fileapache上的SSL更新证书继续使用旧证书文件
【发布时间】:2016-04-01 11:01:06
【问题描述】:

我正在尝试更新我的 SSL 证书,但我可能遗漏了一些问题。在我完成以下步骤后,服务器继续使用旧证书,我不知道为什么。 这是我所做的:

  1. 新建csr文件(domain.csr)+密钥文件(domain.key)
  2. openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

  3. 复制 csr 文件内容并将其粘贴到我的 ssl 提供商 + 获得批准。

  4. 从中获取5个文件并上传到服务器(domain.der,domain.pem ,domain.cer,chain.cer,domain.p7b)
  5. 在 apache ssl.conf 文件上设置 , SSLCertificateFile (domain.cer) SSLCertificateKeyFile (domain.key)。
  6. 重启 apache

由于某种原因,我的服务器仍在使用我的旧证书。

是我做错了吗?

【问题讨论】:

  • 浏览器经常缓存证书。重新启动浏览器,或者更好的是,使用不同的浏览器进行测试。还可以通过使用 OpenSSL 读取文件来检查 domain.cer 是否为新证书。
  • 什么是 linux openssl 命令来检查我正在使用哪个 domain.cer 文件?
  • 取决于格式但尝试“openssl x509 -in domain.cer -text”
  • 感谢@BazzaDP,我做到了,domain.cer 确实是新的正确文件,但服务器仍在使用旧文件,服务器可以有自己的 ssl 文件缓存吗?
  • 您是否尝试过其他浏览器?证书是否在多个虚拟主机中定义并且您只更新了其中一些?还可以尝试完全停止和启动,而不是正常重启。

标签: apache openssl ssl-certificate


【解决方案1】:

好吧,你自己想通了,但如果其他人处于同样的情况,这里有一些你可以检查的事情。

首先在本地检查这是否有效,通过在服务器上运行以下 openssl 命令(我们跳过了一个关键步骤!):

openssl s_client -connect localhost:443

这将显示 Apache 提供给客户端的证书。如果这不是正确的,那么您知道 Apache 配置有问题。如果它是正确的,那么下游的东西就是问题。

在您的情况下,您在负载均衡器处终止 SSL 并忘记在那里更改证书。另一个问题可能是浏览器缓存 SSL 证书(重新启动它,Ctrl+F5 强制刷新或尝试其他浏览器或第三方网站,如 ssllabs.com)。

假设这是 Apache 的问题,那么您需要检查配置以检查证书的所有实例都已被替换。以下命令将显示所有虚拟主机及其配置:

/usr/local/apache2/bin/apachectl -S

或者只使用标准的 find 和 grep unix 命令在 Apache 配置中搜索旧证书或新证书:

find /usr/local/apache2/conf -name "*.conf" -exec grep olddomain.cer {} \; -print

这两个命令都假定 apache 安装在 /usr/local/apache2 中,但会根据需要更改路径。

如果一切看起来都不错,并且您确实重新启动了 Apache,那么您可以尝试完全停止并重新启动,因为我注意到有时优雅地重新启动 Apache 并不总能获得新的配置。在再次启动网络服务器备份之前,请检查您无法从浏览器连接(以确保您正在连接到您认为正在连接的服务器)并且该过程已使用以下命令关闭:

ps -ef | grep httpd

然后终于开始了。

要检查的另一件事是您正在安装的证书是您认为的证书,使用此 openssl 命令打印出证书详细信息(假设证书为 x509 格式,但其他格式也有类似的命令):

openssl x509 -in domain.cer -text

最后但并非最不重要的一点是检查 Apache 日志文件以查看其中是否有任何错误。虽然预计这意味着没有加载证书,而不仅仅是旧证书。

【讨论】:

  • 针对此问题的出色故障排除建议。对我来说,本地浏览器正在缓存旧证书:P
【解决方案2】:

@Barry 的回答很好。

另一个方面是 apache 不是最前端的 Web 服务器。来自this 对话。 apache前面可能还有其他的web服务器。 类似的东西 - nginx。在我们的例子中,它是 AWS ELB。我们必须更改 ELB 中的证书才能更改。

【讨论】:

    【解决方案3】:

    我们遇到了与上面@Akshay 所说的类似的问题。

    为了让服务器更新证书,我们必须为 Google Cloud Compute Engine 负载均衡器运行一些命令:

    gcloud compute target-https-proxies update
    

    希望这对使用 GCP 托管 apache 的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-05-15
      • 2019-07-31
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 2018-10-12
      相关资源
      最近更新 更多