前言
下午,圖書館閉館了了、得找一個安全的地方上網(o)/~,一直聽說著Let’s Encrypt。前幾天玩了一下,但是本地運行Let’s Encrypt不能生成證書,Maybe School DNS question :-D,那就在騰訊云服務器玩玩。
Let’s Encrypt
Let's Encrypt是由EFF、Mozilla、Cisco、Akamai、IdenTrust與密西根大學研究人員共同創立的免費的憑證中心,目的在于推動全球所有的網站都使用HTTPS加密傳輸,創建一個更安全、更具隱私性的Web。目前Let’s Encrypt由非營利的網際網路安全研究組織(ISRG)負責營運。
如何配置HTTPS
- 生成證書
我們先在github克隆letsencrypt項目,然后生成證書。
git clone https://github.com/letsencrypt/letsencrypt
cd ./letsencrypt
# 生成證書
./letsencrypt-auto certonly -d domain.com -d www.domain.com
注意:請將domain換成對應要生成證書的域名!!!
執行腳本之后有三種生成證書的方式可選,一般選擇standalone即可。
1: Apache Web Server plugin - Beta (apache)
2: Place files in webroot directory (webroot)
3: Spin up a temporary webserver (standalone)
成功的話將會返回如下的信息
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/samego.com/fullchain.pem. Your cert will
expire on 2017-07-13. To obtain a new or tweaked version of this
certificate in the future, simply run letsencrypt-auto again. To
non-interactively renew *all* of your certificates, run
"letsencrypt-auto renew"
并且我們可以從返回的信息知道生成證書的儲存目錄位于/etc/letsencrypt/live/domain.com/
,一共生成四個證書文件,一般情況下 fullchain.pem 和 privkey.pem 就夠用了。
| 文件名 | 文件作用 |
| ---- | ---- | ---- |
|cert.pem | 服務端證書|
|chain.pem| 瀏覽器需要的所有證書但不包括服務端證書,比如根證書和中間證書|
|fullchain.pem| 包括了cert.pem和chain.pem的內容|
|privkey.pem| 證書的私鑰|
證書的有效期為三個月,過期后我們需要重新生成證書,letsencrypt內已經有指令重新生成。
/opt/certbot/letsencrypt-auto renew
為了方便呢,我們可以crontab定時重新生成證書,如何定時呢就不說了。
- 配置nginx
要修改的nginx的配置文件位于/etc/nginx/sites-enabled/default
。
server {
listen 443;
#domain修改成你的域名即可
server_name domain.com www.domain.com;
ssl on;
#fullchain證書路徑
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
#privkey證書路徑
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
# 下面是我個人反代理的,不用管!!!
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://alicance.github.io;
}
}
最后,我們重啟nginx服務器即可!要是nginx起不來的話,那就看看日志!!!
# 重啟nginx
sudo systemctl restart nginx.service
# 萬一起不來 日志日志日志,重要的事情說三遍!!!
tail -f /var/log/nginx/error.log
證書生成了、服務器配置好了,那就在瀏覽器看看。
PS:生成的證書,即使域名解析到了其它的IP照樣可以使用,適合局域網內SSL。
Alic say : ****價值源于技術,貢獻源于分享****