You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用brainpoolP384r1曲线EC证书时Nginx握手失败(SSL alert 40)的问题求助

使用brainpoolP384r1曲线EC证书时Nginx握手失败(SSL alert 40)的问题求助

我最近在尝试把内部PKI从RSA切换到EC(椭圆曲线)加密,生成了一套基于brainpoolP384r1曲线的测试密钥和证书。先用OpenSSL命令行工具测试时一切正常:

服务器端启动命令:

root@server:~# openssl s_server -key /etc/nginx/server.example.com.key.pem -cert cert.pem -accept 4430 -www -curves brainpoolP384r1

客户端连接命令:

user@client:~$ openssl s_client -connect server.example.com:4430 -curves brainpoolP384r1 -CAfile cacert.pem

两者能正常建立连接,证书验证也完全通过。但把这套密钥和证书放到Nginx里后,SSL握手直接失败,报错SSL alert number 40,对应SSL_ERROR_NO_CYPHER_OVERLAP,不管用s_client连接还是浏览器访问都是这个问题。

我的Nginx SSL配置如下:

# SSL stuff
ssl_certificate         /etc/nginx/server.example.com.bundle.crt;
ssl_certificate_key     /etc/nginx/server.example.com.key.pem;

# 不管加不加这个设置都没用
# ssl_ecdh_curve          brainpoolP384r1;

其中/etc/nginx/server.example.com.bundle.crt是通过cat cert.pem cacert.pem > /etc/nginx/server.example.com.bundle.crt生成的证书链。我知道ssl_ecdh_curve和证书里的曲线不是同一概念,但实在没找到Nginx里对应OpenSSL命令中-curves参数的配置项,所以抱着试试的心态加了,结果不管加不加都没用。

另外,如果把EC密钥和证书换成RSA的,Nginx就能正常工作,没有任何问题。

我是不是漏掉了什么关键配置?还是说Nginx目前对brainpoolP384r1这类EC证书的支持有问题?

备注:内容来源于stack exchange,提问作者Lars Hanke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:39:30