Nginx配置SSL安全证书
记录一份我理解并操作过的Nginx对于使用SSL安全证书的配置。参考过文章:https://help.aliyun.com/document_detail/98728.html?spm=5176.b657008.help.dexternal.f85a56a7KtWCVg。
- 配置前,确定下文件有没有准备好,一份SSL证书、一份对应的私钥KEY文件、一台nginx服务,确定都准备好了,便可以开始配置。
- 先将nginx的配置文件备份,再打开nginx服务的配置文件,一般都是nginx.conf。可以直接执行:nginx -t;来获取nginx的配置文件目录,如图:
- 在配置文件中代码片段 http{}中找到 server{}代码段,在server中配置以下参数:
listen 端口 ssl; #监听的端口,nginx 1.15.0及以上版本,使用listen 443 ssl代替,1.15.0以下的使用listen 443 server_name 域名地址; #需要证书验证的域名。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";#开启HSTS,通知浏览器使用https访问。该配置在第一次访问或缓存被清除时有被劫持风险 rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。该配置有被劫持风险 ssl on; #打开ssl支持,nginx 1.15.0以下的需要配置该参数。 ssl_certificate cert-file-name.crt; #指定crt文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。 ssl_certificate_key cert-file-name.key; #指定私钥文件key所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。 ssl_session_timeout 5m; # 请求超时时长 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL协议 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#配置ssl加密算法,多个算法用:分隔,ALL表示全部算法,!表示不启用该算法,+表示将该算法排到最后面去。 ssl_prefer_server_ciphers on; #如果不指定默认为off,当为on时,在使用SSLv3和TLS协议时,服务器加密算法将优于客户端加密算法。 ssl_verify_client on;#打开客户端验证支持,可选配置,客户端不验证可不配 ssl_client_certificate ca.crt; #配置客户端验证服务器所需的根证书公钥文件所在位置,可选配置,客户端不验证可不配
4. 配置完成后,nginx -t;测试配置文件是否正确,再使用命令:nginx -s reload; 加载nginx的配置文件并重启
5. 在浏览器中输入:https://域名地址,验证SSL是否配置成功