使用 openssl 与 Web 请求检查服务器证书

Checking server certificate with openssl versus a web request

使用安装了 GeoTrust 域证书的标准 MediaTemple 服务器设置,我从 openssl 和 Web 请求中得到不同的响应。

从站点检查器站点访问该站点,我得到了很好的响应,并看到了我的域证书和完整的 Geotrust 证书链。

使用时

openssl s_client -connect subdomain.domain.com:443 -showcerts -ssl3

我从我的本地机器上看到

Server certificate
subject=/C=US/ST=Virginia/L=Herndon/O=Parallels/OU=Parallels 
Panel/CN=Parallels Panel/emailAddress=info@parallels.com
issuer=/C=US/ST=Virginia/L=Herndon/O=Parallels/OU=Parallels Panel/CN=Parallels 
Panel/emailAddress=info@parallels.com

并验证 return 代码:18(自签名证书)

openssl version -d = OPENSSLDIR: "/etc/pki/tls"

这是一个 Centos 6.x 盒子。

apache httpd.conf 文件指向完全不同位置的证书和 CA 列表:/usr/local/psa/var/certificates/ 这对我来说似乎没问题。

openssl s_client 在哪里找到 Parallels 证书?它不在 /etc/pki/tls 中。有没有办法配置盒子,使 openssl 请求和 apache 使用相同的服务器证书?

提前致谢!

openssl s_client 在 SSL 握手期间从服务器获取证书。 OPENSSLDIR 只是存储 openssl 工具的任何(可选)配置的地方。

请注意,您获得的 openssl 证书可能与您在服务器上配置的不同,因为您需要像浏览器一样使用 SNI(服务器名称指示)。如果您在同一 IP 后有多个证书,则使用此功能。要将此功能与 openssl 一起使用,请添加 -servername hostname 参数并提供您期望的名称。您还必须删除 -ssl3 选项,因为这会限制与 SSL 3.0 的连接,这不仅不安全而且不支持 SNI。

事实证明,在 MediaTemple 服务器上,他们在两个位置维护证书。 apache 服务器在其 conf 文件中有一个 CA 文件的位置,该位置与 openssl 维护其 CA 文件的位置不同。

您可以在 conf 文件中找到 apache 位置,并使用

找到 openssl 位置
openssl version -d

在 MediaTemple 的 Web 管理页面中,您可以使用 plesk 将域证书作为 "server's" 证书安装到 openssl 位置。 apache 服务器应该已经在正确的位置具有证书和 CA 文件。 MediaTemple 自定义 apache 配置覆盖了标准 apache 设置,它将 apache 的证书位置设置为与 openssl 的相同。