最近,我的其中一台机器被置于代理之后,这意味着我正在运行的一些程序无法再运行。
当我尝试执行“openssl s_client -showcerts -connect remoteserver:remoteport”时,它会向我显示一个可爱的“验证返回代码:20(无法获取本地颁发者证书)”,我认为这是因为中间(代理)证书无法被识别。
如果我的假设是正确的,我相信我必须安装代理的根证书才能使我的程序再次工作。
我得到了一个 .cer 文件,我将其转换为 pem 文件,如下所示:
openssl x509 -inform der -in certificate.cer -out certificate.pem
然后我继续获取 pem 的哈希值(如此处建议https://stackoverflow.com/questions/12041512/openssl-unable-to-get-local-issuer-certificate-unless-cafile-is-explicitly-speci):
openssl x509 -issuer_hash -noout -in certificate.pem
这给了我一个字符串(例如:a8a87a6a)。
然后我去复制 pem 文件,将其重命名为 a8a87a6a 到 /etc/pki/tls/certs 但是即使使用“-CApath /etc/pki/tls/certs/”运行时,我仍然得到相同的“验证返回代码:20(无法获取本地颁发者证书)”。
我还尝试将文件重命名为扩展名 .pem .crt .cer,但无济于事。
对此我很沮丧,我怎样才能使该证书被认可为合法并让我的东西再次正常工作?
答案1
在 CentOS 5 中,受信任的证书位于 /etc/pki/tls/certs/ca-bundle.crt。只需将您的新受信任证书附加到此文件即可。
这是关于如何添加新证书的问题的答案。但这可能无法解决您的问题。您的代理证书(CN 名称)很可能与您的服务 CN 不匹配。