[译]如何轻松给网站安装免费 SSL 证书?

Posted by Deadline on July 13, 2016

由于我的虚拟主机已经无法满足极速增长的需求了,我不得不忙着寻找新的托管。在这个过程中,研究了下 SSL 方案,并且一个朋友也建议我采取加密措施。我很喜欢这段折腾的过程,我想将它分享给大家。

我的困境

之前的托管商(不点名了)已经不堪重负了。一开始他们是一家很好的小公司,有着很快的服务器以及超好的服务,后来被收购了。新公司就像那些大公司一样,削减开支,降低产品质量。他们美其名曰的和我们说“服务器升级”,结果却是个更烂的服务。网站因为廉价服务器而频繁的中断服务。我打过电话但是没有得到回复,邮件也是外包技术支持回复的,他们也仅仅是复制粘贴一堆废话回复给我。维持了三年的良好服务,一夜之间荡然无存。

所以我要尽快转移网站,因为用了 SSL ,而且所有页面都被 Google 以 SSL 方式收录过了,所以最好继续使用 SSL。我甚至都不想尝试联系技术支持人员,让他们把证书导出到现在的服务器上,于是就想想其他办法。我找到了 LetsEncrypt 。自从将网站转移到新的 Linux 服务器上后,LetsEncrypt 对我说是个不错的方案,我决定尝试一下。

如何安装免费的 SSL/TLS

sudo apt-get install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help

安装了所有必须组件和 LetsEncrypt 应用。它们有两个方案安装证书,一种是独立的方法,另一种是使用 “webroot”插件。单独的方法需要停止服务器,webroot 方法可以在服务器运行的时候完成安装。停掉服务器对我来说没啥可担心的,不过我选择了更简单的方法:

sudo /home/web/.local/share/letsencrypt/bin/letsencrypt certonly --webroot -w /var/www/html -d jeremymorgan.com -d www.jeremymorgan.com

这就创建好了证书,不过我想加强一点,看看我是怎么做的

Group 生成强大的 Diffie-Hellman Group

为了生成强大的 Diffie-Hellman group,运行下面的命令:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

注意证书的位置,会把它加到默认设置中。这些就是我增加的配置了:

listen [::]:443 default_server;
listen 443 ssl default_server;
  server_name         www.jeremymorgan.com jeremymorgan.com;
  ssl_certificate     /etc/letsencrypt/live/jeremymorgan.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/jeremymorgan.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/jeremymorgan.com/chain.pem;
  ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
  ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
  ssl_session_timeout 1d;
  ssl_session_cache shared:SSL:50m;
  ssl_stapling on;
  ssl_stapling_verify on;
  add_header Strict-Transport-Security max-age=15768000;

然后保存文件,重启 NGINX:

sudo service nginx reload

有了吧?是的,证书就装好了。

现在有一把漂亮的绿色小锁了。和上次的证书没多少不同的:

不错吧!

结论

我分享这篇文章就是想让大家看看,用 LetsEncrypt 为自己的网站安装免费的 SSL 证书是有多么简单。这个项目的目的是加密一切,这是个好主意。


There are no comments on this post.