免费 SSL 证书 Let’s Encrypt 安装使用教程

现在网站都主张用https,自己上搜好多教程,也有点懒得去弄。等有空了去捣腾一下,所以直接从吾爱破解论坛上面转载过来,以备以后用到,再学习。

下面相关论坛上面转载的SSL安装使用的过程,至于Let’s Encrypt是什么之类的问题这里就不提了,不明白的同学可以自己百度一下,下面直接来说具体的安装使用步骤。

1:安装相关的依赖

#安装git版本管理工具,我们需要使用git来下载Let’s Encrypt相关的程序(ps:Let’s Encrypt项目托管在Github上)
yum install git
#Let’s Encrypt相关的程序是通过python来实现的,所以需要安装python(ps:一般的Linux系统,默认都是安装好python的)
yum install python
2:通过git下载Let’s Encrypt相关的程序

git clone https://github.com/letsencrypt/letsencrypt
默认会将相关的程序下载到当前目录下面

3:申请证书

#下载完毕以后,会在当前目录下面生成一个letsencrypt文件夹
cd letsencrypt
#切换到该文件夹以后,会发现一个名为letsencrypt-auto的二进制文件,我们可以直接执行该文件,来申请证书,下面是具体的命令
./letsencrypt-auto certonly –standalone –email 你的邮箱地址 -d 你的网站域名1 -d 你的网站域名2 -d 你的网站域名3 ….
#-email用来指定的邮箱地址,是letsencrypt即将到期的时候用来通知我们的,是必须要填写的(ps:letsencrypt的过期时间是90天,到期以后我们需要继续申请,才可以继续使用)
# -d用来指定你需要申请的网站域名,这里需要注意的是如果我们有一个一级域名,一级域名下又有多个二级域名,我们需要依次申请,不能只申请一级域名(ps:不存在的域名是不能进行申请的,因为letsencrypt会对申请的域名进行校验,如果校验不通,是通过不了的)

4:执行申请命令,开始申请

这一步,是最关键的一步,也是最容易出现问题的一步。经常出现的问题有以下几种:

(1):申请过程一直卡在 Installing Python packages…

我们之前已经说了,letsencrypt是通过python来实现的,需要依赖许多的python扩展库,这一步主要就是下载安装所依赖的扩展库。可是由于大部分的扩展库都需要到外网下载,所以有可能会被墙或者是下载速度很慢,所以一直卡在这一步不动。针对这种情况,我们可以修改python的镜像源站点地址,改为国内的地址,这样速度就会快很多。至于如何修改python镜像源地址,这里就不提了,有需要的同学可以参考这篇博文 《解决安装Let’s Encrypt时卡死在“Installing Python packages”的问题》 。

(2):申请过程中报以下错误: Can’t connect to 你的域名 on port 443 for something

这个问题是letsencrypt在校验你所指定的域名以及443端口号的时候,连接不上导致的。出现这个问题的原因一般是你的服务器上的端口号被防火墙禁用了。我们可以直接修改防火墙的配置,开启443端口就ok了。对于如何修改防火墙配置开启端口,可以参考我的这篇博文 《打开centos中指定的端口》 。

5:证书申请成功

一般情况下,解决了上面的两个问题以后,就可以正常的完成证书的申请。如果申请成功,会提示你证书存放在/etc/letsncrypt/申请对应的域名/目录下面。每一个域名目录下面都包含以下几个文件:

cert.pem—-服务端证书文件 chain.pem—-浏览器需要的所有证书文件 fullchain.pem—-包括了cert.pem和chain.pem的内容的文件 privkey.pem—-证书的私钥

6:在web-server中部署证书

现在我们一般都是使用nginx来做web-server,下面我就以nginx为例,部署一下证书。

server {

     #监听443端口
    listen 443 ssl;

    #指定域名地址
    server_name 你的域名地址;

    #指定项目目录
    root 项目目录;

    #引入证书文件  
    ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;

    index index.html index.htm index.php;
    …..   
}
上面就是一个最简单的基于https的server配置了。有的时候我们还需要配置一个server来监听80端口,当用户通过http协议来访问的时候,直接跳转到基于https的server上,这个也很简单,有需要的同学可以自己写一写试试。

7: 定时更新证书

上面我们已经提到过,letsencrypt证书的有效时长是90天,我们需要保证我们的站点在到期节点之前更新证书,为了做到上面这一点,我们可以写一个crontab脚本,定时执行申请证书的命令,定时更新证书。

0 0 1 * * root /path/letsencrypt-auto certonly –standalone –email -d 你的域名 >>letsencrypt.log