我对 nginx
不太了解,最近决定更改配置文件,使用返回语句return 301 https://$host$request_uri;
将我的应用程序从http
重定向到https
。这一切都很顺利,直到我发现我们无法通过Twilio API
接收短信。我决定调试问题,并发现我收到了一个SSL/TLS握手错误
。
查看调试器后,我发现这可能是问题的原因:
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
有一份支持的密码列表,可以在这里找到,但我不确定如何在我的配置文件中实现。 我是否应该使用所有密码,因为我的协议包括TLSv1、TLSv1.1 和 TLS1.2
?还是仅使用该列表中的其中一个?我真的很困惑,不知道我需要在我的ssl_ciphers
变量中设置什么。
另外,我看到启用SSLv3
在ssl_protocols
中是不明智的。我可以将其从ssl_protocols
中删除,并保存配置文件而不会造成重大问题吗?
如果有人能帮我回答这些问题,那将非常有帮助。谢谢!
HIGH:!aNULL:!MD5:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
。或者我不能以那种方式包含多个密码吗?抱歉问了这么多问题,我只是想确保我做得对。 - Michaelopenssl ciphers -V
- BarT