面试题答案
一键面试- 主要配置文件:
通常需要修改Nginx的主配置文件,一般是
nginx.conf
,也可能在/etc/nginx/sites - available/
目录下的具体站点配置文件(通过软链接到/etc/nginx/sites - enabled/
目录生效)。 - 配置TLS版本的基础指令及其作用:
-
ssl_protocols:
- 作用:用于指定Nginx服务器支持的TLS协议版本。例如,要支持最新的TLS版本(截至2024年7月,为TLS 1.3),可以使用如下配置:
这将只允许客户端使用TLS 1.3协议与服务器进行通信。如果希望同时支持多个版本(如TLS 1.2和TLS 1.3),可以写成:ssl_protocols TLSv1.3;
这样就允许客户端根据自身能力选择使用TLS 1.2或TLS 1.3协议与服务器建立安全连接。较低版本(如SSLv2、SSLv3和TLSv1.0、TLSv1.1)由于存在安全风险,不建议开启。ssl_protocols TLSv1.2 TLSv1.3;
- 作用:用于指定Nginx服务器支持的TLS协议版本。例如,要支持最新的TLS版本(截至2024年7月,为TLS 1.3),可以使用如下配置:
-
ssl_ciphers:
- 作用:定义服务器支持的密码套件。密码套件是在TLS握手过程中,客户端和服务器协商用于加密通信的算法组合。为了配合TLS 1.3使用,建议使用一组经过优化的密码套件,例如:
这里ssl_ciphers HIGH:!aNULL:!MD5;
HIGH
表示使用高强度的密码套件,!aNULL
表示排除匿名认证的密码套件,!MD5
表示排除使用MD5摘要算法的密码套件,因为MD5存在安全弱点。对于TLS 1.3,Nginx会自动选择合适的密码套件,但这个指令在与旧版本TLS配合使用时仍很重要。
- 作用:定义服务器支持的密码套件。密码套件是在TLS握手过程中,客户端和服务器协商用于加密通信的算法组合。为了配合TLS 1.3使用,建议使用一组经过优化的密码套件,例如:
-
ssl_prefer_server_ciphers:
- 作用:当设置为
on
时,服务器在协商密码套件时优先使用自己的密码套件顺序。例如:
这样服务器在与客户端协商密码套件时,会按照ssl_prefer_server_ciphers on;
ssl_ciphers
指令定义的顺序来选择,而不是让客户端优先选择,有助于确保服务器使用更安全、更符合自身配置的密码套件。
- 作用:当设置为
-