什么是 HTTPS?#

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

更多基本介绍请查阅:

需要弄清楚的几个问题:

  • HTTPS 和 SSL 的关系与基本技术实现;
  • SSL 证书的类型;
  • 什么是证书颁发机构, 为什么会存在;
  • 证书认证等级, DV, OV 和 EV 各自的意思;
  • 什么是 泛域名 SSL 证书 (Wildcard Domain SSL Certificates)

操作步骤#

一个大概流程如下:

  1. 购买前准备 - 服务器生成 csr 和 key 文件;
  2. 购买证书 - 利用上面生成的 csr 文件去购买证书;
  3. 购买成功后的证书有两个, 一个是域名证书, 一个是链证书, 把他们俩按照顺序合并为 crt 文件;
  4. 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#

链接:

强制使用 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 是否够安全.

附上 phphub 的 test

Nginx 下部署 HTTPS 与安全调优的更多相关文章

  1. Tomcat+Nginx+Lvs部署方案与性能调优

    立项要求:用户登录并发数达到1000vuser.原项目设计没有Nginx和LVS,经过性能测试并发数最高到400,就报响应超时,且系统资源消耗严重.经过和架构师商议决定先加入Nginx解决负载均衡处理 ...

  2. nginx+keepalived+tomcat之tomcat性能调优

    body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...

  3. Nginx上部署HTTPS

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev,且ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/, ...

  4. Nginx上部署HTTPS + HTTP2

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so ...

  5. Nginx下部署Laravel项目

    Nginx下部署Laravel项目 标签(空格分隔): php Nginx配置文件 listen 80 default_server; #listen [::]:80 default_server i ...

  6. 有了SSL证书,如何在IIS环境下部署https?【转载】

    昨天各位小伙伴都很开心的领取了自己的SSL证书,但是大部分小伙伴却不知道如何部署,也许是因为第一次接触SSL这种高端的东西吧,不过个人觉得就是懒懒懒...本来小编也挺懒的,但是答应了各位小伙伴的,那么 ...

  7. 有了SSL证书,如何在IIS环境下部署https?

    昨天各位小伙伴都很开心的领取了自己的SSL证书,但是大部分小伙伴却不知道如何部署,也许是因为第一次接触SSL这种高端的东西吧,不过个人觉得就是懒懒懒...本来小编也挺懒的,但是答应了各位小伙伴的,那么 ...

  8. Nginx下的https配置

    https: https(Secure Hypertext Transfer Protocol) 安全超文本传输协议 它是以安全为目标的http通道,即它是http的安全版.它使用安全套接字层(SSL ...

  9. Tomcat 部署安装及JVM调优~

    Tomcat 部署Tomcat环境 环境准备 linux: CentOS 7.3 tomcat: 9.0.0.M21 jdk: 1.8.0_131 ip: 192.168.1.5 tomcat官方下载 ...

随机推荐

  1. JDBC连接SqlServer数据库(非默认实例)方法

    一般我们在连接数据库的时候都是用的默认实例名,今天遇到了用非默认是实例名:连接代码如下(Java): URL=jdbc:microsoft:sqlserver://192.168.1.85//DEMO ...

  2. SPOJ UMR 10A 计算几何

    DES:顺时针给出构成凸多边形的点.然后有Q个询问任意给出两个点的编号,询问由这两个点的连线将多边形分成的两部分面积较小的部分面积大小. 比赛时直接每次连线后求多边形求面积超时了.正确解法是求出利用叉 ...

  3. bacula备份终端操作bconsole指令

    1.list命令列出各种备份状态信息   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 list Jobs     #列出所有备份记录状态 list jobid= ...

  4. request应用实例

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  5. 可远程定位、解锁并启动汽车的黑客设备OwnStar

    GM告诉WIRED,OnStar用户不必担心之前存在的问题,现在已经修复了之前可被利用的漏洞,. 然而,Kamkar表示问题还是没有被解决,并且已经由GM汇报了该问题. 在任何已经连接的汽车上,GM的 ...

  6. 解决Ubuntu下adb无法联接手机终端

    1.首先确认开发者选项中USB调试是否打开. 2.在终端输入lsusb,如下图: 查看设备是否已经连接,如果没有此选项,请检查你的手机数据线是否正常连接,否则你的手机就可以用来防身和砸核桃了. 3.在 ...

  7. 第三篇 makefile的伪目标

    我们来思考一下makefile中的目标究竟是什么?实际上,在默认情况下:    1.make将makefile的目标认为是一个文件:    2.make解释器比较目标文件和依赖文件的新旧关系,决定是否 ...

  8. 怎么在windows7下搭建服务器

    怎么在windows7系统安装IIS 图文教程 http://jingyan.baidu.com/article/1e5468f92f6e05484961b703.html 以下本人为列:第一步:先按 ...

  9. nodejs tutorials

    设置npm的镜像为淘宝镜像 npm config list npm config set registry " https://registry.npm.taobao.org "

  10. chapter02 三种决策树模型:单一决策树、随机森林、GBDT(梯度提升决策树) 预测泰坦尼克号乘客生还情况

    单一标准的决策树:会根每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分类节点的顺序.Random Forest Classifier:使用相同的训练样本同时搭建多个独立的分类模型, ...