什么是 HTTPS?#

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

更多基本介绍请查阅:

  • 数字签名是什么?(图文并茂, 清晰易懂, 重点推荐)
  • HTTPS on WIKI
  • 密码学笔记
  • SSL 与数字证书
  • 另一个图文并茂的笔记, 供参考 --> 泛域名ssl证书搭建全攻略

需要弄清楚的几个问题:

  • 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.comPlease 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 是否够安全.

附上 phphub 的 test

转载于:https://www.cnblogs.com/linkenpark/p/7283145.html

Nginx 下部署 HTTPS 与安全调优相关推荐

  1. nginx下部署vue项目

    nginx下部署vue项目 今天要用到服务器nginx,还需要把自己的vue的项目部署到服务器上去所以就写一下记录下来. 首先要去nginx官网下下载nginx:  下载地址:https://ngin ...

  2. centos mysql2_centos7下在线安装mysqlMySQL内存调优

    原文链接: MySQL Memory Allocation -- by Rick James 原文日期: Created 2010; Refreshed Oct, 2012, Jan, 2014 翻译 ...

  3. nginx下部署vue项目概览 - (资源篇)

    相关博客: nginx下部署vue项目概览 这里使用的是百度云的服务器,CentOS7系统的 linux服务器用centos还是ubuntu系统_Linux nginx服务器搭建以及配置 nginx部 ...

  4. Nginx下的https配置

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

  5. java https 慢_jetty https慢怎么调优?

    客户的一台机器,嵌入式jetty,写最简单的servlet @Override protected void doGet(HttpServletRequest req, HttpServletResp ...

  6. linux 下nginx应用场景的tcp内核调优

    vim /etc/profile net.ipv4.tcp_syncookies=1--防范少量的syn*** net.ipv4.tcp_tw_reuse=1--开启重用 net.ipv4.tcp_t ...

  7. Tomcat是干嘛用的?企业级Tomcat部署实践及安全调优

    1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人 ...

  8. 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置

     1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: ...

  9. Nginx下配置Https,测试环境的完整过程

    在本地的测试环境中,当我们没有https的证书时,又想使用https,我们该怎么办呢?我们可以在服务器中生成自己的证书,当然这个证书只能是用在测试环境中,因为他们没有经过第三方的认证. 下面是配置的过 ...

最新文章

  1. 程序安装包制作工具 v1.0官方版
  2. Universal-Image-Loader 示例 工具
  3. [转]实现Python HTTP服务方法大总结
  4. Nginx负载均衡配置实例详解(转)
  5. html文件上传协议,HTTP 上传文件的协议格式
  6. struts的国际化
  7. python-工具-pycharm的基本操作
  8. Oracle数据库安装图解
  9. http://localhost:9000/application.pac问题解决!
  10. acl在内核里的位置_在Linux中使用ACL(访问控制列表)保护文件/目录
  11. [转载] 【python】内置函数 slice()
  12. SPSS入门教程——如何分析两个变量之间的关联度?
  13. java文件下载文件损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...
  14. CCNA(思科网络攻城狮) 滴水之力05
  15. 360全景视频panolens.js 实现代码
  16. 别拿学历说事,这些天王中学没毕业,最低的是成龙
  17. 将2到10这9个自然数填入图中9个圆圈中,每个数只能用一次,且使每一条直线上的三个数的和相同,则中间圆圈的数是(),对应的每一条直线上的三个数的和是()
  18. matlab: 计算程序运行时间
  19. java调用银海社保接口,银海医保接口调用演示程序
  20. [ Azure | Az-900 ] 基础知识点总结(二) - 核心组件服务

热门文章

  1. python大数据招聘信息_2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万!...
  2. SylixOS网络性能测试
  3. Spring4-自动装配Beans-按属性的数据类型自动装配Bean
  4. math.floor实现四舍五入
  5. 深入浅出交换类排序算法(转)
  6. 联发科MT8377 MT8389 MT6589 MT6577等芯片详细解析
  7. 小学徒进阶系列—JVM对String的处理
  8. 数据结构预算法(六) 数组和矩阵(1)
  9. 云大计算机昆工,云南最好的7所大学,分3档!本地人青看中昆医大,外省更爱昆工!...
  10. webpack文件夹打包_webpack多入口文件页面打包详解