在SSL握手期间,当在客户端中启用SNI扩展时,服务器不会选择并将所需的证书呈现给客户端 .
我有一个证书链,我已经导入到服务器上的JVM密钥库 .
由内部中间发布CA颁发的服务器证书 .
主题:CN = myserver.example.com
内部根CA颁发的中间证书 .
X509v3 Key Usage:
Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
自签名根CA证书 .
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
我用“openssl s_client”来测试 .
我使用以下命令测试服务器名称指示(SNI)TLS扩展 disabled ,并且服务器在SSL握手中选择并呈现密钥库中的证书链 . 这就是我的预期 .
openssl s_client -connect myserver.example.com:port
我使用以下命令测试服务器名称指示(SNI)TLS扩展 enabled ,并且服务器在SSL握手中选择并显示了另一个(默认?)证书 . 此证书不在密钥库中 . 我没想到这一点 .
openssl s_client -connect myserver.example.com:port -servername myserver.example.com
我试图弄清楚为什么服务器没有选择我在密钥库中的证书链,而是在启用SNI扩展时选择“其他”(默认?)证书 . 任何帮助,将不胜感激 .
我不知道在SSL握手过程中证书选择如何在服务器上运行 .