Lets Encrypt 花三分鐘免費接入ssl證書
很久很久以前我還在當個人站長的時候,就一直琢磨著給網站買個 ssl 證書,這樣用戶訪問的時候瀏覽器上的小綠鎖能給人一種非常安全的印象。然而導致我最終沒有上 https 的原因有:
- 證書好貴
- https 會影響 SEO(據說)
- 懶(
這才是真正的原因)
直到前段時間發現了 Lets Encrypt 項目 ,一個倡導互聯網上所有網站都該使用 https 的組織,提供免費的 ssl 證書服務。
上圖是 GoDaddy 的 ssl 證書報價,換句話說,Lets Encrypt 免費送你價值 62.99 刀的證書。
當然,這里提到價格并不是為了讓大家薅羊毛,而是為了體現 Lets Encrypt 組織的高尚目標。希望看到本文的同學,能夠享受免費 ssl 證書帶來了安全和穩定,而不是產生牟利等不當想法。
使用的方法也很簡單,以 nginx 為例,直接使用 Github 上 xdtianyu 同學提供的 腳本 即可。
操作步驟
切換到你希望保存證書及私鑰的目錄,我選擇當前用戶的 home,即 ~ 。
下文中所有 /path/to/ 請替換成你服務器上的實際路徑; your_domain 同理替換成你自己的域名
下載腳本及配置文件
cd ~ wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh chmod +x letsencrypt.sh
編輯配置文件,將第2、3、4行中的 Example.com 替換成你自己的域名
vim letsencrypt.conf
執行 letsencrypt 腳本,獲取證書及私鑰
./letsencrypt.sh ./letsencrypt.conf
添加 nginx alias
server { ... location /.well-known/ { alias /path/to/.well-known/; } ... }
修改 nginx 配置,加載私鑰和證書
server { listen 443 ssl; ssl_certificate /path/to/your_domain.chained.crt; ssl_certificate_key /path/to/your_domain.com.key; ... }
全部操作完成后,重啟 nginx 即可。
service nginx restart #或 /etc/init.d/nginx -s reload
額外配置
首先,Lets Encrypt 的證書需要每月更新,因此你需要一個 cron 命令定時運行上述腳本
0 0 1 * * ~/letsencrypt.sh ~/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1
其次,如果你希望重定向所有的非 https 到 https 訪問,可以在 nginx 配置中添加如下 server block
server { listen 80; server_name your_domain.com; return https://your_domain.com$request_uri; }
總的來說,Lets Encrypt 所倡導免費及普遍的 ssl 證書有利于整個互聯網環境的安全化。對于某些靠流量劫持廣告的 ISP 來說,苦日子要來了。