我已成功在传输模式下在两个(虚拟)主机之间建立了 IPsec 连接,现在我希望服务器使用 OCSP 验证客户端的证书。在第三台主机中,我运行了 OCSP 响应器 ( openssl ocsp -port 80 ...
)。我可以看到服务器如何能够到达 OCSP、发送查询并得到答复,但最终验证失败。
以下是服务器(IPsec 响应器)中的日志内容:
charon: 01[CFG] checking certificate status of "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=client@localhost"
charon: 01[CFG] requesting ocsp status from 'http://ocsp.localhost' ...
charon: 01[CFG] using trusted ca certificate "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=Tecnalia Root CA"
charon: 01[CFG] reached self-signed root ca with a path length of 0
charon: 01[CFG] using trusted certificate "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=ocsp.localhost"
charon: 01[CFG] using certificate "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=ocsp.localhost"
charon: 01[CFG] no issuer certificate found for "C=ES, ST=Gipuzkoa, L=Donostia-San Sebastian, O=Tecnalia, CN=ocsp.localhost"
charon: 01[CFG] ocsp response verification failed
charon: 01[CFG] ocsp check failed, fallback to crl
为了方便起见,我在所有主机中复制了相同的证书文件(输出修剪):
/etc/ipsec.d# ls -lR
./cacerts:
total 4
-rw-r--r-- 1 root root 1367 Nov 2 09:53 ca.cert.pem
./certs:
total 8
-rw-r--r-- 1 root root 1432 Nov 2 09:53 client.cert.pem
-rw-r--r-- 1 root root 1700 Nov 2 09:53 localhost.cert.pem
./crls:
total 0
./ocspcerts:
total 4
-rw-r--r-- 1 root root 1379 Nov 10 09:32 ocsp.cert.pem
这是一个非常简单的路径,其中 CA ( ca.cert.pem
) 签署所有证书 - 服务器证书 ( localhost.cert.pem
)、客户端证书 ( client.cert.pem
) 和 OCSP 响应器使用的证书 ( ocsp.cert.pem
)。
这是我在服务器上所拥有的ipsec.conf
:
ca strongswan-ca
cacert=ca.cert.pem
ocspuri=http://ocsp.localhost
auto=add
我认为一切都与那个令人讨厌的“未找到颁发者证书”错误有关,但到目前为止还不知道为什么会发生这种情况。如果我使用 openssl 查询 OCSP 响应器,它不会给出任何验证错误。
答案1
事实证明,
为了方便起见,我在所有主机上复制了相同的证书文件
和这个
如果我使用 openssl 查询 OCSP 响应器,它不会给出任何验证错误
是错误的。有一次我弄乱了我的密钥,OCSP 服务器上的 OCSP 证书/密钥与其他机器上的不同。所以@ecdsa 的评论完全正确。
我发布的配置一切正常,一旦我再次重新生成所有密钥和证书,一切都正常工作。