Skip to content

[ubuntu] apache 安裝 Let's Encrypt ,讓你的網站更安全

Published: at 11:58 AM (3 min read)

安裝 Let’s Encrypt 可以讓我們的網頁加上 TLS/SSL 的加密,也就是 https 的協定,除了安全性之外,也能提高網頁的 SEO 排名。

ubuntu 14.04 上面沒有包好的 package,因此安裝會複雜些


  1. 記得要確認自己 apache 設定(/etc/apache2/sites-available/000-default.conf)中的 ServerName 要設定,以免後續抓不到 ServerName

    ServerName domain.com

  2. 更新套件清單 sudo apt-get update

  3. 安裝git sudo apt-get install git

  4. 將 github 上的 lets encrypt 專案 clone 下來 sudo git clone https://github.com/letsencrypt/letsencrypt

  5. 進入專案資料夾 cd /letscrypt

  6. 開啟 apache ssl module sudo a2enmod ssl sudo service apache restart

  7. 開始下載及安裝相關套件,並自動設定 apache ./letsencrypt-auto —apache -d domain.comPS. 如果有用 cloudflare 這類的服務,會出現 Failed to connect to host for DVSNI challenge,需要用第8步的方法做 這邊會需要輸入一些 e-mail資訊等等 ps. 如果你有多個 domain 要設定,可以 ./letsencrypt-auto —apache -d domain1.com -d domain2.com …

  8. web root 安裝(option),若第7步已成功,就不需要做這步囉! cd ~/.local/share/letscrypt/bin/ ./letsencrypt-auto ./letsencrypt certonly —webroot -w /var/www/example/ -d www.example.com  -w /var/www/other -d www.other.com ps. -w {網站根目錄} -d {domain}

  9. 編輯 apache 的 SSL 設定檔 ( /etc/apache2/sites-available/default-ssl.conf ),更改以下設定

    SSLCertificateFile /etc/letsencrypt/live/camel2243.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/camel2243.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/camel2243.com/chain.pem

    ps. 如果原本有 virtualhost 的話,需要複製 default-ssl.conf ( 如 blog-ssl.conf ),正確設定 ServerName 及 ServerAlias

  10. 啟用 ssl 設定 sudo a2ensite default-ssl.conf  sudo service apache2 reload sudo service apache2 resart

  11. 這時候就已經成功安裝 letencrypt 囉!

  12. 接下來,我們要設定 SSL 憑證的自動更新,由於憑證有效時間僅三個月。目前已有指令可自動檢查憑證有效日期是否少於三個月,因此只要定時的檢查即可。 設定( etc/crontab ) m h dom mon dow user  command *   *     1    *       *     root    /root/.local/share/letsencrypt/bin/letsencrypt renew

  13. 完成!!

參考資料:

https://letsencrypt.readthedocs.org/en/latest/using.html

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04


Previous Post
[apache] 強制網站及 wordpress 使用 https 私人連線
Next Post
[php] empty、isset 及 is_null