免費把網頁升級至HTTPs!Let's Encrypt + Nginx的SSL安裝教學

Let’s Encrypt已經推出一段時間了,它是一個多方認可的HTTP加密服務,而且還是免費的,這下我們不用再支付昂貴的年費了!

為麼要用SSL?

  • SSL幫助加密你的網頁傳輸,防止資料外流
  • 讓瀏覽器信任你的網頁
  • 付費系統等等必須使用SSL
  • 現在都免費了,還在考慮甚麼…

Let’s Encrypt的限制

  • 因為加密了所以速度比較慢,這是HTTPs的缺點
  • 90天要更新一次證書

一﹒安裝certbot

這裡就介紹常用的Ubuntu + Nginx的安裝方法,其實就只是根據官方供的certbot的指示做,但還是簡單講一下吧 首先來安裝letsencrypt

sudo apt-get install letsencrypt

然後就是生產證書,把以下的指令修改成你的網域和網頁的根目錄,假設你的網域是example,根目錄是/var/www/example

letsencrypt certonly --webroot -w /var/www/example -d example.com -d www.example.com

上面指令將會在/etc/letsencrypt/live/example.com/產生四個檔案

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

二﹒設定Nginx

我們把本來使用的port 80換成port 443,然後加入fullchain.pemprivkey.pem兩張證書,就像這樣

server {
    listen *:443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/example.com/ful 大专栏  免費把網頁升級至HTTPs!Let's Encrypt + Nginx的SSL安裝教學lchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/example;

    ...
}

然後我們可以選擇把所有http的請求自動轉到https

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

最後從新載入nginx的設定就大功告成了!

sudo systemctl reload nginx

自動更新證書

由於Let’s Encrypt的限制,證書需要每90天更新一次,所以certbot很貼心地提供了一個更新的指令讓我們使用,而且也建議我們用cron或是systemd每天檢查兩次,我們不用擔心更新過多的問題,因為快到期之前即使運行了指令它也是不會更新的,所以我們可以每天的1AM和1PM各檢查更新一次,這樣就做到自動更新的效果了

這裡我選擇用crontab

sudo crontab -e

初次使用應該會出現以下畫面,個人習慣用nano,所以選2

no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:

選擇以後會跳到編輯版面,在最下面輸入以下語句

10 1,13 * * * /usr/bin/letsencrypt renew >> /var/log/le-renew.log
15 1,13 * * * /etc/init.d/nginx reload

最後按Ctrl + X儲存後系統便會依據時間自動執行了!

猜你喜欢

转载自www.cnblogs.com/lijianming180/p/12389142.html
今日推荐