使用Letsencrypt時的注意事項
以下內容以伺服器主機作業系統為Linux,使用Nginx為前提來進行設定,這邊說明的是在已完成https的設定,若是如何在伺服器使用Letsencrypt簽署SSL,請參考讓網頁連線加密(https)!如何讓網頁伺服器取得免費SSL憑證(Let’sencrypt)。
以下的範例設定若字體為藍色,請參考您自己的設定檔檔名或路徑修改。
- 如何保護隱藏資料夾,但不影響auto renew。
在Linux的作業系統下,隱藏的檔案或目錄會以半形”點”為首字命名,多半是系統檔案或重要檔案,所以在管理網站時,也應注意若網站資料夾內含有"點"的隱藏檔案或資料夾,不應讓人可以讀取內容。
但是現在問題是有簽署過Letsencrypt憑證的人會知道,簽證時會要求要提供驗證的的網址,例:
https://www.astralweb.com.tw/.well-known/acme-challenge
所以首先,在你的網站設定檔加上設定(或是取消註解):
/etc/nginx/sites-available/sample.com.conf(你的網站設定檔) |
…
# "點" 開頭的任何訪問都禁止
location ~ /\. {
deny all;
}
...
|
然後請注意這個設定位置,必須加在保護隱藏檔設定的上方(若在下方設定會被取消無效):
/etc/nginx/sites-available/sample.com.conf |
... location /.well-known/acme-challenge { root /var/www/letsencrypt; } location ~ /\. { deny all; } ... |
之後nginx reload即可。
- 如何設定讓http轉址至https
會討論這個問題是因為,想要讓簽證的網址保持http,但https時不通過該如何設定。
首先請參考這個範例設定檔,以完全只考慮https訪問為例:
/etc/nginx/sites-available/sample.com.conf |
server{ listen 80; server_name sample.com; root /var/www/sites/sample.com; location /.well-known/acme-challenge { root /var/www/letsencrypt; } location ~ /\. { deny all; } } server { server_name sample.com; root /srv/www/sites/sample.com; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/sample.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sample.com/privkey.pem; … } |
將301轉址的語法加入在server 80最下方完成:
/etc/nginx/sites-available/sample.com.conf |
server{ listen 80; server_name sample.com; root /srv/www/sites/sample.com; location /.well-known/acme-challenge { root /var/www/letsencrypt; } location ~ /\. { deny all; } location / { return 301 https://$host$request_uri; } } |
- 如何讓autorenew略過confirm
會有這個問題是因為之前Letsencrypt的授權聲明有更新,要認證時多出一個詢問的動作,因此直接renew時會因為無法許可授權而無法繼續,因此需要加一個預設允許通過的參數。
不過授權聲明的部份還是建議花點時間了解一下內容。
增加參數這個部分就簡單多了,如果以上的路徑設定都沒問題,請打開之前寫的renew‑letsencrypt.sh(請參考此篇的第6點):
renew‑letsencrypt.sh |
... ./letsencrypt-auto --config /test/ssl/configs/sample.com.conf certonly --renew-by-default ... |
資料來源
https://github.com/LCTT/TranslateProject/blob/master/published/201511/LetsEncrypt.md
我要留言