我在docker上有nginx 1.25.3,不是Alpine版本。底层操作系统是Ubuntu 22。
当 TLS 1 协议配置如下时:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
TLSv1 不起作用。
如果在同一操作系统上使用 Openresty(最新版本),TLSv1 可以正常运行。
由此,我的猜测这不是操作系统的问题,而是docker本身的问题。
Openresty 使用OpenSSL 1.1.1
,以及最新的 Nginx 使用OpenSSL 3.0.9
。
在网上查找后,找到了几个解决办法:
A.编辑/etc/ssl/openssl.cnf
并添加:
[openssl_init]
providers = provider_sect
+ssl_conf = ssl_sect
+
+[ssl_sect]
+system_default = system_default_sect
+
+[system_default_sect]
+CipherString = DEFAULT@SECLEVEL=0
B. 将其添加ssl_ciphers DEFAULT@SECLEVEL=0;
到 nginx conf。
我尝试了这两种方法。我/etc/ssl/openssl.cnf
在 docker 内部和外部都进行了编辑,还尝试了 B 选项,但都没有用。
我在其他地方看到 Alpine 版本无法在 TLSv1 支持中编译,因此我从 Alpine 版本切换到常规版本nginx:1.25.3
,但仍然没有任何效果(包括我在其中和外部尝试上述操作之后)。
我该如何让它工作?是否有与此兼容的常规 Nginx 的特定版本?我需要做一些不同的事情才能让它工作吗?