我正在使用具有以下设置的官方 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
失败的原因可能是什么?
RSA 密码需要带有 RSA 公钥的证书,而 ECDSA 密码需要带有 ECC 公钥的证书。很可能您只有一个带有 RSA 公钥的证书(仍然是最常见的),因此只有 RSA 密码可以工作,而 ECDSA 密码不能工作。