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可以 ... 
随机推荐
- js清除所有的空格
			/** * 清除所有的空格 * @returns {*} */ String.prototype.removeSpace = function () { var str = this.replaceA ... 
- 一起玩转微服务(10)——spring boot介绍
			对于Spring,相信大家都非常熟悉,从出现开始,一直是企业级开发的主流.但是随着软件的发展和应用开发的不断演化,它的一些缺点也逐渐胡暴露了出来,下面,我们就一起看一下Spring的发展历程并且认识一 ... 
- JavaWeb网上图书商城完整项目--day02-6.ajax校验功能之页面实现
			1 .现在我们要在regist.js中实现ajax的功能,使用用户名到后台查询是否注册,邮箱是否到后台注册,验证码是否正确的功能 我们来看regist.js的代码 //该函数在html文档加载完成之后 ... 
- 10、一个action中处理多个方法的调用第一种方法动态调用
			我们新建一个用户的action package com.weiyuan.test; import com.opensymphony.xwork2.ActionSupport; /** * * 这里不用 ... 
- appium安装的permission deny处理方法-20200204
			npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs' 起因:原本安装node在C盘soft文件夹下,按node ... 
- Java常用的文档地址
			https://docs.oracle.com/en/ https://docs.oracle.com/en/java/javase/13/ specifications--->langua ... 
- 如何去除List集合中重复的元素
			1.通过循环进行删除 public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ... 
- .gitkeep文件
			git 默认不会对空文件夹进行追踪: 但某些项目某些文件夹对整体框架是必不可少的,就算是空也得有: 怎么办呢?在这个文件夹下添加一个[.gitkeep]文件,这样就可以同步该文件夹了. (完) 
- scrapy分布式抓取基本设置
			scrapy本身并不是一个为分布式爬取而设计的框架,但第三方库scrapy-redis为其扩展了分布式抓取的功能,在分布式爬虫框架中,需要使用某种通信机制协调各个爬虫工作 (1)当前的爬取任务,下载+ ... 
- 阿里云安全组规则授权对象设置为固定IP段访问
			阿里云的ESC建站需要在安全组放通一些端口才能正常访问,所以我们在开放端口的时候就直接设置了全部ip可访问,授权对象填入0.0.0.0/0,意味着允许全部ip访问或者禁止全部ip访问. 但是我们有了一 ... 
