前言
到目前为止,我们的博客使用的是‘http’方式访问,这种方式被认为是不安全的,现在都鼓励使用‘https’方式访问网站,那么要如何使用https方式访问网站呢,今天我们就来解决这个问题。
申请免费SSL证书
我们在腾讯云购买了云服务器、域名、DNS解析,所以我们在腾讯云申请免费的ssl证书;登录腾讯云,进入‘SSL 证书’-‘我的证书’页面,点击‘申请免费证书’;在‘证书绑定域名’中输入要使用https方式访问的域名(这个域名要先在‘我的域名’中添加),在‘域名验证方式’中选择自动DNS验证,点击‘提交申请’;需要等腾讯云平台签发SSL证书;等证书签发后回到‘SSL证书’-‘我的证书’页面,下载对应的证书(我下载的是nginx版的)

部署SSL证书
	现在我们已经下载了ssl证书到本地,但是要让它生效,我们需要手动将它部署到域名对应的服务器的nginx中(我的是腾讯云服务器)
 1. https方式监听的是443端口,我们需要打开这个端口(linux内部的防火墙和腾讯云的防火墙);
 2. 我的nginx是部署在docker中,所以需要修改docker-compose.yml文件,映射docker容器的443端口到宿主机,同时挂载一个文件夹,用来存放ssl证书,修改后的docker-compose.yml文件如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | services:nginx:
 image: nginx:1.22
 container_name: nginx
 restart: always
 volumes:
 - ./conf/nginx.conf:/etc/nginx/nginx.conf
 - ./html:/usr/share/nginx/html
 - ./logs:/var/log/nginx
 - ./conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf
 - ./ssl_certificate:/etc/nginx/ssl_certificate
 ports:
 - 80:80
 - 443:443
 
 
 | 
- 将证书文件解压后上传到以docker-compose.yml文件所在文件夹为根目录的“ssl_certificate”文件夹中
- 修改nginx的default.conf配置文件,添加对https访问方式的监听
| 12
 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
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 
 | server {# SSL 默认访问端口号为 443
 listen 443 ssl;
 # 绑定证书的域名
 server_name qiuli.site www.qiuli.site;
 # 证书文件的相对路径或绝对路径
 ssl_certificate /etc/nginx/ssl_certificate/qiuli.site_bundle.pem;
 # 私钥文件的相对路径或绝对路径
 ssl_certificate_key /etc/nginx/ssl_certificate/qiuli.site.key;
 # 过期时间
 ssl_session_timeout 5m;
 # 协议版本
 ssl_protocols TLSv1.2 TLSv1.3;
 # 加密套件,写法遵循 openssl 标准。
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 # 服务器优先选择加密套件
 ssl_prefer_server_ciphers on;
 # 代理路径
 location / {
 proxy_pass http://10.6.0.3:4000/;
 #proxy_set_header Host $host;
 #proxy_set_header X-Real-IP $remote_addr;
 #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 }
 
 server {
 # SSL 默认访问端口号为 443
 listen 443 ssl;
 # 绑定证书的域名
 server_name blog.qiuli.site;
 # 证书文件的相对路径或绝对路径
 ssl_certificate /etc/nginx/ssl_certificate/blog.qiuli.site_bundle.pem;
 # 私钥文件的相对路径或绝对路径
 ssl_certificate_key /etc/nginx/ssl_certificate/blog.qiuli.site.key;
 # 过期时间
 ssl_session_timeout 5m;
 # 协议版本
 ssl_protocols TLSv1.2 TLSv1.3;
 # 加密套件,写法遵循 openssl 标准。
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 # 服务器优先选择加密套件
 ssl_prefer_server_ciphers on;
 # 代理路径
 location / {
 proxy_pass http://10.6.0.3:4000/;
 #proxy_set_header Host $host;
 #proxy_set_header X-Real-IP $remote_addr;
 #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 }
 
 server {
 listen 80;
 #绑定证书的域名
 server_name qiuli.site www.qiuli.site blog.qiuli.site;
 #把http的域名请求转成https
 return 301 https://$host$request_uri;
 }
 
 | 
- 验证配置并让其生效 -  使用命令进入nginx的docker容器 
| 1
 | docker exec -it nginx /bin/bash
 | 
	验证配置是否有效
	更新配置令其生效
	如果有必要则重启nginx,这里不再赘述