具有 EC 证书的 NGINX

具有 EC 证书的 NGINX

我尝试将内部 PKI 从 RSA 转移到 EC。因此,我使用曲线生成了一个测试密钥和证书brainpoolP384r1。证书总体上似乎没问题,因为以下操作按预期工作:

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 alert number 40,这映射到SSL_ERROR_NO_CYPHER_OVERLAP使用s_client或浏览器。这是 的 SSL 配置nginx

# SSL stuff
ssl_certificate         /etc/nginx/server.example.com.bundle.crt;
ssl_certificate_key     /etc/nginx/server.example.com.key.pem;
# doesn't work with or without that setting
# ssl_ecdh_curve          brainpoolP384r1;

并且/etc/nginx/server.example.com.bundle.crtcat cert.pem cacert.pem > /etc/nginx/server.example.com.bundle.crt。我知道这与证书中的曲线不太一样,但我还是拼命尝试了一下,因为我在配置中ssl_ecdh_curve找不到 的等价物。然而,无论有没有设置,它都不起作用。-curvesnginxssl_ecdh_curve

如果我用 RSA 替换密钥和证书,一切都正常。

我猜我遗漏了一些东西或者nginx还没有准备好 EC 证书?

答案1

有一个帖子这里很好地涵盖了该主题

设置是 ssl_ecdh_curve secp384r1:prime256v1;

相关内容