Google 宣布自2017年1月起,Chrome使用者瀏覽到HTTP網站時,網址列將出現「不安全」的警告標示,提醒用戶資料可能因此遭竊。此外,Google 同時提高採用 HTTPS 協定的網站搜尋排名。因此,為網站加密使用 HTTPS 協定將短期內快速成長,也意味著HTTP終將消失。
要使用 HTTPS 加密協定,就要找一家 CA 發憑證,這是要 NT$ 的。還好,由許多大公司以及各大非營利團體,為了推廣 HTTPS 贊助一家免費發佈 SSL certificate 的 Certiciate Authority:Let’s Encrypt。
就來試一試吧:
現有一台剛裝好的 CentOS 7,就讓它的變成有綠色鎖頭的加密網站吧!
一、安裝需求套件:其中 epel-release 是要拿來安裝 certbot 的 yum repositories。 #yum install httpd mod_ssl openssl epel-release
二、啟動網頁伺服器:並先產生一個網頁檔,以確認服務正常。 #systemctl start httpd #echo "<h1>HELLO</h1>" > /var/www/html/index.html
三、開防火牆: #firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --permanent 可用 #firewall-cmd --list-all 確認防火牆是否開啟 (使用 #iptables -L -n 也行)
四、測試網頁服務正常:
(1)直接先用 IP 連線看 http 服務是否正常
(2)用 IP 連線看 https 服務是否正常:連線正常,但憑證是不安全的,先把它新增到到外網站去。
五、設定 DNS:
就看自己的 DNS 服務是那邊提供的,設定 2 組 (用 2 組是因為要測試 SAN, Subject Alternative Name,不同 FQDN 用一個憑證即可,如果只需要 1 個 FQDN 的憑證,那就只設 1 組即可),設好要能夠解析,而且是 Let’s Encrypt 要能查得到才行,可用 8.8.8.8 來測試 DNS 有效性。我設了 2 組測試網址:weba.test.ntpc.edu.tw 及 webb.test.ntpc.edu.tw:
六、安裝 CertBOT:會連 python 相關套件一併安裝 #yum install python-certbot-apache 安裝完成,查一下: #ls -al /usr/bin/*cert*
七、測試簽署憑證:使用 –staging 選項做測試,其中 webroot 是指直接在 webroot 裡建立檔案,讓 Let’s Encrypt 透過 ACME 機制驗證 FQDN 所有權。因為 Let’s Encrypt 的憑證簽署,在正式環境內有次數限制:「There is a Failed Validation limit of 5 failures per account, per hostname, per hour.」每小時 5 次,所以先在 staging environment 做測試,至少每小時可失敗 60 次,讓你有充裕的次數去除錯。
#certbot --staging certonly --webroot -d weba.test.ntpc.edu.tw -d webb.test.ntpc.edu.tw 輸入連絡人email、同意服務條款、並決定是否同意收Email:
輸入 webroot 的路徑,預設在 /var/www/html,因為第 2 個 FQDN 放在同一個地方,所以就選 2,如果有不同虛擬網站,這邊一定要輸入正確的路徑。
八、正式簽署憑證: #certbot certonly --webroot -d weba.test.ntpc.edu.tw -d webb.test.ntpc.edu.tw 更新成正式憑證,也有次數限制喔。
九、更新 httpd.conf 及 ssl.conf #vi /etc/httpd/conf.d/ssl.conf 在 SSLCertificateFile 後面改成憑證檔路徑、在 SSLCertificateKeyFile 後面改成私鑰路徑
#vi /etc/httpd/conf.d/ssl.conf
在設定檔補上 RewirteEngine,會自動將 http 連線改寫成 https:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
十、重啟網頁伺服器、確認憑證: #systemctl reload httpd
用瀏覽器確認憑證的有效性,不管是輸入 http://FQDN 或 https://FQDN,最後都會重導成 https://FQDN,綠色鎖頭出來了,YA:
十一、啟動自動更新憑證: 更新憑證的指令選項是: #certbot renew 利用 crond 排程執行,編輯 crontab,下列例子是每天的上午 12:55 會執行 #certbot renew 的指令 #vi /etc/crontab
存檔後重載 crond 設定檔:
#systemctl reload crond
可使用 #cat /var/log/cron 看是否執行
十二、大功告成!!