域名申请证书
介绍
如果想使用https
访问我们的域名。需要为域名申请证书,配置了之后就可以使用https
访问我们的网站。
从2024
年4
月25
日起,各个云平台新签发的免费证书有效期调整为 90
天,已经签发的不受影响。目前我的域名证书到期了,需要重新申请证书。
之前游走于各个服务商直接,证书都是一年的,觉得更新频率还行。现在想想,之后每三个月都需要去申请一次就觉得麻烦。
服务商
阿里云
证书有效期
阿里云免费的证书有效期为 90
天。
腾讯云
证书有效期
腾讯云免费的证书有效期为 90
天。
申请免费证书
在腾讯云的SSL
控制台,选择我的证书
,然后选择申请免费证书
,目前显示免费证书最多申请50个。点击之后就会有弹窗提示:
我们选择免费证书
,就进入证书申请页面了。
这里写上需要申请证书的域名,然后选择域名验证
方式,这里因为我是在腾讯云
申请的域名,所以我这里选择自动验证。然后点击下一步
。
添加完成后,我们就能在证书列表里面看到,刚刚申请的证书了,处于验证中
。一般几分钟之后就能验证完成。
注意 这里域名申请证书的时候,如果是根域名,则会赠送www.***
的解析。比如我这里申请了tdytech.cn
,证书绑定的是tdytech.cn
和www.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
文件生成的,并包含你的域名和相关验证信息。通常配置到Nginx
的ssl_certificate
指令中。.pem (Certificate Bundle)
这是一个 证书链文件,包含你的服务器证书(***.crt
)和中间证书的集合,用于建立完整的信任链。通常配置到Nginx
的ssl_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_certificate
和ssl_certificate_key
两个参数即可。我们这里配置tdytech.cn
和www.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.cn
或https://tdytech.cn
访问我们的博客了。浏览器的警告也消失了。http
访问也重定向到https
了。
提示 修改了Nginx
配置后,最好先使用nginx -t
命令检查一下配置文件是否正确,然后再重启Nginx
服务。
总结
看现在各个云服务都把免费证书的有效期调整为 90
天了。感觉主要还是为了推他们的其他相关服务,让你们去购买他们的付费证书、自动续费等。