用 Let’s Encrypt 使你的网站用上 https

在网上查找了不少资料之后终于弄好了 Let’s Encrypt 的 https 证书。
Let’s Encrypt
Let’s Encrypt是由EFF、Mozilla、Cisco、Akamai、IdenTrust与密西根大学研究人员共同创立的免费的凭证中心,目的在于推动全球所有的网站都使用HTTPS加密传输,并由非营利的网际网路安全研究组织Internet Security Research Group(ISRG)负责营运。
我选择 Let’s Encrypt 的原因之一就是因为证书是免费的。
首次生成证书
从Github签出Let’s Encrypt的源代码
git clone https://github.com/letsencrypt/letsencrypt
进入本地源代码目录
cd letsencrypt
Let’s Encrypt提供多种认证方式,因为之前在VPS上有了HTTP的网站,所以这里采用了webroot的方式,其他方式请参考官方文档
主域名的认证
./letsencrypt-auto --debug certonly --webroot --email name@your_main_domain.com -d your_main_domain.com -d www.your_main_domain.com -w /var/www/your_main_domain.com
子域名的认证
./letsencrypt-auto --debug certonly --webroot --email name@your_main_domain.com -d subdomain.your_main_domain.com -w /var/www/your_main_domain.com/subdomain
然后在弹出的蓝底白字提示框中一路点击”OK”
注意如下问题
* 请将命令中的name, your_main_domain.com, subdomain替换成你自己的名字,域名以及子域名
* 因为Gentoo目前是在试验阶段,所以命令行加上--debug参数
* 参数--email如果没有在命令行加上,会在随后弹出的对话框里提示你填写
* -w指定Web服务器网址内容放置的目录,请指定自己放置的目录
生成的证书放在/etc/letsencrypt/live/[网站域名]
下
文件名 | 内容 |
---|---|
cert.pem | 服务端证书 |
chain.pem | 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书 |
fullchain.pem | 包括了cert.pem和chain.pem的内容 |
privkey.pem | 证书的私钥 |
一般情况下 fullchain.pem
和 privkey.pem
就够用了
Nginx配置
我使用的是 lnmp 的一键安装包,打开 /usr/local/nginx/conf/vhost/
下 域名.conf
的文件,改成类似下面的设置。
1 |
|
其中return 301 https://$server_name$request_uri;
是用来实现80端口到443端口的流量跳转的。
最后再执行:/etc/init.d/nginx reload
重新载入配置使其生效。
更新证书
./letsencrypt-auto renew
参考文章
使用Let’s Encrypt轻松实现站点https
Let’s Encrypt给你的网站穿上HTTPS的铠甲,防止http劫持
如何在Nginx上部署 Let’s Encrypt 证书
免费SSL安全证书Let’s Encrypt安装使用教程(附Nginx/Apache配置)