首先,我知道有很多相关的问题,但似乎大部分是由于服务器上缺less颁发者证书。
我一直在遵循本指南来启用SSL的客户端身份validation,但我坚持让Apache接受客户端证书。 经过仔细检查,Apache日志中充满了Certificate Verification: Error (20): unable to get local issuer certificate消息。
我正在使用CA授予我的证书和我的私钥作为CA.
为了进一步诊断问题,我运行openssl verify -CAfile ca.cert client_signed.crt并得到相同的错误。
我决定重做所有步骤。 但是,从命令行执行所有操作仍会返回相同的错误
$ openssl x509 -req -days 360 -in client.csr -CA ca.cert -CAkey ca.key -CAcreateserial -out client_signed.crt Signature ok subject= ... Getting CA Private Key Enter pass phrase for server.key: [I type in the password and press ENTER] $ openssl verify -CAfile ca.cert client_signed.crt [ .. ] error 20 at 0 depth lookup:unable to get local issuer certificate $ ls ca.cert ca.cert
为了全面诊断问题,我决定生成并自签名证书作为CA用于签署客户端证书。 令我惊讶的是, 这工作完美无瑕 。 这实际上是我已经链接的教程的第一步。
显然,这个问题与我的证书有关。 我怀疑必须有一些与信任链有关的东西,因为我没有签署我自己的证书的证书的证书。 我试图从他们的网站下载他们,但我甚至无法validation我自己的证书。
$ ls /path/to/downloaded/files/ acrn.cer ancca.crt CorreoUruguayoCA.crt CorreoUruguayoRootCA.crt $ openssl verify -CApath /path/to/downloaded/files/ my.cert error 20 at 0 depth lookup:unable to get local issuer certificate
任何帮助将不胜感激。
编辑:使用Ubuntu上的“查看文件”实用工具表明我的证书Verified by: Correo Uruguayo - CA 。 我不知道为什么openssl没有validation它。