欢迎访问田飞雨的博客,如果想一起学习linux请加此群! linux学习小群    

使用 Let’s Encrypt 证书为网站启用 https

linux系统管理 struggling 3451次浏览 已收录 3个评论

下载 (2)

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>

然后执行这个脚本,出现如下所示的提示时,说明证书已经完成签发:

QQ图片20151204112640

证书会保存在/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>

DevOps-田飞雨 》》转载请注明源地址
喜欢 (3)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(3)个小伙伴在吐槽
  1. chrome 还是红色的 不是绿色
    沐松2015-12-10 18:10 回复
    • 可能你的网站不是全部https,需要将所有的链接都换为https
      struggling  2015-12-10 22:37 回复
      • 知道原因了 是因为我的www 以前绑定过一张其他的厂商的免费证书,昨天申请吊销后,重新申请lets的证书就好了
        沐松2015-12-11 09:17 回复