什么是 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. php和python web开发-Web开发应该学习php还是python
  2. spring boot : Invalid Keystore format Error 解决方法
  3. Document Builder: 如何分析rule执行逻辑
  4. 比double精度更高的数据类型_MATLAB中图像的数据类型
  5. 操作系统学习笔记-01-1.1课程概述
  6. 美国自称最安全密码:100万年才能破解,却被一位中国宝妈拿下
  7. gitglone 指定分支_安装说明 · harryxu/gitube Wiki · GitHub
  8. 【代码技巧】21个经典深度学习句间关系模型
  9. 如何成功发布一个MSMQ的Windows服务
  10. 最详细!!!软考:初级程序员—思维导图
  11. cad转dwf格式怎么转换?
  12. 黑月MySQL_易语言黑月编译器插件
  13. 怎么压缩解压打包文件???
  14. raid5换硬盘显示ready_服务器RAID磁盘坏道修复实战
  15. 网站调用百度地图展示位置,调用百度开放平台api 动态静态调用
  16. Longhorn 企业级云原生容器存储解决方案-部署篇
  17. 创建PHP测试页面,连接并查询MariaDB数据库
  18. CDH 端口未授权访问:hdfs-50070, yarn-8088, jetty漏洞修复
  19. mysql登录框万能密码_Sqli-LABS通关笔录-11[sql注入之万能密码以及登录框报错注入]...
  20. 刘强东割袍弃兄弟,马爸爸醉心 996

热门文章

  1. 头信息_如何在 Spring REST Controller 中获取 HTTP 头信息
  2. windows 防火墙疑难解答程序_Win8系统设置允许程序通过防火墙的方法
  3. TCP协议三次握手/四次挥手
  4. 批量创建10个用户stu01-stu10,并且设置随机8位密码
  5. matplotlib.pyplot
  6. 数据库中Select For update语句的解析
  7. python-redis连接管理
  8. 基于React开发一个音乐播放器
  9. 七牛云上传截图后的base64位遇到的问题总结
  10. springboot(六):如何优雅的使用mybatis