Nginx 下部署 HTTPS 与安全调优
什么是 HTTPS?#
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
更多基本介绍请查阅:
需要弄清楚的几个问题:
- HTTPS 和 SSL 的关系与基本技术实现;
- SSL 证书的类型;
- 什么是证书颁发机构, 为什么会存在;
- 证书认证等级, DV, OV 和 EV 各自的意思;
- 什么是
泛域名 SSL 证书 (Wildcard Domain SSL Certificates)
操作步骤#
一个大概流程如下:
- 购买前准备 - 服务器生成 csr 和 key 文件;
- 购买证书 - 利用上面生成的 csr 文件去购买证书;
- 购买成功后的证书有两个, 一个是域名证书, 一个是链证书, 把他们俩按照顺序合并为 crt 文件;
- Nginx 下配置 key 和 crt 文件, 并做安全调优.
购买证书前的准备#
1. 生成证书 CSR 和 KEY#
mkdir -p /etc/nginx/ssl/phphub
cd /etc/nginx/ssl/phphub
2. 生成 orig 文件#
openssl genrsa -out phphub.orig 2048
3. 生成 csr 文件#
运行
openssl req -new -key phphub.orig -out phphub.csr
输出, 需要填写内容:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BeiJing
Locality Name (eg, city) []:BeiJing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:The EST Group
Organizational Unit Name (eg, section) []:Dev
Common Name (e.g. server FQDN or YOUR name) []:*.phphub.org // ----------注意这个地方要认真填写
Email Address []: emailaddress @ gmail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ----------注意不填写----------
An optional company name []: ----------注意不填写----------
4. 生成 private key 文件#
openssl rsa -in phphub.orig -out phphub.key
至此文件夹里面有 三个文件:
root@localhost:/etc/nginx/ssl/phphub# tree
.
├── ikbcity.csr
├── phphub.key
└── phphub.orig
购买证书#
购买细节这里省去, 需要注意的是要认准比较权威的认证机构购买...
购买成功后会给你发两个证书 server.crt 和 server.intermediate.crt, 生成最终的 server.chained.crt
cat server.crt server.intermediate.crt > phphub.crt
此文件就可以和上面生成的 key 文件一起用来配置 nginx 了:
ssl_certificate /etc/nginx/ssl/phphub/phphub.crt;
ssl_certificate_key /etc/nginx/ssl/phphub/phphub.key;
配置安全的 Ngxin#
链接:
- Best nginx configuration for security
- Nginx config on Gits
- Top 20 Nginx WebServer Best Security Practices
- SSL Server Test -- 安全测试工具
强制使用 HTTPS#
server {
listen 80;
listen 443 ssl;
server_name example.com;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
....
}
去除 Nginx 的 X-Powered-By
header#
fastcgi_hide_header X-Powered-By;
去除 nginx 版本#
server_tokens off;
不允许被 iframe 加载#
add_header X-Frame-Options SAMEORIGIN;
其他参照此 Gits: Nginx config on Gits
静态内容#
一般都会出现 cdn 服务器无法访问 https 源服务器的问题, 可以使用专门的域名 static.phphub.org
来解决, 此域名专门用来输送静态内容:
server {
listen 80;
server_name static.phphub.org;
root /var/www/phphub/public;
location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires 7d;
}
location / {
deny all;
}
}
结语#
可以利用 SSL Server Test -- 安全测试工具 去测试下你的 HTTPS 是否够安全.
Nginx 下部署 HTTPS 与安全调优的更多相关文章
- Tomcat+Nginx+Lvs部署方案与性能调优
立项要求:用户登录并发数达到1000vuser.原项目设计没有Nginx和LVS,经过性能测试并发数最高到400,就报响应超时,且系统资源消耗严重.经过和架构师商议决定先加入Nginx解决负载均衡处理 ...
- nginx+keepalived+tomcat之tomcat性能调优
body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...
- Nginx上部署HTTPS
Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev,且ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/, ...
- Nginx上部署HTTPS + HTTP2
Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so ...
- Nginx下部署Laravel项目
Nginx下部署Laravel项目 标签(空格分隔): php Nginx配置文件 listen 80 default_server; #listen [::]:80 default_server i ...
- 有了SSL证书,如何在IIS环境下部署https?【转载】
昨天各位小伙伴都很开心的领取了自己的SSL证书,但是大部分小伙伴却不知道如何部署,也许是因为第一次接触SSL这种高端的东西吧,不过个人觉得就是懒懒懒...本来小编也挺懒的,但是答应了各位小伙伴的,那么 ...
- 有了SSL证书,如何在IIS环境下部署https?
昨天各位小伙伴都很开心的领取了自己的SSL证书,但是大部分小伙伴却不知道如何部署,也许是因为第一次接触SSL这种高端的东西吧,不过个人觉得就是懒懒懒...本来小编也挺懒的,但是答应了各位小伙伴的,那么 ...
- Nginx下的https配置
https: https(Secure Hypertext Transfer Protocol) 安全超文本传输协议 它是以安全为目标的http通道,即它是http的安全版.它使用安全套接字层(SSL ...
- Tomcat 部署安装及JVM调优~
Tomcat 部署Tomcat环境 环境准备 linux: CentOS 7.3 tomcat: 9.0.0.M21 jdk: 1.8.0_131 ip: 192.168.1.5 tomcat官方下载 ...
随机推荐
- Oracle性能诊断艺术-读书笔记(范围分区)
1. PARTITION RANGE SINGLE 注意:操作2 中的 TABLE ACCESS FULL 并不是全表扫描,只是对分区1 做 全分区扫描 case2 2. 分区范围迭代(PARTITI ...
- @Component、@Service、@Constroller
@Component.@Service.@Constroller,@Repository,它们分别用于软件系统的不同层次: @Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可 ...
- 使用GAN进行异常检测——可以进行网络流量的自学习哇,哥哥,人家是半监督,无监督的话,还是要VAE,SAE。
实验了效果,下面的还是图像的异常检测居多. https://github.com/LeeDoYup/AnoGAN https://github.com/tkwoo/anogan-keras 看了下,本 ...
- conv1d UpSampling1D aotoencoder 自编码代码摘录
https://www.quora.com/How-do-I-implement-a-1D-Convolutional-autoencoder-in-Keras-for-numerical-datas ...
- js实现欧几里得算法
概念 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法. 证明 首先假设有两个数a和b,其中a是不小于b的数,记a被b除的余数为r,那么a可 ...
- dup的使用(二)
转自:http://blog.csdn.net/yeyuangen/article/details/6852682 一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运 ...
- oracle增加表空间
select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; select ta ...
- HDU 3720 深搜 枚举
DES:从23个队员中选出4—4—2—1共4种11人来组成比赛队伍.给出每个人对每个职位的能力值.给出m组人在一起时会产生的附加效果.问你整场比赛人员的能力和最高是多少. 用深搜暴力枚举每种类型的人选 ...
- jsp jstl标签库核心标签
JSTL标签库介绍 JSTL标签库的使用时为了弥补html标签的不足,规范自定义标签的使用而诞生的.使用标签的目的就是不希望在jsp页面中出现java逻辑代码 全称:JSTL标签库分类 核心标签库使用 ...
- jw
1. ISO/OSI参考模型(七层) 应表会传 传输介质(双绞线,同轴电缆等)不在OSI7个层次之内 电气特性:电压表示0,1: 机械特性:接口形状,尺寸等 过程特性:出现顺序及信号线的工作原理 ...