Nginx使用免费的Let’s Encrypt证书

我的系统是Ubuntu 14.04,并且使用Nginx做为web服务程序。

选择Nginx是因为它是事件驱动的,资源占用低,响应快。

我去年就在github上注意到了一个项目:Let’s Encrypt,它可以为你的项目提供免费的SSL证书。

如果你想为你的网站加入HTTPS协议支持,你可以试试Let’s Encrypt。

Let’s Encrypt生成的SSL证书,流行的浏览器都承认它。不会像自签名证书,还要手动添加授权。

你需要注意的是,LetsEncrypt证书有效期是90天,自动延续/更新证书有点复杂,但是可以通过cron计划任务实现。

Nginx TLS/SSL图示:

Screen Shot 2016-03-12 at 10.19.22

我使用的环境:

  • Nginx默认配置文件位置:/etc/nginx/sites-available/default
  • Nginx SSL证书目录:/etc/nginx/ssl/topspeedsnail.com/
  • Nginx网站根目录: /var/www/html/
  • Nginx TLS/SSL端口:443
  • 我使用的域名topspeedsnail.com,你要把本文中所有的域名替换为你的
  • 服务器IP地址:159.203.205.61

安装Le

安装一些东西:

从git clone le客户端,le是什么:

“Simplest shell script for LetsEncrypt free Certificate client”

安装le.sh:

使新添加的别名生效(也可以重新打开终端):

测试,首先成为root用户:

是否输出了le信息。


创建目录/.well-known/acme-challenge/:

更改所有者,一般web服务使用的用户和组是www-data:

更改文件权限:

创建存储SSL证书的目录:

生成你的dhparam.pem文件:

你需要使用强壮的Diffie-Hellman密钥交换算法,最简单的方法是使用OpenSSL生成:

为域名Issue一个证书

为topspeedsnail.com和www.topspeedsnail.com issue一个证书:

如果上面命令没有指定密钥长度,它的默认长度是2048。我使用的密钥长度是4096,so:

配置Nginx web服务的TLS/SSL

编辑Nginx虚拟主机配置文件:

添加如下配置命令:

保存退出。

安装证书

为了避免chaining issue,执行:

如果有防火墙,打开443端口:

在浏览器中测试:


前面提到过,Let’s Encrypt的证书有效期是三个月,不要忘了更新证书:

如果不想手动更新,可以添加cron job:


Le这个东西很好用,感谢一下Le作者。在没有Le项目时,配置Let’s Encrypt证书还是比较烦碎的。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注