首页 > 技术文章 > 使用Letsencrypt做SSL certificate

holiday2000 2016-03-14 17:08 原文

为什么要使用Letsencrypt做SSL certificate?

最简单直接的原因是免费。但是免费存在是否靠谱的问题,尤其是对安全要求比较高的网站,需要考虑使用letsencrypt的安全性是否符合你的标准。本文旨在介绍怎么使用letsencrypt做SSL certificate,或者说是letsencrypt学习笔记更适合,对其适用场景没有做过多研究。

从git上下载letsencrypt到服务器上

$ git clone https://github.com/letsencrypt/letsencrypt

进到letsencrypt目录下,使用一下命令来创建以及安装CA

$ ./letsencrypt-auto certonly
$ ./letsencrypt-auto --apache -d domainName

CA的一些文件在 /etc/letsencrypt 目录下。

这样就可以以https方式访问你指定的域名了。

但是,网站内可能存在一些http请求,浏览器会报错并加载不成功。这里,我的做法是将站内所有的http请求重定向到https请求。我们需要修改apache2的配置文件。

打开000-default.conf文件,

 

/etc/apache2/sites-enabled/000-default.conf

 

加上

 

RewriteEngine On
RewriteRule  ^/(.*)$ https://domainname/$1 [R,L]

 

修改tomcat下的server.xml文件

<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1" 
              connectionTimeout="20000" 
              compression="on" 
              compressionMinSize="256" 
              compressableMimeType="application/json,application/javascript,application/xml,image/gif,image/png,text/css,text/html,text/javascript,text/plain,text/xml"               
              redirectPort="8443"
              proxyPort = "443"  scheme="https"/>

这样网站所有的请求都指向https请求了。

letsencrypt默认30天内有效,但有renew的命令可以在letsencrypt过期之后更新CA。自动更新CA的脚本如下

#!/bin/sh
if ! /path/to/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
    echo Automated renewal failed:
    cat /var/log/letsencrypt/renew.log
    exit 1
fi

需要在服务器上定期执行这个脚本,可以使用crontab。

 

推荐阅读