如何为 NGINX 配置选择正确的密码

2024-01-13

我是新来的nginx我最近决定更改配置文件以将我的应用程序重定向http to https使用 return 语句return 301 https://$host$request_uri;。这一切都工作正常,直到我注意到我们没有通过以下方式收到短信Twilio API。我决定调试这个问题,发现我收到了SSL/TLS Handshake Error.

查看调试器,我发现他们将此作为问题的可能原因:

Incompatible cipher suites in use by the client and the server. This would require the client to use (or enable) a cipher suite that is supported by the server.

看着nginx在查看配置文件时,我注意到没有使用密码,这可能是问题的根源,而不是因为未启用 TLS 查看下面的配置:

server {
        listen      443 ssl http2 default_server;
        listen      [::]:443 ssl http2 default_server;
        server_name     localhost;

        ssl_certificate "/etc/nginx/ssl/domain-crt.txt";
        ssl_certificate_key "/etc/nginx/ssl/domain-key.txt";
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

        ## More configuration below this...
    }

Twilio有一个支持的密码列表,可以找到here https://support.twilio.com/hc/en-us/articles/360002288554-TwiML-Request-and-Status-Callback-URL-supported-ciphers,但我不确定如何在我的配置文件中执行此操作。我是否应该使用所有这些,因为我的协议包括TLSv1, TLSv1.1, and TLS1.2?或者我只使用列表中的其中之一。我真的很困惑我需要在我的ssl_ciphers多变的。

我还读到有SSLv3启用于ssl_protocols这是一个坏主意。我可以将其从ssl_protocols并保存配置而不引起重大问题?

如果有人能帮我回答这些问题,那将非常有帮助。谢谢你!


默认情况下使用密码,Nginx 按版本配置它。

在版本 1.0.5 及更高版本中,默认 SSL 密码为 高:!aNULL:!MD5。在版本 0.7.65 和 0.8.20 及更高版本中,默认 SSL 密码为 HIGH:!ADH:!MD5。从版本 0.8.19 开始默认 SSL 密码为 ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM。从0.7.64版本开始, 0.8.18 及更早版本中,默认 SSL 密码为 ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP。 看Nginx 文档 https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/了解更多信息。

但您也可以明确选择您想要允许使用的密码: ssl_ciphers“密码1密码2...密码N”; 例如 - ssl_ciphers“ECDHE-RSA-AES128-GCM-SHA256”;仅支持此特定密码套件。 关于:

我还了解到,在 ssl_protocols 中启用 SSLv3 是一个坏主意。 我可以从 ssl_protocols 中删除它并保存配置吗 不会造成重大问题?

它可能导致的唯一主要问题是,尝试连接您的服务器的使用 SSLv3 的客户端将被拒绝,因为您的服务器不接受它(配置文件不支持)。无论如何,在某些版本中它是 Nginx 默认的,不应该是问题。

来自 Nginx 文档:

从版本 0.7.65 和 0.8.19 及更高版本开始,默认 SSL 协议 是 SSLv3、TLSv1、TLSv1.1 和 TLSv1.2(如果 OpenSSL 支持) 图书馆)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 NGINX 配置选择正确的密码 的相关文章

随机推荐