Let’s Encrypt在今天终于开始公测了:Let’s Encrypt:Entering Public Beta!
先来简单介绍下 Let’s Encrypt 吧!Let’s Encrypt CA 项目由 Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,由Linux基金会托管,向网站自动签发和管理免费证书,加速将Web从HTTP过渡到HTTPS。Let’s Encrypt旨在让每个网站都能使用HTTPS加密,它已被所有主流浏览器信任。但目前存在的一些问题使它推迟了正式推出的时间:只支持Linux,软件运行需要root权限。Let’s Encrypt项目地址为:https://github.com/letsencrypt/letsencrypt
虽然证书时间只有三个月,但还是非常激动的,于是赶紧开始部署。
首先创建一个用于安装证书的目录:
<code> [root@tianfeiyu ~]# mkdir cert [root@tianfeiyu ~]# cd cert [root@tianfeiyu cert]# pwd /root/cert </code>
根据 Let’s Encrypt 的介绍, letsencrypt安装包只支持部分操作系统,所以他们提供了一个临时的解决方案,通过 letsencrypt-auto 包装器脚本进行安装,以下是安装方法:
<code> [root@tianfeiyu cert]# git clone https://github.com/letsencrypt/letsencrypt.git #先下载letsencrypt </code>
以下是自动安装的脚本,此自动安装脚本参考此处https://tonychyi.wetofu.top/2015/12/01/go-with-letsencrypt/:
<code> [root@tianfeiyu cert]# cat encrypt.sh #!/bin/bash SERVER="https://acme-v01.api.letsencrypt.org/directory" # 目前Let's Encrypt的签发服务器 DOMAINS=(www.tianfeiyu.com) # 需要认证的域名,多个域名请使用空格分隔 # 生成域名参数列表,类似"-d xxx.yourdomain.com -d xx2.youdomain.com" for i in ${DOMAINS[*]} do domarg="$domarg -d $i" done service httpd stop # 认证时需要占用80端口,先停掉httpd,若是nginx,则改为nginx cd /root/cert/letsencrypt #letsencrypt所在的目录 git pull origin master ./letsencrypt-auto --server $SERVER $domarg --renew --agree-dev-preview certonly service httpd start </code>
然后执行这个脚本,出现如下所示的提示时,说明证书已经完成签发:
证书会保存在/etc/letsencrypt/live/目录下面,无论申请多少证书,证书只会生成一套且在你的主域名下生成,生成的证书文件可以用于你之前申请的所有域名。
然后在httpd配置中启用SSL,我用的是httpd 2.4 :
<code> [root@tianfeiyu cert]# vim /etc/httpd/httpd.conf #确保以下两项配置已被启用 LoadModule ssl_module modules/mod_ssl.so Include /etc/httpd/extra/httpd-ssl.conf </code>
最后在ssl配置文件中配置SSL证书:
<code> [root@tianfeiyu cert]# vim /etc/httpd/extra/httpd-ssl.conf SSLCertificateFile "/etc/letsencrypt/live/www.tianfeiyu.com/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/www.tianfeiyu.com/privkey.pem" [root@tianfeiyu cert]# service httpd reload #重新加载配置文件 </code>
如果是nginx,在nginx的配置文件中启用 HTTPS server:
<code> server { listen 443 ssl; server_name www.tianfeiyu.com; ssl_certificate /etc/letsencrypt/live/<yourdomain>/fullchain.pem; # 证书文件 ssl_certificate_key /etc/letsencrypt/live/<yourdomain>/privkey.pem; # 私钥 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.php index.html index.htm; } } </code>
然后让nginx重新载入配置nginx -s reload。
由于 Let’s Encrypt的证书有效期只有三个月,方便起见可以使用crontab来设置定时任务自动更新证书:
<code> [root@tianfeiyu cert]# crontab -e </code>
加入以下内容
<code> 0 0 */80 * * root /your/path/encrypt.sh </code>