我们希望使用open ssl使用双向证书身份验证。
当我们按如下方式打开s_server时,客户端可以连接到我的服务器:
openssl s_server -accept 12345 -cert our-cert.pem
(our-cert.pem是我们的证书。)
这很好用。但是,我的要求是:
我试过这个:
openssl s_server -accept 12345 -cert our-cert.pem -CApath /etc/ssl/certs/
这允许客户端连接。但我的问题是:
答案 0 :(得分:6)
对于服务器,您需要添加“-Verify”选项以强制客户端提供证书。深度是客户端证书链的最大长度。
那应该处理问题#1。
对于#2,我不确定是否有办法使用这些OpenSSL命令通过公共名称进行限制。
您可以在此处查看服务器/客户端命令的OpenSSL文档:
答案 1 :(得分:4)
要测试CA,请使用此选项:
/usr/local/ssl/bin/openssl s_server -accept 7569 -cert /opt/GCTI/cert/host1_cert.pem -CAfile /opt/GCTI/cert/ca_cert.pem -key /opt/GCTI/cert/host1_priv_key.pem
-cert is the public key file for this host
-key is the private key file for this host
-CAfile is the CA file, needed for self signed certificate
-port is the port number to open up
这将打开一个侦听端口7569,它将接受带有指定证书的TLS连接。
如果CA无效,那么最后一行将如下所示
Verify return code: 21 (unable to verify the first certificate)
要连接到此服务器,请进行完整的端到端测试(实际上不是问题)
openssl s_client -showcerts -connect host1:7569 -CAfile /opt/GCTI/cert/ca_cert.pem
将host1替换为您的实际主机。这将验证TLS服务是否有效并运行由同一CA签名的证书。