我目前有一个运行 Ubuntu Linux 和 Apache 2.0 的网站,该网站使用 GoDaddy 颁发的 SSL 证书。由于我对 GoDaddy 总体印象不佳,我决定从其他供应商处获取 SSL 证书,但在尝试更改 Apache 配置以使用新证书时遇到了问题。
我的原始 Apache 配置的 SSL 设置如下:
SSLEngine on
SSLProtocol all
SSLCertificateFile /etc/apache2/ssl/store.fatcatsoftware.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/fatcatstore.key
SSLCertificateChainFile /etc/apache2/ssl/gd_intermediate_bundle.crt
SSLProxyEngine on
我安装了新的 SSL 证书并将 Apache 更改为以下内容:
SSLEngine on
SSLProtocol all
SSLCertificateFile /etc/apache2/ssl_geotrust/store.fatcatsoftware.com.crt
SSLCertificateKeyFile /etc/apache2/ssl_geotrust/store.fatcatsoftware.com.key
SSLProxyEngine on
我反复检查了所有路径,它们都是正确的。但是,当我重新启动 Apache 并尝试加载网站时,Web 浏览器显示一条错误消息,指出证书由未知机构签名。但真正奇怪的是,它还说证书是由 GoDaddy 颁发的,所以 Apache 似乎根本没有使用新证书,尽管配置文件指向了它。我甚至使用 仔细检查了证书文件openssl x509 -noout -text -in server.crt
,它验证了该路径上的证书确实是新安装的证书。
作为进一步的测试,我尝试使用相同的证书/密钥文件并将它们安装在运行 OS X 的自己的机器上。我像在实际服务器上一样设置了 Apache 配置文件,并编辑了 /etc/hosts,以便输入我的域名会重定向到 localhost,以避免在加载网站时出现域名不匹配的情况。当我尝试该设置时,一切都运行正常!因此,这肯定不是证书本身的问题。
这两种设置之间的主要区别在于:a) OS X 机器上安装的是 Apache 2.2 而不是 2.0;b) 在网站上,Apache 充当在后台运行 Rails 应用程序的 mongrel 集群的代理,而我的 OS X 机器上没有设置任何此类设置。我查看了所有能找到的 mongrel/Rails 设置,但没有发现任何与 SSL 相关的东西。据我所知,只有 Apache 负责处理 SSL 部分。
这时我完全不知所措了。我唯一能想到的就是在某个地方的某个级别缓存了一些东西,但我找不到它。我甚至尝试关闭 Apache 中的 SSLSessionCache,但没有任何效果。有人有什么新东西可以尝试吗?
答案1
再三检查配置文件中是否有其他仍在使用旧证书的虚拟主机。特别检查各种包含目录 (/etc/apache.d),您可能已在其中配置了虚拟主机但又忘记了它。
答案2
另外,请再三检查,确保您没有在某个地方有另一个 httpd.conf 文件,而该文件是 apache 真正查看的文件,特别是如果您不是最初设置系统的人。