# Nginx配置HTTPS/安装SSL证书
本篇博文记录一下给博客域名
即本站配置HTTPS/SSL证书的过程。
# 一、HTTP与HTTPS
# HTTP
HTTP协议(即HyperText Transfer Protocol,超文本传输协议)基于TCP/IP通信协议来进行通信,它的缺点是所有信息明文传播,这带来了风险,第三方攻击者可以依此窃取信息、篡改信息、伪造身份参与通信。
# HTTPS
既然信息不安全,是明文传递的,那就加密传递,通信双方的信息不仅加密,还要校验通信双方的身份。这就是SSL/TLS协议,和基于该协议的HTTPS。
# SSL/TLS运行过程
访问网站时浏览器会向服务器获取公钥,使用公钥加密通信内容,服务器接收到加密后的内容后使用私钥进行解密。
# 二、申请SSL/TLS证书
在企鹅云上搜索SSL证书然后走申请流程,大概半天就会下来。😁

上图中点击下载,包里有下图所示的文件👇 。
我是用Nginx做的代理,Nginx包里有两个文件,.crt为网站域名的签名证书,即公钥,.key则为私钥。
# 三、配置Nginx
# 查看Nginx配置
在Nginx中配置HTTPS/SSL需要开启http_ssl_module模块。接下来查看服务器安装的Nginx已安装的模块。
nginx -v # 查看版本
nginx -V # 是大写的V
2

已经安装了http_ssl_module模块,如果没有安装,需要重装Nginx。
重装解决方案参考文末链接[2]。
# 将公私钥上传到服务器
我通过服务器安装的宝塔面板带的FTP将公私钥上传到服务器,地址是在../nginx/ssl/,在安装的Nginx的根目录下创建了一个ssl目录。


# 修改nginx.conf
 配置好后需要重启Nginx。
展开查看nginx.conf配置
...
server
    {
      listen 443 ssl;
      server_name tourist17846.cn www.tourist17846.cn;
      #证书
      ssl_certificate /nginx/ssl/www.tourist17846.cn_bundle.crt;
      #私钥
      ssl_certificate_key /nginx/ssl/www.tourist17846.cn.key;
      # TLS协议版本
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      #配置会话超时时间
      ssl_session_timeout  5m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
      #优先采取服务器算法
      ssl_prefer_server_ciphers  on;
      #设置长连接
      keepalive_timeout   70;
      #减少点击劫持
      add_header X-Frame-Options DENY;
      #禁止服务器自动解析资源类型
      add_header X-Content-Type-Options nosniff;
      #防XSS攻击
      add_header X-Xss-Protection 1;
      location / {
        root   /my-blog;
        index  index.html index.htm;
      }
      error_page  404              /404.html;
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
        root   html;
      }
    }
# 服务代理,将访问80端口的http请求转向https
server
    {
      listen 80;
      server_name tourist17846.cn www.tourist17846.cn;
      return 301 https://$host$request_uri;
    }
...
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 四、解决问题
以下是爬坑问题记录📝。
# 1.端口不能配80
 
上图就是我配80端口给的提示,这里需要配置支持HTTPS协议的端口,默认是443。

# 2.配置好了不能访问
写好了配置文件,也重启了Nginx,Nginx没有报错,浏览器访问不了。。
这个问题困扰了两个晚上,直到第二个晚上才解决。
在浏览器中输入域名,发现已经转到了https://...,但是浏览器却提示无法访问。
这说明配置没问题。接下来把排查重点放在了服务器的安全组,查看发现腾讯云的安全组已配置443端口。。
👉 一时间解决不了,直到后来打开宝塔面板,发现上面有一个防火墙。试着把443加入放行端口列表,终于成功了。。🤣


 
 
 
 