我使用的是官方 nginx:1.15.5 镜像,其设置如下:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256;
与某些密码的握手失败:
openssl s_client -cipher "$cipher" -connect $SERVER
测试 ECDHE-ECDSA-AES128-SHA256...NO(sslv3 警报握手失败)
我连接到 nginx 容器并检查:
openssl ciphers
并且上面提到的密码在输出之内。
我没有主意了,与配置nginx
和提供的某些密码的握手openssl
失败的原因可能是什么?
答案1
RSA 密码需要带有 RSA 公钥的证书,而 ECDSA 密码需要带有 ECC 公钥的证书。您可能只有带有 RSA 公钥的证书(这仍然是最常见的),因此只有 RSA 密码有效,而 ECDSA 密码无效。