您现在的位置是:首页 >学无止境 >Nginx配置SSL相关记录网站首页学无止境
Nginx配置SSL相关记录
通常情况下,Nginx反向代理https配置中的证书应该与转发域名一致。也就是说,当用户在浏览器中访问转发到Nginx服务器的网站时,会收到与他们正在访问的域名匹配的证书。
例如,如果将www.example.com反向代理到由Nginx服务器托管的另一个主机,则应将为www.example.com生成证书,并将其用于Nginx反向代理中的SSL/TLS终止。
但是,在某些特殊情况下,您可能需要使用通配符或多个SAN(Subject Alternative Name)证书,以便在同一个Nginx服务器上反向代理多个域名。在这种情况下,您可以使用通配符证书或SAN证书,以覆盖所有涉及到的域名。
“Listen 443 ssl http2” 是 Apache Web 服务器的配置指令,主要有以下功能:
-
启用 HTTPS 协议:通过配置 Listen 443 指令,Apache 就会开始监听 443 端口,从而可以为客户端提供 HTTPS 安全访问服务。
-
SSL 加密:通过配置 ssl 关键字,Apache 就会对传输的数据进行加密处理,确保客户端与服务器之间的通信安全。
-
启用 HTTP/2 协议:通过配置 http2 关键字,Apache 就会启用 HTTP/2 协议,该协议相较于 HTTP/1.1 协议可以实现更快的页面加载速度、更低的延迟和更高效的资源利用率。
综上所述,“Listen 443 ssl http2” 配置指令的主要功能是为客户端提供安全的 HTTPS 访问服务,并启用 HTTP/2 协议以提高网站的性能和效率。
“ s e r v e r p o r t ! 443 " 是一个条件语句,通常用于 N g i n x 的配置文件中。其中, " server_port !~ 443" 是一个条件语句,通常用于 Nginx 的配置文件中。其中," serverport! 443"是一个条件语句,通常用于Nginx的配置文件中。其中,"server_port” 表示客户端请求的端口号,“!~” 符号表示不匹配,“443” 表示 HTTPS 默认监听的端口号。
因此,这个条件语句的意思是:如果客户端请求的端口号不是 443,那么执行后面的指令。这个条件语句通常用于一些需要对 HTTP 和 HTTPS 请求分别进行处理的场景,比如:
-
将 HTTP 请求重定向到 HTTPS:如果客户端请求的端口不是 HTTPS 的默认端口 443,就可以使用这个条件语句将请求重定向到 HTTPS 端口上。
-
限制特定端口的访问:如果服务器上有多个应用程序在不同的端口上运行,可以使用这个条件语句限制只允许特定端口的访问,从而提高服务器的安全性。
总之,“$server_port !~ 443” 条件语句的主要作用是判断客户端请求的端口是否为 HTTPS 的默认端口,从而实现不同的处理方式。
这两句的含义
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
这两行配置是用于 Nginx 配置 SSL 加密协议和密码套件的。这里简单介绍一下这两行配置的生成过程:
-
SSL 协议选择:首先要考虑选择哪些 SSL 协议来进行加密通讯。一般来说,推荐使用 TLSv1.2 和 TLSv1.3 这两个最新的 SSL/TLS 协议版本。
-
密码套件选择:在协议选择好后,需要再来选择合适的密码套件。这里可以根据应用场景和安全性要求来选择。一般来说,选用一个较为安全、具备一定兼容性的套件即可。
基于以上两点,就可以生成这两行配置了。其中,“ssl_protocols” 配置指定了 SSL 协议版本,“ssl_ciphers” 配置指定了密码套件。这两行配置的作用是保证 SSL 加密通讯的安全性和兼容性。
示例中的配置如下:
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
其中,“ssl_protocols” 配置选择了 TLSv1.1、TLSv1.2、TLSv1.3 这三个 SSL/TLS 协议版本;“ssl_ciphers” 配置选择了多种密码套件,包括 EECDH+CHACHA20、EECDH+AES128、RSA+AES128 等。这些密码套件都是在安全性和兼容性上做了一定的取舍和平衡,既能保证加密通讯的安全性,又不会影响到客户端的兼容性。
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security “max-age=31536000”;
这几句是 Nginx 配置 SSL 加密相关的配置指令,具体用途如下:
-
ssl_prefer_server_ciphers on:该指令表示在使用 SSL 加密时,优先使用服务器端提供的加密套件。默认情况下,客户端会优先选择自己支持的加密套件,这可能会导致使用较为弱的加密套件。开启该选项可以让服务器端优先选择强加密套件。
-
ssl_session_cache shared:SSL:10m:该指令表示启用 SSL 会话缓存,并指定缓存区的名称、大小及存储位置等信息。通过启用会话缓存,可以提高 SSL/TLS 握手的效率,减少握手所需的计算和通讯开销。
-
ssl_session_timeout 10m:该指令表示设置 SSL 会话的超时时间为 10 分钟。当客户端和服务器之间的连接空闲超过该时间后,会话将被关闭并从缓存中移除。通过适当设置超时时间,可以平衡会话缓存的容量和安全性需求。
-
add_header Strict-Transport-Security “max-age=31536000”:该指令表示为响应头添加了一个 Strict-Transport-Security(STS)头部,指定了网站必须使用 HTTPS 协议并且在浏览器中缓存这个设置的最大时限为 1 年。这个指令可以防止中间人攻击,确保网站只使用 HTTPS 加密连接。
综上所述,这几条指令的作用是为 Nginx 服务器配置 SSL/TLS 加密通讯相关的参数,包括选择加密套件、优化握手效率、缓存会话等方面,进一步提高了数据传输的安全性和效率。