3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
免費 SSL 憑證 您是不是也跟我一樣買不起貴鬆鬆的 SSL 憑證 (其實 NameCheap 有便宜的)!?或者您的事業正在起步,能省就省!SSL 連線加密可以讓你的網站提供給使用者更高的安全性,SEO 的排名聽說也會比較前面,網址列多了「綠色鎖」感覺專業多了,這樣才夠潮。免費的 SSL 憑證其實早就有了,像是 StartSSL, 大陸的 WoSign (沃通), CloudFlare 也有提供免費的 SSL,原本我也是用 CloudFlare SSL Cerification 但是在 WindowsXP 的 Chrome 瀏覽器並不支援,會顯示「ERR_SSL_VERSION_OR_CIPHER_MISMATCH」,實在太不方便了,畢竟 WindowsXP 的使用者還是存在,聽說升級專業版之後可以解決,但我也沒打算付錢升級,所以才轉向 Let's Encrypt。StartSSL 期限是一年,申請過程很複雜,如果一樣要申請好幾個網域,要花上不少時間。大陸的沃通我就沒有註冊過了,2015 年 Let's Encrypt 就要放話在 2016 年要提供免費的 SSL 憑證,2016 年果然兌現,真是不錯。以下是 Let's Encrypt Root CA 簽發關係圖: 申請 Let's Encrypt SSL 憑證 申請 Let's Encrypt SSL 不像一般的 SLL 申請作業要填一堆表單,取得憑證的過程通常是需要進主機安裝代理程式,當然也可以透過傳統的方式驗證網域,有了代理程式倒是方便很多,可以自動 Renew (預設憑證的期限是 90 天)。 代理程式就叫做 letsencrypt,當然也是 Open Source 囉 (GitHub)。 首先先安裝相依的套件,RedHat / CentOS 請透過以下命令: sudo yum install gcc libffi-devel python-devel openssl-devel git 如果是 Ubuntu 可以透過以下命令: sudo apt-get install gcc libffi-dev python-dev git 接著安裝代理程式,直接從 GitHub Clone 一份下來即可,如下: cd /usr/share sudo git clone https://github.com/letsencrypt/letsencrypt letsencrypt 透過代理程式自動安裝 Apache SSL 服務 首先你的 Apache 可以先裝上 SSL Module,接著執行以下命令: cd /usr/share/letsencrypt sudo ./letsencrypt-auto --apache -d domain.com 參數 -d 表示指定要安裝的網頁服務 Domain Name,加上 --apache 將會自動搜尋系統中的 Apache 設定檔 (當然也提供 Nginx, Haproxy 等等常用的網頁伺服器),自動找出 Virtual Host 設定檔自動加上 SSL 連線設定,注意喔:letsencrypt-auto 程式會搜尋單一個設定檔,你的設定檔必須只包含一個 VirtualHost 設定才行,不然程式無法正確判斷。如果有找到對應的 HTTP Virtual Hots 設定檔,你就會看到以下畫面: 直接選擇「Easy」模式進行安裝即可,安裝的過程 Let's Encrypt Server 會嘗試對 Domain HTTP 進行連線,確保這個程式是在您所擁有的機器上被執行,確認您是伺服器管理者後才會簽發憑證,所以一定要用 Root 執行是有原因的。一般的驗證方式會檢查 HTTP Server 上的 .well-known 資料夾裡頭的檔案,驗證程式會自動產生驗證檔案,好確認你真的是這個 Domain 的 Server Master。 安裝完之後我們可以看到原本的設定檔 *.conf 同樣的目錄底下會自動產生一個名為 *-le-ssl.conf 檔案,其中的內容會是你原本的 HTTP 設定再加上 SSL 憑證設定,方便我們在 service apache2 restart 之後可以直接生效。範例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <IfModule mod_ssl.c> <VirtualHost *:443>     ServerAdmin master@domain.com     ServerName domain.com     ServerAlias www.domain.com     DocumentRoot /var/www/html     <Directory "/var/www/html">         AllowOverride All     </Directory>     SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem     SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem     Include /etc/letsencrypt/options-ssl-apache.conf     SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem </VirtualHost> </IfModule> 之後記得重新啟用 Apache,如下: sudo service apache2 restart 這樣就可以了,但如果你的 SSL Module 無法正確被識別,造成 SSL 設定檔沒有被載入,那可以把前後的  標記移除就 OK 囉。 為了讓所有連線都走 SSL 連線,原本的設定檔可以改成 Redirect SSL,如下: 1 2 3 4 5 6 <VirtualHost *:80>     ServerAdmin master@domain.com     ServerName domain.com     ServerAlias www.domain.com     Redirect 301 / https://domain.com/ </VirtualHost> 這樣一來連上 HTTP 80 的未加密連線就會自動轉為 SSL 加密連線囉。 萬用 HTTP Server 的認證方式 如果使用的 HTTP Server 不是 Let's encrypt 內建的 Apache, Nginx Plugin 可以自動完成,那可以使用 --webroot 直接指定 Document Root 來驗證,如下: sudo ./letsencrypt-auto certonly --webroot -d domain.com 自動 Renew SSL 憑證 前面有提到,Let's Encrypt SSL 憑證只有 90 天的期限,如果每三個月都要搞一次也太累了,所以 auto renew 是必要的功能。要啟動 Auto Renew 也很間單,Renew 命令如下: sudo /usr/share/letsencrypt/letsencrypt-auto renew 所以做一個排程 Script 即可,如下: sudo vim /etc/cron.daily/letsencrypt-renew 1 2 #!/bin/bash /usr/share/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt-auto.log 設定可執行 sudo chmod +x /etc/cron.daily/letsencrypt-renew 這樣每天都會檢查一次,只要有透過上述的方法安裝的憑證,都會自動每天檢查,方便吧! 筆記:Let's Encrypt Ubuntu Server 14.04 PPA 安裝 1 2 3 4 5 sudo echo 'deb http://ppa.launchpad.net/certbot/certbot/ubuntu trusty main ' > /etc/apt/sources.list.d/letsencrypt.list sudo echo 'deb-src http://ppa.launchpad.net/certbot/certbot/ubuntu trusty main ' >> /etc/apt/sources.list.d/letsencrypt.list sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 75BCA694 sudo apt-get -y update sudo apt-get -y install certbot   分享到 Twitter(在新視窗中開啟) 按一下以分享至 Facebook(在新視窗中開啟) 分享到 LinkedIn(在新視窗中開啟) 點這裡寄給朋友(在新視窗中開啟) 按一下即可分享至 Skype(在新視窗中開啟) 分享到 Reddit(在新視窗中開啟) 分享到 Tumblr(在新視窗中開啟) 按一下以分享到 Telegram(在新視窗中開啟)

本文由toright提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦