我在 Red Hat 6.3 上运行 Apache 2.2.15,但无法使证书链正常工作。
我正在使用我的组织的 PKI 进行证书签名等,但不会将其根证书发布到互联网上。
因此,我使用指令SSLCertificateFile
、SSLCertificateKeyFile
和SSLCertificateChainFile
我使用 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 来连接它,如果链式连接不能正常工作,这将在安全模式下无法工作。