016.Nginx HTTPS
一 HTTPS概述
1.1 HTTPS介绍
1.2 SSL介绍
- 仅客户端验证服务器的证书,客户端自己不提供证书;
- 客户端和服务器都互相验证对方的证书。
二 自签名证书
2.1 自签名证书
2.2 openssl创建证书
1 [root@nginx01 ~]# openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=Xianghy/OU=Web Security/CN=tls.linuxds.com"
三 免费证书申请
3.1 腾讯云申请
3.2 其他申请
四 配置SSL
4.1 配置语法
1 server {
2 listen 443 ssl; #SSL 访问端口号为 443
3 server_name www.xxx.com; #填写绑定证书的域名
4 ssl_certificate tls.crt; #证书文件
5 ssl_certificate_key tls.key; #私钥文件
6 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照以下协议配置
7 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #配置加密套件
8 ssl_prefer_server_ciphers on; #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码;
9 ssl_session_timeout 5m; #会话过期时间;
10 ssl_session_cache shared:SSL:1m; #储存SSL会话的缓存类型和大小;
11 location / {
12 root /web/www/website/dist; #定义首页索引文件的名称
13 index index.html;
14 }
4.2 配置示例
1 [root@nginx01 ~]# mkdir /usr/share/nginx/tls/
2 [root@nginx01 ~]# echo '<h1>WebTLS</h1>' > /usr/share/nginx/tls/index.html
4.3 配置虚拟主机
1 [root@nginx01 ~]# mkdir -p /etc/nginx/tls
2 [root@nginx01 ~]# ll /etc/nginx/tls/
3 total 8.0K
4 -rw-r--r-- 1 root root 3.7K Jul 5 22:07 linuxds.crt
5 -rw-r--r-- 1 root root 1.7K Jul 5 22:07 linuxds.key
1 [root@nginx01 ~]# vi /etc/nginx/conf.d/tls.conf
2 server {
3 listen 443 ssl;
4 server_name tls.linuxds.com;
5 root /usr/share/nginx/tls/;
6 access_log /var/log/nginx/tls.access.log main;
7 error_log /var/log/nginx/tls.error.log warn;
8 ssl_certificate /etc/nginx/tls/linuxds.crt;
9 ssl_certificate_key /etc/nginx/tls/linuxds.key;
10 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
11 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
12 ssl_prefer_server_ciphers on;
13 ssl_session_timeout 5m;
14 ssl_session_cache shared:SSL:1m;
15 location / {
16 index index.html index.htm;
17 }
18 }
19 server
20 {
21 listen 80;
22 server_name tls.linuxds.com;
23 rewrite ^(.*) https://$host$1 permanent;
24 }
1 server {
2 listen 80;
3 server_name tls.linuxds.com; #填写绑定证书的域名
4 return 301 https://$host$request_uri; #把http的域名请求转成https
5 }
1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件
2 [root@nginx01 ~]# nginx -s reload #重载配置文件
4.4 确认验证

五 HTTPS其他优化
5.1 优化CPU消耗
- 激活 keepalive 长连接,一个连接发送更多个请求;
- 复用 SSL 会话参数,在并行并发的连接数中避免进行多次 SSL【握手】。
1 server
2 {
3 ……
4 ssl_session_timeout 10m; #配置会话超时时间
5 ssl_session_cache shared:SSL:10m; #配置共享会话缓存大小,视站点访问情况设定
6 keepalive_timeout 70; #设置长连接
7 ……
8 }
5.2 使用HSTS优化安全性
1 server
2 {
3 ……
4 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
5 ……
6 }
5.3 提升算法优化安全性
- 生产dhparam.pem文件
1 [root@nginx01 ~]# cd /etc/nginx/tls
2 [root@nginx01 tls]# openssl dhparam -out dhparam.pem 2048
- 配置Nginx采用的算法
1 [root@nginx01 tls~]# server
2 {
3 ……
4 ssl_prefer_server_ciphers on; #优先采取服务器算法
5 ssl_dhparam /etc/nginx/tls/dhparam.pem; #使用DH文件
6 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
7 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; #定义算法
8 ……
9 }
5.4 其他安全优化
1 {
2 ……
3 add_header X-Frame-Options DENY; #减少点击劫持
4 add_header X-Content-Type-Options nosniff; #禁止服务器自动解析资源类型
5 add_header X-Xss-Protection 1; #防止XSS攻击
6 ……
7 }
5.5 优化总结示例
1 [root@nginx01 tls]# vi /etc/nginx/conf.d/tls.conf
2 server {
3 listen 443 ssl;
4 server_name tls.linuxds.com;
5 root /usr/share/nginx/tls/;
6 access_log /var/log/nginx/tls.access.log main;
7 error_log /var/log/nginx/tls.error.log warn;
8 ssl_certificate /etc/nginx/tls/linuxds.crt;
9 ssl_certificate_key /etc/nginx/tls/linuxds.key;
10 ssl_session_timeout 10m; #配置会话超时时间
11 ssl_session_cache shared:SSL:10m; #配置共享会话缓存大小
12 keepalive_timeout 70; #配置长连接
13 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; #HSTS策略
14 add_header X-Frame-Options DENY; #减少点击劫持
15 add_header X-Content-Type-Options nosniff; #禁止服务器自动解析资源类型
16 add_header X-Xss-Protection 1; #防止XSS攻击
17 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
18 ssl_prefer_server_ciphers on; #优先采取服务器算法
19 ssl_dhparam /etc/nginx/tls/dhparam.pem; #使用DH文件
20 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; #定义算法
21 location / {
22 index index.html index.htm;
23 }
24 }
25 server
26 {
27 listen 80;
28 server_name tls.linuxds.com;
29 rewrite ^(.*) https://$host$1 permanent;
30 }

016.Nginx HTTPS的更多相关文章
- linux:Nginx+https双向验证(数字安全证书)
本文由邓亚运提供 Nginx+https双向验证 说明: 要想实现nginx的https,nginx必须启用http_ssl模块:在编译时加上--with-http_ssl_module参数就ok.另 ...
- 为苹果ATS和微信小程序搭建 Nginx + HTTPS 服务
昨天测试开发微信小程序,才发现微信也要求用HTTPS加密数据,想来是由于之前苹果的ATS审核政策的缘故吧,微信想在苹果上开放小程序必然也只能要求开发者必须使用HTTPS了,于是在服务器上测试安装Ngi ...
- 在阿里云 ECS 搭建 nginx https nodejs 环境(三、nodejs)
在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 第一步 指定版本源 执行 ...
- 在阿里云 ECS 搭建 nginx https nodejs 环境(二、https)
在阿里云 ECS 搭建 nginx https nodejs 环境(二) 这次主要内容是 如何在 ubuntu 的nginx 下配置 二级域名. 一. 域名解析 首先你需要去到你的 域名服务商那边 进 ...
- Nginx Https配置不带www跳转www
把 morethink.cn和www.morethink.cn合并到一个server上去,使用301永久重定向. 然后将 https://morethink.cn 转到 https://www.mor ...
- nginx https 配置样例
站点nginx https 配置模板 第一章 nginx 支持https 配置样例 其他 相关链接地址 第一章 nginx 支持https 配置样例 说明:https 段配置参数说明 Server 段 ...
- nginx https ssl 设置受信任证书[转然哥]
nginx https ssl 设置受信任证书[原创] 1. 安装nginx 支持ssl模块 http://nginx.org/en/docs/configure.html yum -y instal ...
- Nginx httpS server配置
Nginx httpS 配置 配置同时支持http和httpS协议: server { listen ; #backlog:每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包 ...
- Nginx https加密以及nginx日志配置与管理
Nginx https加密以及nginx日志配置与管理 使用Nginx的优点Nginx作为WEB服务器,Nginx处理静态文件.索引文件.自动索引的效率非常高.Nginx作为代理服务器,Nginx可以 ...
随机推荐
- 前端笔记:div只显示两行内容,多出内容以...显示
代码: text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-bo ...
- 【DMCP】2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks-论文阅读
DMCP 2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks Shaopeng Guo(sensetime ...
- 使用word2016发有代码高亮的博客
复制使用notepad++,eclipse这类有高亮的编辑器编写的代码到word中是默认有高亮的. 测试有没有代码高亮(eclipse代码): package p_day1; public class ...
- python list遍历方法汇总
list=['a','b','c','d','e'] #方法1: print('#方法1:') #i值为列表的item,list为列表名,因此i值即为列表元素 for i in list: #list ...
- PHP时间处理汇总
PHP时间处理汇总 1.求上个月的开始时间和结束时间 <?php header('Content-Type: text/html; charset=utf-8'); // 上个月的开始时间 $b ...
- postman使用小结(一)
postman可以用来做接口测试. 下面是使用的基本步骤: 1新建http请求: 2设置请求类型get/post/put/delete...: 3设置请求的url: 4设置请求的Header头部信息, ...
- Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil
在使用Java API操作HBase时抛出如下异常: Illegal reflective access by org.apache.hadoop.security.authentication.ut ...
- 洛谷 P1025 【数的划分】
进入正题 思路:递归 这道题有点像放苹果: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 转化一下就有: 把n个苹果放在k个 ...
- RSS阅读器推荐
http://www.feeddemon.com/ Windows,Free (完)
- 主存到Cache直接映射、全相联映射和组相联映射
转自:https://blog.csdn.net/dongyanxia1000/article/details/53392315 ---- Cache的容量很小,它保存的内容只是主存内容的一个子集,且 ...