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可以 ...
随机推荐
- 谈谈spring-boot-starter-data-redis序列化
在上一篇中springboot 2.X 集成redis中提到了在spring-boot-starter-data-redis中使用JdkSerializationRedisSerializerl来实现 ...
- Wireshark论证TCP3次握手的过程
wireshark过滤条件:ip.addr == 120.79.36.180 千万别写成 ip.dst == 120.79.36.180 ,这样子就看不到服务器给我们返回的包了 此时,在浏览器输入12 ...
- 流媒体学习计划表——pr
参考教程 视频:b站oeasy 书籍:<adobe premiere pro cc 2018经典教程> 学习教训 一定要多做--实践是检验真理的唯一标准 书籍补充理论知识,视频讲究实操(理 ...
- PHP 多维数组转json对象
PHP 多维数组转json对象 php 数组转json对象,可能大家都知道要用json_encode,但是转换出来的格式多有不同,此处做个小小的记录! 1. 一维数组转json对象 <?php ...
- 如何下载 Ubuntu 镜像文件?
Ubuntu,是一款基于 Debian Linux 的以桌面应用为主的操作系统,内容涵盖文字处理.电子邮件.软件开发工具和 Web 服务等,可供用户免费下载.使用和分享. 但是对于国内的用户来说如果直 ...
- 入门大数据---Flume 简介及基本使用
一.Flume简介 Apache Flume 是一个分布式,高可用的数据收集系统.它可以从不同的数据源收集数据,经过聚合后发送到存储系统中,通常用于日志数据的收集.Flume 分为 NG 和 OG ( ...
- ajax前后端交互原理(2)
2.NPM使用 2.1.NPM是什么 NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,这里要搞清楚包的概念,通俗的说,包就是具有一定功能的工具(软件),本质 ...
- eclipse在debug模式下鼠标移动到变量上不显示值的问题
在eclipse中调试时,鼠标移动到变量上不显示值,使用ctrl+shift+i,或者通过配置达到目的: Window->Preferences->Java->Editor-> ...
- python数据结构-最全的六种排序
1.冒泡排序: 比较相邻的元素,如果第一个比第二个大,那就交换位置 让大的元素跟下一个相邻的元素作比较,如果大于交换位置 对所有元素重复以上步骤(除了最后一个),直到没有任何一个需要作对比 2.选择排 ...
- 从零创建发布属于自己的composer包
原文地址:https://www.wjcms.net/archives/从零创建发布属于自己的composer包 今天给大家讲解一下如何从零创建发布属于自己的composer包. composer包用 ...