Nginx 配置 HTTPS

编译选项

如需使Nginx 支持 HTTPS 功能,需在编译时./configure --with-http_ssl_module

步骤1:Create the SSL Certificate

sudo mkdir /etc/nginx/ssl 
sudo openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。

参数说明:

req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management. 
-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。 
-days 36500: 证书有效期,100年 
-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048) 
-keyout:SSL输出文件名 
-out:证书生成文件名 
它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。 
整个问题应该如下所示:

Country Name (2 letter code) [AU]:US 
State or Province Name (full name) [Some-State]:New York 
Locality Name (eg, city) []:New York City 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc. 
Organizational Unit Name (eg, section) []:Ministry of Water Slides 
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com 
Email Address []:admin@your_domain.com

步骤2: Configure Nginx to Use SSL

首先配置HTTP请求重定向

 
  1. server {
  2. listen 80;
  3. server_name www.yourdomain.com;
  4. rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https
  5. #return 301 https://$http_host$request_uri;
  6. }
  7. server {
  8. listen 443 ssl;
  9. ssl_certificate /etc/nginx/ssl/nginx.crt;
  10. ssl_certificate_key /etc/nginx/ssl/nginx.key;
  11. keepalive_timeout 70;
  12. server_name www.yourdomain.com;
  13. #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
  14. server_tokens off;
  15. #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问
  16. #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
  17. # ......
  18. fastcgi_param HTTPS on;
  19. fastcgi_param HTTP_SCHEME https;
  20. access_log /var/log/nginx/wiki.xby1993.net.access.log;
  21. error_log /var/log/nginx/wiki.xby1993.net.error.log;
  22. }

如果想同时启用HTTP和HTTPS

 
  1. server {
  2. listen 80;
  3. listen 443 ssl;
  4. server_name www.example.com;
  5. ssl_certificate www.example.com.crt;
  6. ssl_certificate_key www.example.com.key;
  7. ...
  8. }

步骤3:重启nginx

sudo service nginx restart

以HTTP 访问并抓包

图片描述

以HTTPS 访问并抓包

图片描述

图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值