给博客添加免费的ssl证书

前言

提示:我用的是阿里云的产品,就以阿里云进行的:

申请SSL证书

阿里云SSL免费证书申请

1、登录到阿里云数字证书管理服务控制台

2、点击左侧栏的【SSL证书】–【免费证书】–【立即购买】,如下图:

3、产品选择【免费证书】,购买数量选择【20】,其他服务选择【不需要】,勾选同意协议,一共是0元,如下图:

image-20231128161917770

SSL证书绑定域名

1、在阿里云数字证书管理服务控制台

2、点击左侧栏的【SSL证书】–【免费证书】–【创建证书】点击【创建证书】后,会自动创建一个“待申请”状态的DigiCert 免费版 SSL

3、找到DigiCert 免费版SSL右侧的【证书申请】,如下图:

image-20231128162157284

4、证书申请表单填写

  • 证书绑定域名:输入你的域名
  • 域名验证方式:如果你的域名在当前的阿里云账号下,那么可以选择自动DNS验证,如果域名不在当前账号下,选择手工DNS验证,当然也可以选择文件验证,根据实际情况选择
  • 联系人:如果之前没有填写过,则需要新建联系人,输入联系人姓名、邮箱地址、手机号和身份证号等信息。申请OV、EV证书需要填写身份信息,免费证书是DV证书,可以不填身份证号码
  • 可以使用阿里云测速工具 http://aliyunping.com 测试一下本地到阿里云服务器各个地域节点的Ping值网络延迟
  • 所在地:根据实际情况填写
  • 密钥算法:RSA
  • CSR生成方式:系统生成,建议您使用系统创建的CSR,避免因内容不正确而导致的审核失败

image-20231128162240455

填写完后,点【提交审核】,完成域名的DNS验证。

说明:如果域名是阿里云申请的,会省很多事情

下载SSL证书

进入数字证书管理服务/SSL 证书 /免费证书 点击下载,服务器类型选择自己的web容器然后点击下载

image-20231128151434176

安装SSL证书

将下载好的证书压缩包进行解压:会有下图两个文件

image-20231128151616221

编辑Nginx配置文件nginx.conf,修改与证书相关的配置

1
include /etc/nginx/conf.d/*.conf;	# 我的nginx.conf配置是在这

vim /etc/nginx/conf.d/qqq.conf

按i键进入编辑模式

在nginx.conf中找到到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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;

#填写证书绑定的域名
server_name wangjieyu.vip;

#填写证书文件名称
ssl_certificate cert/wangjieyu.vip.pem;
#填写证书私钥文件名称
ssl_certificate_key cert/wangjieyu.vip.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

#默认加密套件
ssl_ciphers HIGH:!aNULL:!MD5;

#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;


location / {
#文件夹
root /data/web/blog/; # 你的静态文件根目录 就是您的博客目录
#主页文件
index index.html index.htm;
}
}

server {
# 监听HTTP默认的80端口
listen 80;
# 如果80端口出现访问该域名的请求
server_name wangjieyu.vip;
# 如果请求的URL以http://开头,那么就重定向到https://wangjieyu.vip
rewrite ^(.*)$ https:/wangjieyu.vip;
# 网站文件的根目录
root /data/web/blog/; # 你的静态文件根目录 就是您的博客目录
# 两行定义了访问日志和错误日志的位置
access_log /data/web/logs/qqq_access.log;
error_log /data/web/logs/qqq_error.log;
# location块:这部分定义了不同的文件类型如何被处理
# 图片和多媒体文件会在1天后过期
location ~ .*\.(gif|jpg|jpeg|png|bmp|zip|exe|txt|ico|rar|htm|html)$
{
expires 1d;
}
# 多媒体文件会在30天后过期
location ~ .*\.(swf|mp3|wmv|wma|mp4|mpg|flv)$
{
expires 30d;
}
# JavaScript和CSS文件会在30小时后过期
location ~ .*\.(js|css)?$
{
expires 30h;
}
# 这部分定义了一个特殊的URL路径/webstatus,当请求到达这个路径时,Nginx会返回一些服务器的状态信息。
location /webstatus {
stub_status on;
access_log off;
}
# Nginx通过FastCGI与后端PHP进程通信
location ~.*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}

}

然后重启Nginx服务器就可以了

重启如果出现错误:缺少http_ssl_module 模块

1
nginx: [emerg] cannot load certificate "/etc/nginx/conf/cert/www.xxx.zxxx.key": PEM_read_bio_

不同域名访问同个IP+端口+不同资源目录

当您需要在Nginx中配置多个域名访问同一个IP和端口,并使用相同的SSL证书时,可以按照以下步骤进行配置:

  1. 打开 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf

  2. 找到 server 块,该块通常用于配置默认的域名和端口。

  3. server 块内部,添加一个新的 server_name 指令,指定您想要使用的域名前缀。例如,如果您想使用 www.wangjieyu.vipwangjieyu.vip 作为两个域名前缀:

    # 域名、证书、私钥记得换成自己的哦!,用博主的博主不负责任哦!
    server {
        listen 80;
        server_name www.wangjieyu.vip;
    
        return 301 https://www.wangjieyu.vip;
    }
    
    server {
        listen 443 ssl;
        server_name www.wangjieyu.vip;
    
        ssl_certificate cert/wangjieyu.vip.pem;
        ssl_certificate_key cert/wangjieyu.vip.key;
    
        location / {
            root /data/testq/index/;
            index index.html index.htm;
        }
    }
    
    server {
        listen 80;
        server_name wangjieyu.vip;
    
        return 301 https://wangjieyu.vip;
    }
    
    server {
        listen 443 ssl;
        server_name wangjieyu.vip;
    
        ssl_certificate cert/wangjieyu.vip.pem;
        ssl_certificate_key cert/wangjieyu.vip.key;
    
        location / {
            root /data/testq/blog/;
            index index.html index.htm;
        }
    }
    
    
  4. 如果您有其他域名前缀需要配置,可以在同一个 server 块内重复上述步骤。

  5. 保存配置文件并重新启动Nginx服务,使更改生效。

现在,您应该可以使用不同的域名前缀访问相同的IP和端口,并且每个域名前缀都将被映射到不同的资源目录。同时,SSL证书和私钥将用于为每个域名前缀提供加密的HTTPS连接。

请注意,以上示例是基于HTTPS的配置。如果您需要配置HTTP而不是HTTPS,只需将 return 301 这一行删除,这样访问http将不会重定向到https

希望这可以帮助到您!如果您有任何进一步的问题,请随时提问。