为什么要使用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。