admin管理员组文章数量:1559036
let's encrypt作为一个公共且免费ssl的项目逐渐被广大用户传播和使用,是由mozilla、cisco、akamai、identrust、eff等组织人员发起,主要的目的也是为了推进网站从http向https过度的进程,目前已经有越来越多的商家加入和赞助支持。
let's encrypt免费ssl证书的出现,也会对传统提供付费ssl证书服务的商家有不小的打击。到目前为止,let's encrypt获得identrust交叉签名,这就是说可以应用且支持包括firefox、chrome在内的主流浏览器的兼容和支持,虽然目前是公测阶段,但是也有不少的用户在自有网站项目中正式使用起来。
虽然目前let's encrypt免费ssl证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用。
第一、安装let's encrypt前的准备工作
根据官方的要求,我们在vps、服务器上部署let's encrypt免费ssl证书之前,需要系统支持python2.7以上版本以及支持git工具。这个需要根据我们不同的系统版本进行安装和升级,因为有些服务商提供的版本兼容是完善的,尤其是debian环境兼容性比centos好一些。
第二、快速获取let's encrypt免费ssl证书
ps:在获取某个站点证书文件的时候,我们需要在安装python2.7以及git,更需要将域名解析到当前主机ip中。
1 2 3 |
|
然后执行上面的脚本,我们需要根据自己的实际站点情况将域名更换成自己需要的。
第三、let's encrypt免费ssl证书获取与应用
在完成let's encrypt证书的生成之后,我们会在"/etc/letsencrypt/live/laozuo/"域名目录下有4个文件就是生成的密钥证书文件。
cert.pem - apache服务器端证书
chain.pem - apache根证书和中继证书
fullchain.pem - nginx所需要ssl_certificate文件
privkey.pem - 安全证书key文件
如果我们使用的nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件,在部署nginx的时候需要用到。
1 2 |
|
比如我们在nginx环境中,只要将对应的ssl_certificate和ssl_certificate_key路径设置成我们生成的2个文件就可以,最好不要移动和复制文件,因为续期的时候直接续期生成的目录文件就可以,不需要再手工复制。
第四、解决let's encrypt免费ssl证书有效期问题
我们从生成的文件中可以看到,let's encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。
1 |
|
这样我们在90天内再去执行一次就可以解决续期问题,这样又可以继续使用90天。如果我们怕忘记的话也可以制作成定时执行任务,比如每个月执行一次。
第五、关于let's encrypt免费ssl证书总结
通过以上几个步骤的学习和应用,我们肯定学会了利用let's encrypt免费生成和获取ssl证书文件,随着let's encrypt的应用普及,ssl以后直接免费不需要购买,因为大部分主流浏览器都支持且有更多的主流商家的支持和赞助,https以后看来也是趋势。在let's encrypt执行过程在中我们需要解决几个问题。
a - 域名dns和解析问题。在配置let's encrypt免费ssl证书的时候域名一定要解析到当前vps服务器,而且dns必须用到海外域名dns,如果用国内免费dns可能会导致获取不到错误。
b - 安装let's encrypt部署之前需要服务器支持python2.7以及git环境,要不无法部署。
c - let's encrypt默认是90天免费,需要手工或者自动续期才可以继续使用。
let's encrypt 发布的 acme v2 现已正式支持通配符证书,接下来将为大家介绍怎样申请
一、acme.sh
的方式
1.获取acme.sh
curl https://get.acme.sh | sh
如下所示安装成功
注:我在centos 7上遇到问题,安装完后执行acme.sh
,提示命令没找到,如果遇到跟我一样的问题,请关掉终端然后再登陆,或者执行以下指令:
source ~/.bashrc
2.开始获取证书
acme.sh
强大之处在于,可以自动配置dns,不用去域名后台操作解析记录了,我的域名是在阿里注册的,下面给出阿里云解析的例子,其他地方注册的请参考这里自行修改:传送门
请先前往阿里云后台获取app_key
跟app_secret
传送门,然后执行以下脚本
# 替换成从阿里云后台获取的密钥 export ali_key="sdfsdfsdfljlbjkljlkjsdfoiwje" export ali_secret="jlsdflanljkljlfdsaklkjflsa" # 换成自己的域名 acme.sh --issue --dns dns_ali -d zhuziyu -d *.zhuziyu
这里是通过线程休眠120秒等待dns生效的方式,所以至少需要等待两分钟
到了这一步大功告成,撒花
生成的证书放在该目录下: ~/acme.sh/domain/
下面是一个nginx应用该证书的例子:
# domain自行替换成自己的域名 server { server_name xx.domain; listen 443 http2 ssl; ssl_certificate /path/.acme.sh/domain/fullchain.cer; ssl_certificate_key /path/.acme.sh/domain/domain.key; ssl_trusted_certificate /path/.acme.sh/domain/ca.cer; location / { proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header host $host; proxy_pass http://127.0.0.1:10086; } }
acme.sh
比certbot
的方式更加自动化,省去了手动去域名后台改dns记录的步骤,而且不用依赖python,墙裂推荐
第一次成功之后,acme.sh
会记录下app_key跟app_secret,并且生成一个定时任务,每天凌晨0:00自动检测过期域名并且自动续期。对这种方式有顾虑的,请慎重,不过也可以自行删掉用户级的定时任务,并且清理掉~/.acme.sh文件夹就行
二、 docker 镜像获取
如果装有docker环境的话,也可以用docker镜像来获取证书,只需一行命令即可
docker run --rm -it \ -v "$(pwd)/out":/acme.sh \ -e ali_key="xxxxxx" \ -e ali_secret="xxxx" \ neilpang/acme.sh --issue --dns dns_ali -d domain -d *.domain
成功之后,证书会保存在当前目录下的out文件夹,也可以指定路径,修改上面第一行 "$(pwd)/out"
,改为你想要保存的路径即可。
详细用法,可以参考:传送门
获取下来的证书跟方式一 获取的一模一样,其他信息请参考方式一。
三、 certbot
方式获取证书[不推荐]
1.获取certbot-auto
# 下载 wget https://dl.eff/certbot-auto # 设为可执行权限 chmod a x certbot-auto
2.开始申请证书
# 注xxx请根据自己的域名自行更改 ./certbot-auto --server https://acme-v02.api.letsencrypt/directory -d "*.xxx" --manual --preferred-challenges dns-01 certonly
执行完这一步之后,会下载一些需要的依赖,稍等片刻之后,会提示输入邮箱,随便输入都行【该邮箱用于安全提醒以及续期提醒】
注意,申请通配符证书是要经过dns认证的,按照提示,前往域名后台添加对应的dns txt记录。添加之后,不要心急着按回车,先执行dig xxxx.xxx txt
确认解析记录是否生效,生效之后再回去按回车确认
到了这一步后,大功告成!!! 证书存放在/etc/letsencrypt/live/xxx/里面
要续期的话,执行certbot-auto renew
就可以了
注:经评论区 ddatsh 的指点,这样的证书无法应用到主域名xxx
上,如需把主域名也增加到证书的覆盖范围,请在开始申请证书步骤的那个指令把主域名也加上,如下: 需要注意的是,这样的话需要修改两次解析记录
./certbot-auto --server https://acme-v02.api.letsencrypt/directory -d "*.xxx" -d "xxx" --manual --preferred-challenges dns-01 certonly
下面是一个nginx应用该证书的一个例子
server { server_name xxx; listen 443 http2 ssl; ssl on; ssl_certificate /etc/cert/xxx/fullchain.pem; ssl_certificate_key /etc/cert/xxx/privkey.pem; ssl_trusted_certificate /etc/cert/xxx/chain.pem; location / { proxy_pass http://127.0.0.1:6666; } }
本文标签:
j9九游会老哥俱乐部交流区的版权声明:本文标题:申请let‘s encrypt永久免费ssl证书 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727364325a1110897.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论