Ubuntu Nginx服务器SSL证书安装部署
HDUZN

为什么要安装SSL证书,如果没有SSL证书,访问网站的时候,前面会有个小叹号,是用 http://www.hduzn.cn这样的域名访问的。如果部署了SSL,访问的时候、域名前面就有个安全锁的小图标了。是用 https://www.hduzn.cn这样的地址访问的。

反正都可以免费申请SSL证书的,就申请了下。

前言
已经把Hexo博客部署到Ubuntu服务器上了,可以通过http访问了。
部署的文章参考此篇:Hexo博客部署到云服务器(Ubuntu)上

一、下载SSL证书(本地)

在腾讯云买的域名,在DNSPod中直接点击SSL的图标,点【点此管理】即可跳转到腾讯云上SSL证书管理的页面。

1.申请证书

点击【申请证书】,就能申请免费的证书。

2.下载证书

点击【下载证书】,会提供各种服务器类型的证书下载。(比如Tomcat、Apache、Nginx、IIS等)

如果配置好DNS了,系统会检测,会提示你推荐下载哪一类证书。

腾讯云的SSL证书管理控制台:https://console.cloud.tencent.com/ssl

我这里用的Nginx服务器,就下载Nginx的证书。

下载后,解压出来一个 hduzn.cn_nginx 文件夹,里面一共4个文件:

hduzn.cn_bundle.crt 证书文件
hduzn.cn.key 私钥文件
hduzn.cn.csr 没用到
hduzn.cn_bundle.pem 没用到

就用到前两个文件,后两个没用到。

二、部署SSL证书(服务器)

腾讯云提供的Nginx服务器SSL证书安装部署的文档:https://cloud.tencent.com/document/product/400/35244

1.上传证书到服务器

直接用Xftp上传。因为用Xshell,所以对应也装了Xftp用,很方便传文件。

因为可能涉及权限问题,所以准备分两步走:

  • 1).先把文件上传到用户的home目录;
  • 2).再把文件复制到Nginx配置的目录里。

先建个ssl/nginx_ssl目录,然后把hduzn.cn_bundle.crthduzn.cn.key两个文件用Xftp上传到目录:/home/ubuntu/ssl/nginx_ssl

再到服务器中运行命令:

1
2
sudo cp hduzn.cn_bundle.crt /etc/nginx/sites-available
sudo cp hduzn.cn.key /etc/nginx/sites-available

直接把两个文件放 /etc/nginx/目录下,我索性跟配置文件放一起了。

2.修改站点Nginx配置文件

根据之前Hexo部署到Ubuntu的内容,我的站点的Nginx配置文件是:/etc/nginx/sites-available/default

如果你不想直接用vim命令写这么多行,也可以跟我一样,把这个default文件先通过Xftp下载到本地。改完了再上传上去。通过命令强制覆盖原文件就行了。

原修改好的文件(用http访问):

1
2
3
4
5
6
7
8
9
10
...

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /var/www/hexo; # 需要修改的部分
index index.html index.htm;

...

行数说明:

  • 4:监听80端口,default_server 即设为默认虚拟主机,无效访问会转到该站点
  • 5:对应 ipv6
  • 7:nginx托管的hexo目录路径

https访问配置

加上https访问配置后(主要添加了HTTPS server部分),文件主要部分改为:

1
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

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.hduzn.cn # 写上域名

#root /var/www/hexo; # nginx托管的hexo目录路径
#server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

rewrite ^(.*) https://www.hduzn.cn$1 permanent; # 将http访问重定向为https访问
}

# HTTPS server
#
server {
# SSL configuration
#
listen 443 ssl; # ssl的端口
listen [::]:443 ssl;
server_name www.hduzn.cn; # 写上域名
ssl_certificate /etc/nginx/sites-available/hduzn.cn_bundle.crt;
ssl_certificate_key /etc/nginx/sites-available/hduzn.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

root /var/www/hexo; # nginx托管的hexo目录路径
#server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}

行数说明:

  • 18:将http访问重定向为https访问,即定向到第二个 server 块,需要注意ssl证书到期时间
  • 26:监听SSL的443端口
  • 27:对应 ipv6
  • 29:证书文件
  • 30:私钥文件
  • 33:协议配置
  • 34:加密套件
  • 37:nginx托管的hexo目录路径

修改完后,重启Nginx。

1
sudo service nginx restart
  • 本文标题:Ubuntu Nginx服务器SSL证书安装部署
  • 本文作者:HDUZN
  • 创建时间:2022-05-11 18:06:51
  • 本文链接:http://hduzn.cn/2022/05/11/Ubuntu-Nginx服务器SSL证书安装部署/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论