Skip to content

域名申请证书

约 1860 字大约 6 分钟

域名SSL

2025-01-16

介绍

如果想使用https访问我们的域名。需要为域名申请证书,配置了之后就可以使用https访问我们的网站。

2024425日起,各个云平台新签发的免费证书有效期调整为 90 天,已经签发的不受影响。目前我的域名证书到期了,需要重新申请证书。

之前游走于各个服务商直接,证书都是一年的,觉得更新频率还行。现在想想,之后每三个月都需要去申请一次就觉得麻烦。

服务商

阿里云

证书有效期

阿里云免费的证书有效期为 90 天。

阿里云SSL证书期限

购买个人测试证书(额度)

腾讯云

证书有效期

腾讯云免费的证书有效期为 90 天。

腾讯云SSL证书期限

腾讯云 SSL证书

申请免费证书

在腾讯云的SSL控制台,选择我的证书,然后选择申请免费证书,目前显示免费证书最多申请50个。点击之后就会有弹窗提示:

腾讯云SSL证书期限

我们选择免费证书,就进入证书申请页面了。

腾讯云提交证书申请

这里写上需要申请证书的域名,然后选择域名验证方式,这里因为我是在腾讯云申请的域名,所以我这里选择自动验证。然后点击下一步

腾讯云验证域名

添加完成后,我们就能在证书列表里面看到,刚刚申请的证书了,处于验证中。一般几分钟之后就能验证完成。

腾讯云证书列表

注意 这里域名申请证书的时候,如果是根域名,则会赠送www.***的解析。比如我这里申请了tdytech.cn,证书绑定的是tdytech.cnwww.tdytech.cn两个域名。另外一个api.tdytech.cn就只绑定了申请的域名。

注意 一般我们域名在哪个服务商那儿买的,申明证书就去对应的服务商哪儿,这样方便很多。如果不是同一个服务商,需要去域名管理里面,去添加对应的记录才行,比较麻烦。

下载证书

证书签发之后我们就可以在证书列表点击下载按钮来下载证书。

腾讯云下载证书

服务器上我是用的Nginx,所以这里我么点击Nginx对应的证书下载。

下载证书之后,我们得到 .csr.key.crt.pem 4个文件:

$ cd ~/Downloads/tdytech.cn_nginx
$ ll
total 32
-rw-rw-rw-@ 1 matias  staff   1.1K  1 16 16:42 tdytech.cn.csr
-rw-rw-rw-@ 1 matias  staff   1.7K  1 16 16:42 tdytech.cn.key
-rw-rw-rw-@ 1 matias  staff   3.8K  1 16 16:42 tdytech.cn_bundle.crt
-rw-rw-rw-@ 1 matias  staff   3.8K  1 16 16:42 tdytech.cn_bundle.pem
  • .csr (Certificate Signing Request)这是 证书签名请求 文件,包含服务器的公钥和相关信息(如域名、组织名称等)。CSR 文件由你生成并发送给证书颁发机构 (CA),用于申请数字证书。一旦证书签发成功,CSR 文件就不再需要。
  • .key (Private Key)这是 私钥文件,用于加密数据和解密客户端传来的加密内容。它与生成 CSR 的公钥配对,必须保密。私钥是服务器 HTTPS 通信的核心。应该严格保密。如果私钥泄露,需要立即废弃相关证书并重新生成。
  • .crt (Certificate)这是从证书颁发机构 (CA) 获取的 服务器证书文件,它是由 CA 根据你的 CSR 文件生成的,并包含你的域名和相关验证信息。通常配置到 Nginxssl_certificate 指令中。
  • .pem (Certificate Bundle)这是一个 证书链文件,包含你的服务器证书(***.crt)和中间证书的集合,用于建立完整的信任链。通常配置到 Nginxssl_certificate 或相关指令中,具体取决于你的配置。

百度云

华为云

配置Nginx

上传文件

下载完证书后,我们将tdytech.cn_bundle.pem/usr/cert/tdytech.cn.key这两个文件,传到Nginx服务器的/usr/cert/上。

先在服务上查看一下,存储证书的目录是否存在,如果不存在,就创建一下。

$ cd /usr/cert
$ ll
total 20
drwxr-xr-x  2 root root 4096 Nov  9  2023 ./
drwxr-xr-x 15 root root 4096 Nov  3  2023 ../
-rw-r--r--  1 root root 4097 Nov  9  2023 tdytech.cn_bundle.pem
-rw-r--r--  1 root root 1702 Nov  9  2023 tdytech.cn.key

可以看到之前证书这两个文件,现在已经过期了,我们需要更新它们。

提示 存储的位置随意,只要能和Nginx配置中的对应上就行。

我们使用scp命令来传递文件到服务器。

# cd 到下载证书的路径
$ scp ./tdytech.cn.key tdy-baidu:/usr/cert/
tdytech.cn.key                                                 100% 1700    37.8KB/s   00:00
$ scp ./tdytech.cn_bundle.pem tdy-baidu:/usr/cert/
tdytech.cn_bundle.pem                                          100% 3885    89.0KB/s   00:00

确认一下,我们的文件是否更新了。

$ ll
drwxr-xr-x  2 root root 4096 Nov  9  2023 ./
drwxr-xr-x 15 root root 4096 Nov  3  2023 ../
-rw-r--r--  1 root root 3885 Jan 16 17:08 tdytech.cn_bundle.pem
-rw-r--r--  1 root root 1700 Jan 16 17:07 tdytech.cn.key

通过时间,我们确定文件是更新了的。

提示 通过SSH免密登录可以参考ssh 命令Windows通过密钥访问github

修改配置文件

Nginx配置文件中,我们只需要配置ssl_certificatessl_certificate_key两个参数即可。我们这里配置tdytech.cnwww.tdytech.cn两个域名。

$ cd /etc/nginx/conf.d

通过vim修改配置文件。

server {
    #SSL 默认访问端口号为 443
    listen 443 ssl;

    #绑定证书的域名
    server_name tdytech.cn www.tdytech.cn;

    #证书文件的相对路径或绝对路径
    ssl_certificate /usr/cert/tdytech.cn_bundle.pem;

    #私钥文件的相对路径或绝对路径
    ssl_certificate_key /usr/cert/tdytech.cn.key;
    ...
}

配置了证书之后,可以设置HTTP自动跳转到HTTPS,这样用户访问的时候,就会自动跳转到HTTPS上了。 在Nginx的配置文件下,新添如下配置:

#HTTP 自动跳转 HTTPS 的安全配置
server {
     listen 80;
     #请填写绑定证书的域名
     server_name tdytech.cn www.tdytech.cn;
     #把http的域名请求转成https
     return 301 https://$host$request_uri;
}

重启Nginx服务,证书就配置好了。

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ nginx -s reload

重启之后,就能使用https://www.tdytech.cnhttps://tdytech.cn访问我们的博客了。浏览器的警告也消失了。http访问也重定向到https了。

提示 修改了Nginx配置后,最好先使用nginx -t命令检查一下配置文件是否正确,然后再重启Nginx服务。

总结

看现在各个云服务都把免费证书的有效期调整为 90 天了。感觉主要还是为了推他们的其他相关服务,让你们去购买他们的付费证书、自动续费等。

参考

ssh 命令

Windows通过密钥访问github

购买个人测试证书(额度)

腾讯云 SSL证书