如何在 nginx 中将 ssl 密码添加到 ssl_ciphers

Posted

技术标签:

【中文标题】如何在 nginx 中将 ssl 密码添加到 ssl_ciphers【英文标题】:How to add ssl cipher to ssl_ciphers in nginx 【发布时间】:2017-11-08 02:15:56 【问题描述】:

我正在使用 Let's Encrypt 在我的服务器中安装免费的 TLS/SSL 证书。我按照Mozilla SSL Configuration Generator的建议配置了nginx,如下:

ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";

问题是我需要 Java 7 来与服务器通信,它不适用于上面的配置。

当我将我的网站提交给 ssllabs 时,我收到以下消息:

Java 7u25   Server sent fatal alert: handshake_failure

如果我只是在 nginx 配置中注释 ssl_ciphers 行,那么与 Java 7 的通信就会开始工作。

# After commenting the line below it works
# ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";

所以我从ssllabs 收到以下消息:

Java 7u25   RSA 2048 (SHA256)   TLS 1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

我不想让 ssl_ciphers 行被注释,因为 nginx 会使用它的默认配置,这不太安全。

我只想将密码 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 添加到 ssl_ciphers 列表中。

有可能吗?怎么做?

【问题讨论】:

【参考方案1】:

从OpenSSL's cipher list 或this nice table from testssl.sh,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 对应于ECDHE-RSA-AES128-SHA。因此,您可以将 ssl_ciphers 指令设置为

ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-SHA";

【讨论】:

以上是关于如何在 nginx 中将 ssl 密码添加到 ssl_ciphers的主要内容,如果未能解决你的问题,请参考以下文章

如何在Nginx中添加SSL证书以支持HTTPS协议访问

如何在Nginx中添加SSL证书以支持HTTPS协议访问

如何给网站添加SSL证书(免费)

在nginx中将爬虫过来的请求转到指定的后端服务

如何在 CloudFormation 模板中将预上传的 SSL 证书附加到 ELB?

nginx添加ssl模块