HTTPS 证书的定价因供应商、证书类型、证书品牌、有效期等因素而异。一般来说,SSL/TLS 证书的价格分为以下几种类型:
需要注意的是,有些证书供应商可能会提供免费的 DV 证书,但使用时需要注意是否符合自己的需求和安全要求。
总的来说,选择适合自己网站的 SSL/TLS 证书需要根据需求和安全要求进行综合考虑。在选择证书供应商时,除了价格因素外,还需要注意品牌信誉、技术支持、证书扩展功能等方面的因素。
由于http协议不安全特性,对于h5或者官网以及接口api通常使用https协议,那么就需要在网关层配置https证书,证书可以购买,也可以免费生成,当然免费生成的一般都有时效性。如果不差钱可以直接购买收费的证书,有效期也基本不需要自己管理;如果考虑到成本问题,那么当然也可以使用免费的证书,然后临过期自动续期即可。
根据引言部分的描述,大部分场景需要DV证书即可。
yum -y install nginx
usermod -a -G root nginx
在域名平台配置域名解析记录(aws route53、阿里云云解析dns和其他域名管理平台),将域名解析到安装nginx的机器,开放nginx机器80和443端口。配置A记录即可:
test.xxx.net -> A记录 -> ip
nginx添加配置,监听域名和80端口:
server {
listen 80;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 6;
gzip_types text/plain application/javascript text/css application/xml;
server_name test.xxx.net;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /root/cerbot/;
}
}
检测nginx配置并重新加载配置:
nginx -t
nginx -s reload
这样保证了域名http协议转发没有问题。前边配置中有一个比较关键的配置,生成ssl证书的时候会用到。
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /root/cerbot/;
}
证书颁发机构会向网站发送HTTP请求,其中包含了一段随机字符串(即挑战)。nginx配置中需要创建一个 .well-known/acme-challenge路径配置,并将该随机字符串保存到该目录下的一个文件中。证书颁发机构将使用HTTP 协议从网站中获取这个文件,验证你的网站控制权是否有权颁发或续订证书。
如果缺少该配置或者配置不正确,无法生成证书或者证书续期。
证书生成我们使用免费的Let's Encrypt工具。Let's Encrypt 的 SSL/TLS 证书是完全免费的,使用过程也很简单。你只需要在 Let's Encrypt 官网上输入自己的域名,然后下载、安装 Let's Encrypt 的签发工具 Certbot,并按照指引完成证书的颁发和部署即可。
与其他商业机构颁发的 SSL/TLS 证书不同,Let's Encrypt 的证书具有以下特点:
安装证书生成工具:
#创建证书根目录
mkdir -p /root/cerbot
#修改目录权限,可读可写可执行
chmod 777 /root/cerbot
#安装相关驱动
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#安装cerbot工具
yum install -y certbot
生成证书:
certbot certonly --webroot -w /root/cerbot -d test.xxx.net
生成的证书在/etc/letsencrypt/live/域名 这个目录:
监听443端口并配置证书:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/test.xxx.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.xxx.net/privkey.pem;
重新加载配置并访问域名.
ssl证书生成了且能够正常访问了。
免费证书的好处是不用花钱买,坏处是有效期短,对于Let's Encrypt生成的免费证书,有效期是3个月,那么如果证书到期了客户端链接会变成不安全链接,并且有些公网回调会调不通,这是非常致命的。
那么有没有一种方式,既能免费,又能自动续期呢?
cerbot工具提供了renew命令来做证书续期:
certbot renew --webroot -w /root/cerbot
运行该命令将检查所有到期的证书,并尝试根据需要更新续期;如果想只检查和续期某个域名,则可以使用-d命令指定域名:
certbot renew --webroot -w /root/cerbot -d test.xxx.net
如果想要做到自动化更新证书,可以基于linux自带的自动化任务crontab配合certbot命令实现。
#编辑任务
crontab -e
# 每天凌晨执行一次检查续期
0 0 * * * /usr/bin/certbot renew -w /root/cerbot >> /var/log/certbot-renew.log
#重启调度是任务生效
service crond restart
这里crontab任务告诉系统在每天凌晨0点自动运行 /usr/bin/certbot renew命令自动检查续期ssl证书,并将结果写入/var/log/certbot-renew.log 文件中。
这样Certbot将在每天凌晨自动检查证书是否需要更新并进行更新。
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!