售前咨询
技术支持
渠道合作

Let’s Encrypt SSL证书申请流程

Let’s Encrypt是由ISRG(互联网安全研究小组)联手组成的证书颁发机构,而SSL证书是一个免费、开放、自动化的网络加密证书。

ISRG是一个关注网络安全的公益组织,其赞助商从非商业组织到财富100强公司都有,包括Mozilla,Akamai,思科,Facebook,密歇根大学等等。ISRG以消除资金,技术领域的障碍,全面推进加密连接成为互联网标配为自己的使命。

Let’s Encrypt SSL证书发展至今已有两年多,当初成立之际已经确定了发展宗旨,旨在以自动方式免费提供安全套接字层 / 传输层安全(SSL / TLS)证书,从而广受全球小型网络站长的一致欢迎。至去年九月份,已经发放 1000 万张证书。

Let’s Encrypt ssl证书申请流程

Let’s Encrypt的证书颁发机制基于ACME协议(ACME protocol),ACME协议简单理解就是一种用于快速认证、颁发SSL证书的处理流程和认证机制。Let’s Encrypt基于ACME协议自助颁发证书的过程由Let’s Encrypt提供一个工具完成,工具名称现在叫做:certbot,在linux下certbot工具安装后也就是certbot命令。

环境假设

Ubuntu 16.04 LTS

nginx 1.8

sudo太麻烦,所有命令全在# root权限下执行

配置APT安装Certbot

首先确定你有add-apt-repository命令,如果没有,先装上:

# apt install software-properties-common

执行下面脚本安装Certbot

# add-apt-repository ppa:certbot/certbot

# sudo apt update

# sudo apt install certbot

执行# certbot -h,如果看到说明信息,就表示安装成功了(一般APT安装不会失败)

注册Certbot

其实这是Certbot提供的一个帮助性服务:

# certbot register

执行上面这个命令,同意几个协议,填写邮箱,将来如果不小心丢了证书凭证,可以通过邮箱找回。

使用certbot工具申请letsencrypt的免费SSL证书

申请SSL证书之前,先梳理几个要点:

1、确定好拟申请SSLl证书的域名,如:www.test.com、account.test.com等其他域名(和主机);

2、确定拟申请SSL证书的域名正确解析到当前主机,

3、确定好拟申请SSL证书域名解析到当前主机后的web根目录,假设为:/var/www

certbot申请SSL有多种模式和方法可选,而且certbot试图成为一个集申请SSL证书、安装SSL证书于一体的智能化工具,这也导致了certbot目前有多种使用方法;将SSL证书申请和自动化安装集成于一体当然是好事儿,但由于当前市面服务器软件多种多样,必然导致兼容性要得到保障的话certbot工具还需要较长一段时间来完善。所幸理解清楚certbot工具到底能做些什么,分哪些过程和步骤,哪些是不需要certbot帮我自动完成的就可以了。本文仅仅将certbot当做一个申请SSL证书的工具,并不需要certbot来自动完善nginx下启用https访问的配置文件。

standalone模式申请ssl证书

standalone模式不需要上述梳理出的3个要点中的第三条,也就意味着如果主机需要关停80端口(或和443端口)的web服务,譬如正在运行的nginx、Apache需要关停。

##standalone模式,其中-d参数指定拟申请ssl证书的域名

#可以通过多个-d参数指定多个域名,但你得确保这些指定的多个域名均能正常解析到当前主机

./certbot-auto certonly –standalone -d c1c2.test.com

非standalone模式申请ssl证书

这种模式需要使用-w参数(或者–webroot-path参数)指定当前正在运行的web服务器的根目录。–webroot-path 参数指定web根目录后,certbot工具会自动在该目录下生成.well-known的隐藏目录,以及用于效验域名所有者的特定文件,此文件Let’s Encrypt的服务器会主动发起http请求去读取从达到效验域名所有者或者管理者就是本次操作certbot工具的人;certbot工具自动生成的完整目录为:-w参数指定的根目录/.well-known/acme-challenge,对于nginx而言web根目录下的隐藏目录默认情况下是不允许访问的,所以nginx情况下再执行非standalone模式申请ssl证书之前,需要将nginx网站根目录下的.well-known隐藏目录设置成允许访问。

##nginx对应主机的配置文件中添加允许.well-known隐藏目录的访问

#注意配置文件中禁止浏览隐藏文件的相关代码引起冲突

location ~ /.well-known {

allow all;

}

如果熟悉nginx,甚至可以为.well-known隐藏目录指定单独的root入口;这就是nginx有关的合理利用了,不再补充。

给出命令的参考格式:

##–webroot指定当前正在运行的web server的根目录

certbot certonly –webroot -w /var/www/ -d c1c2.test.com

测试申请的截图:

这样在/etc/letsencrypt/live/你的域名作为目录名的目录这个目录下会自动生成SSL证书私钥和公匙,下图所示:

 

4个pem文件,ssl里常见的证书文件,nginx用到fullchain.pem、privkey.pem这两个文件,一个公钥链,一个私钥。也就是nginx中ssl_certificate指令指定的就是fullchain.pem,而ssl_certificate_key指令指定的就是privkey.pem,当然如果不做移动的话,需要是完整路径,具体nginx配置就不墨迹了,关键的ssl证书和key都有了,就比较简单了。

证书更新

Let’s Encrypt的证书有效期是90天,但Let’s Encrypt支持证书更新,到期前更新证书即可。certbot 提供了更新证书的命令cerbot renew,会自动更新所有已申请的SSL证书。

上一篇:

下一篇:

相关文章