配置 Apache 以提供正确的证书链

配置 Apache 以提供正确的证书链

我在 Red Hat 6.3 上运行 Apache 2.2.15,但无法使证书链正常工作。

我正在使用我的组织的 PKI 进行证书签名等,但不会将其根证书发布到互联网上。

因此,我使用指令SSLCertificateFileSSLCertificateKeyFileSSLCertificateChainFile

我使用 openssl genrsa 创建了 2048 位 RSA 密钥,然后使用 openssl 从该密钥创建请求,并使用我们的 Windows 2008 R2 CA 对其进行签名。

我用 SSLCertificateFile 指向这个签名的证书文件。

我遇到的问题与链文件有关。

我有 PEM 格式的根证书、中间证书和服务器证书,并尝试了这些证书的各种组合(连接文本文件)来创建链文件,例如

root
inter
server

server
inter
root

inter
root

root
inter

这些都不起作用

为了测试这一点,我执行以下操作:

openssl s_client -connect myserver.com:443 -CAfile root.cer

我收到的错误是验证返回代码:21(无法验证第一个证书)

然而,奇怪的是当我在服务器上运行以下命令时:

openssl s_client -connect 127.0.0.1:443 -CAfile root.cer

它运行正常,我得到了一个“0”返回代码,并且可以在输出的顶部看到证书链。

那么发生了什么?

如果没有链文件,我会在网络浏览器中看到挂锁图标,但我需要在单独的脚本中使用 curl 来连接它,如果链式连接不能正常工作,这将在安全模式下无法工作。

相关内容