Nginx HTTPS 配置
2016-10-08 15:21
246 查看
我一度以为只要可以通过https访问网站SSL就算配置完成了,但前几天网友反馈说移动设备下出现证书错误,我还以为是刚配置完缓存的原因,后来自己查了一些资料,发现虽然自己的网站可以通过https访问了,但还有一些参数没有配置,造成了一些旧设备上出现证书错误。
通过下面这个地址可以检测你的证书情况
https://www.ssllabs.com/ssltest/index.html
一开始我的检测结果C,分数也比较低,重新配置后,duang~ 达到了A+。
下面说下配置中的一些参数,和可能出现的错误。
一般来说在你证书签发后,如下配置就可以通过https访问了
如果这通过https访问长时间没有响应,检查下自己的443端口是否开启。
执行下列命令
然后在配置文件中加入
注意文件路径要和你的一致
SSLv3是有漏洞的,所以不应该启用这货,并启用启用向前保密。
the chain is incomplete
出现这个问题主要是crt里的证书不全,以comodo为例,需要使用3个证书,当你少添加的时候会出现这个问题。
Chain issues – Contains anchor
删掉第一个root证书即可
一定要注意证书的路径,不要直接复制使用。
一般来说,只需要开启HSTS 即可,如需强制则将80端口301到https
通过下面这个地址可以检测你的证书情况
https://www.ssllabs.com/ssltest/index.html
一开始我的检测结果C,分数也比较低,重新配置后,duang~ 达到了A+。
下面说下配置中的一些参数,和可能出现的错误。
启用ssl
一般来说在你证书签发后,如下配置就可以通过https访问了server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ... }
如果这通过https访问长时间没有响应,检查下自己的443端口是否开启。
dhparam
执行下列命令openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
然后在配置文件中加入
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
注意文件路径要和你的一致
ssl_protocols和ssl_ciphers
SSLv3是有漏洞的,所以不应该启用这货,并启用启用向前保密。ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
session resumption
ssl_session_cache shared:SSL:50m; ssl_session_timeout 5m;
ocsp stapling
resolver 8.8.8.8; ssl_stapling on; ssl_trusted_certificate /etc/nginx/ssl/example_com.crt;
HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
includeSubdomains为可选参数,如果你的子域名没证书,不要添加这个参数。
max-age为过期时间,不到设置的过短。
几个错误
the chain is incomplete出现这个问题主要是crt里的证书不全,以comodo为例,需要使用3个证书,当你少添加的时候会出现这个问题。
Chain issues – Contains anchor
删掉第一个root证书即可
完整HTTPS配置文件
一定要注意证书的路径,不要直接复制使用。server {
listen 443 ssl default deferred;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example_com.crt;
ssl_certificate_key /etc/nginx/ssl/example_com.key;
ssl_session_cache shared:SSL:50m; ssl_session_timeout 5m;ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
resolver 8.8.8.8; ssl_stapling on; ssl_trusted_certificate /etc/nginx/ssl/example_com.crt;add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
# ... the rest of your configuration
}
强制HTTPS
一般来说,只需要开启HSTS 即可,如需强制则将80端口301到httpsserver { listen 80; return 301 https://$host$request_uri; }
相关文章推荐
- Nginx下配置HTTPS(SSL)安全站点
- Nginx + https + 免费SSL证书配置指南
- nginx 配置https
- Windows下Tomcat+nginx配置证书实现登录页https访问
- nginx 学习笔记(9) 配置HTTPS服务器--转载
- Linux 下Nginx SSL/HTTPS 配置
- 阿里云Center OS 6.2 Nginx 配置 SSL/TLS HTTPS配置
- Nginx https加密以及nginx日志配置与管理 推荐
- Nginx + https + 免费SSL证书配置指南
- nginx 同一个IP上配置多个HTTPS主机
- nginx 配置https server
- nginx + php + https 配置用例
- nginx使用ssl模块配置HTTPS支持
- 用Nginx配置https加密站点 nginx学习之一Location,rewrite,防盗链,禁止访问
- Nginx下https配置
- Nginx 配置 SSL 证书 + HTTPS 站点小记
- Nginx 配置 SSL 证书 + HTTPS 站点
- Nginx + https + 免费SSL证书配置指南
- nginx 学习笔记(9) 配置HTTPS服务器--转载
- Nginx https加密以及nginx日志配置与管理