免費 SSL 數位憑證 Let’s Encrypt,以往在網站加入 SSL 加密協定(HTTPS),必須支付一筆費用來申請憑證(年費喔!很驚人的費用!)。Let’s Encrypt 是一個由電子前線基金會(EFF)、Mozilla、Cisco、Akamai、IdenTrust 與密西根大學研究人員共同創立,以推動全球所有的網站都使用 HTTPS 加密傳輸的組織。
使用他的好處是,簡化申請流程,申請時只需要安裝簽署程式,輸入自己的網址,自動連線Let’s Encrypt主機,SSL憑證完成。
1. 不需要任何電子郵件認證,也不需要在網站上做任何CA設定,因為CA證書是免費的,所以不會有憑證失效造成網暫停止。
2. 自動證明你的網站讓我們 Let’s Encrypt CA 加密。
3. 獲取瀏覽器信任的證書並設置在 Web 服務器上。
4. 自動追蹤網站CA證書,若即將到期自動續訂。
5. 當任何時候有必要時會協助你撤銷證書。
當然有好處也有缺點,Let’s Encrypt 簽發的憑證有效期限只有 3 個月(90 天),也就是說站台每接近 3 個月時都需要重新更新一次憑證!其他詳細的資訊請參閱官網:https://letsencrypt.org/。
你看看,好用又免費!雖然只有三個月有效期,但小小的麻煩能夠解決安全的問題還是蠻划算的啦,免費申請憑證,整個過程非常簡單、自動化,小編今天將申請Let’s Encrypt 憑證並掛上 IIS 平台的站台流程分享給你們。
回歸正題,Let’s Encrypt SSL 憑證取得方式很麻煩,沒有像一般憑證申請方式一樣放直接從站台輸入私密金鑰及 CSR 檔案來取得憑證的介面,必須要透過 Linux 系統下達 Linux 密密麻麻指令,才能夠在遠端主機取得憑證,若是要放到Windows IIS 平台上,又要花點時間從 Linux 主機取得後再放到 Windows IIS 站台裡,雖然整個操作步驟不難,但若你並不熟悉 Linux 指令的話,就可能會 … 瘋掉 + 尖叫 = 放棄(網路上很多都是教這個方式)。
1. 不需要任何電子郵件認證,也不需要在網站上做任何CA設定,因為CA證書是免費的,所以不會有憑證失效造成網暫停止。
2. 自動證明你的網站讓我們 Let’s Encrypt CA 加密。
3. 獲取瀏覽器信任的證書並設置在 Web 服務器上。
4. 自動追蹤網站CA證書,若即將到期自動續訂。
5. 當任何時候有必要時會協助你撤銷證書。
當然有好處也有缺點,Let’s Encrypt 簽發的憑證有效期限只有 3 個月(90 天),也就是說站台每接近 3 個月時都需要重新更新一次憑證!其他詳細的資訊請參閱官網:https://letsencrypt.org/。
你看看,好用又免費!雖然只有三個月有效期,但小小的麻煩能夠解決安全的問題還是蠻划算的啦,免費申請憑證,整個過程非常簡單、自動化,小編今天將申請Let’s Encrypt 憑證並掛上 IIS 平台的站台流程分享給你們。
回歸正題,Let’s Encrypt SSL 憑證取得方式很麻煩,沒有像一般憑證申請方式一樣放直接從站台輸入私密金鑰及 CSR 檔案來取得憑證的介面,必須要透過 Linux 系統下達 Linux 密密麻麻指令,才能夠在遠端主機取得憑證,若是要放到Windows IIS 平台上,又要花點時間從 Linux 主機取得後再放到 Windows IIS 站台裡,雖然整個操作步驟不難,但若你並不熟悉 Linux 指令的話,就可能會 … 瘋掉 + 尖叫 = 放棄(網路上很多都是教這個方式)。
不過不要就此放棄,小編有找到針對產生 Let’s Encrypt SSL 憑證的線上工具網站 SSL For Free,這網站功能功能是連接 Let’s Encrypt 取得憑證簽發,無須自己到主機輸入安裝指令,即可透過該站台介面來取得憑證的相關檔案(包括私密金鑰、CA bundle 和憑證 crt 檔),再將憑證安裝到站台就能使用喔。
另外還有個貼心功能就是針對 Let’s Encrypt 憑證期限為三個月,SSL For Free 也已提供訂閱通知的機制,你可入自己的 Email,在憑證過期前就會收到電子郵件通知,哈哈!是不是有種被解救的感覺,廢話不多說快來試試看吧。
另外還有個貼心功能就是針對 Let’s Encrypt 憑證期限為三個月,SSL For Free 也已提供訂閱通知的機制,你可入自己的 Email,在憑證過期前就會收到電子郵件通知,哈哈!是不是有種被解救的感覺,廢話不多說快來試試看吧。
網站名稱:SSL For Free
網站鏈結:https://www.sslforfree.com/
網站鏈結:https://www.sslforfree.com/
1. 開啟 SSL For Free 網站後,直接在上方填入你要申請 Let’s Encrypt 憑證的網域名稱,可以用空白來分隔不同的網址,例如小編使用「engineer.domain.tw domain.tw other.com」,填入後點選右邊的「Create Free SSL Certificate」繼續。
注意:若你有多個子網域也都是要一併申請進去,他會只產生一組憑證檔提供給你放入各個子網域站台,千萬不要笨笨的分開申請,為何要這麼說呢?作到後面你就會知道囉。
注意:若你有多個子網域也都是要一併申請進去,他會只產生一組憑證檔提供給你放入各個子網域站台,千萬不要笨笨的分開申請,為何要這麼說呢?作到後面你就會知道囉。
2. 為了確定這個網域名稱使你所有,必須要作站台驗證的動作,他提供了兩種驗證方式,若你的網站有開起 FTP 功能的話,可使用「Automatic FTP Verification」來輸入 FTP 相關資訊自動完成驗證,若你擔心資訊安全的話,可以用手動驗證的方式「Manual Verification」,必須自己下載驗證檔案,按照網站上的說明上傳到主機,另外還有提到站台若有設定防火牆,請必須將 IP:66.133.109.36 加入允許連線的白名單,避免驗證失敗,都沒有問題的話就點選下方的「Manually Verify Domain」繼續。
3. 點選網站上提供的檔案下載鏈結,依照說明順序建立兩層資料夾,將檔案放進去即可。記得要按下圖第 5 步驟的鏈結來看看能否正常讀取檔案,如果不行,代表你的路徑可能錯誤,總之呢要讓鏈結都能正常開啟,使SSL For Free能夠正常驗證你的站台。
這裡我相信很多人都是在這邊失敗、失敗、再失敗!無論如何就是沒有辦法讓驗證鏈結正常開啟!小編在這邊也是卡了很久 … 明明按照說明在站台建立好指定的路徑,也都正確放入驗證檔!
偏偏開起驗證鏈結就是無法顯示或者給我出現 404 錯誤 …
在不斷的 google 找尋檔案後才發現原來因為他的鏈結路徑「.well-known\acme-challenge」前面那個「.」關係,站台認不出來!就會一直無法正常顯示,在 IIS 平台上要記得先行設定 MIME類型,讓 IIS 認得「.well-known\acme-challenge」鏈結路徑!設定方式有兩種,一種是直接在站台的 Web.config 寫入如下指令:
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=”.” mimeType=”text/plain” />
</staticContent>
</system.webServer>
</configuration>
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=”.” mimeType=”text/plain” />
</staticContent>
</system.webServer>
</configuration>
或者直接在 IIS 平台的站台上點選進入「MIME 類型」。
加入「副檔名: . MIME 類型:text/plain」即可。
確認設定好 MIME 類型,驗證鏈結就可以正常開啟囉(就是一連串的雜數亂碼)。
4. 確定驗證連結沒有問題後,再點選最下方的「Download SSL Certificate」,通過驗證後,SSL For Free 就會開始產生 SSL 憑證。
5. 產生憑證後,就能看到密密麻麻的憑證檔案資訊。不過在下在憑證之前,請先注意有著「Get Notified of Expiration」,請先行設定一組 Email 和密碼,這個功能即你申請的憑證在過期前會自動 Email 通知你,提醒你要記得更新憑證以免錯過有效期間。
6. 設定好通知後,點選最下方點選「Download All SSL Certificate Files」打包所有憑證檔並下載下來,
7. 解壓縮後可以取得一個私密金鑰(Privacy Key)、CA_bundle.crt 和 certificate.crt 三個檔案。
8. 產生的憑證是 .crt 非 .pfx,IIS 憑台只能使用 .pfx 憑證檔,所以這時候就需要透過工具做轉換,我們到 OpenSSL for Windows 去下載 OpenSSL 回來,並把他安裝完成。
9. 安裝完成後,開啟命令提示字元,透過下面的指令來執行格式轉換,過程中,OpenSSL 會要我們輸入一個保護 SSL 憑證的密碼(密碼在後面 IIS 匯入時會用到):
注意:指令中 D:\Downloads\sslforfree\ 是小編電腦的路徑,請更改你放憑證檔的路徑。
C:\OpenSSL-Win32\bin\openssl pkcs12 -export -out D:\Downloads\sslforfree\certificate.pfx -inkey D:\Downloads\sslforfree\private.key -in D:\Downloads\sslforfree\certificate.crt -certfile D:\Downloads\sslforfree\ca_bundle.crt
注意:指令中 D:\Downloads\sslforfree\ 是小編電腦的路徑,請更改你放憑證檔的路徑。
C:\OpenSSL-Win32\bin\openssl pkcs12 -export -out D:\Downloads\sslforfree\certificate.pfx -inkey D:\Downloads\sslforfree\private.key -in D:\Downloads\sslforfree\certificate.crt -certfile D:\Downloads\sslforfree\ca_bundle.crt
10. 執行完畢後,PKCS#12 憑證檔 certificate.pfx 就會產生在我們指定的目錄下面(檔案類型為個人資訊交換)。
11. 我們只要把PKCS#12 憑證檔上傳到 IIS 的站台,請至 IIS 點選「伺服器憑證」。
12. 點選右邊動作「匯入 …」。
13. 在匯入憑證視窗,點選「…」,選擇你產生出來的 certificate.pfx 憑證檔。
14. 並輸入之前使用 OpenSSL 轉檔時的密碼。
15. 憑證放好囉。
16. 站台新增繫結,請先點選你的站台,在右邊動作點選「繫結」,於站台繫結點選「新增」。
17. 類型選擇「https」,SSL 憑證就直接點選你剛剛放入的憑證。
這裡請注意,你會發現主機名稱無法設定,因為整個 IIS 只能跑一組 SSL 憑證,不管是有多少個站台就只能跑一組!主機名稱可以用其他方式設定,這個小編會在另一篇說明,但憑證就只能跑一組,所以有此需求的朋友記得我在前面第一個步驟就有提到「若你有多個子網域也都是要一併申請進去」,這樣你在多個網預設定時才不會有問題。
這裡請注意,你會發現主機名稱無法設定,因為整個 IIS 只能跑一組 SSL 憑證,不管是有多少個站台就只能跑一組!主機名稱可以用其他方式設定,這個小編會在另一篇說明,但憑證就只能跑一組,所以有此需求的朋友記得我在前面第一個步驟就有提到「若你有多個子網域也都是要一併申請進去」,這樣你在多個網預設定時才不會有問題。
18. 放好後就可以看到,多了一個 https 站台繫結。
在這個步驟你會發現為何 https 無法輸入主機名稱(網域),且若多個站台都啟用 https 時,甚至會有出現站台被停用的狀況。
原因是因為連接埠指定了 443,當你設定另一個網站的 https 連線時,也是 443 埠,因此兩個在搶同一個埠。解決方法很簡單,修改 IIS 設定檔即可,方法如下:
用記事本打開 C:\Windows\system32\inetsrv\config\applicationHost.config
從內容中,找到你要設定https 的站台設定內容:(大概像如下的設定)
<site name=”engineer″ id=”4″>
<application path=”/” applicationPool=”engineer″>
<virtualDirectory path=”/” physicalPath=”F:\Website\engineer″ />
</application>
<bindings>
<binding protocol=”http” bindingInformation=”*:80:engineer.abc.com” />
<binding protocol=”https” bindingInformation=”*:443:” />
</bindings>
</site>
用記事本打開 C:\Windows\system32\inetsrv\config\applicationHost.config
從內容中,找到你要設定https 的站台設定內容:(大概像如下的設定)
<site name=”engineer″ id=”4″>
<application path=”/” applicationPool=”engineer″>
<virtualDirectory path=”/” physicalPath=”F:\Website\engineer″ />
</application>
<bindings>
<binding protocol=”http” bindingInformation=”*:80:engineer.abc.com” />
<binding protocol=”https” bindingInformation=”*:443:” />
</bindings>
</site>
看到 https 後面那個 * 是表示IP位址未指派,443 是埠號,你會發現 443: 後面什麼都沒有,就是表示沒有主機名稱,我們就把整個網域加進去吧。
<binding protocol=”https” bindingInformation=”*:443:web1.abc.com” />
<binding protocol=”https” bindingInformation=”*:443:web1.abc.com” />
完成後存檔,啟動站台就可以正常囉,注意:當你每次更換憑證時一定會要到 IIS 變更 SSL 憑證,那麼就會變動到 IIS 設定檔 applicationHost.config,所以每次更換憑證時,記得要回到設定檔在按上述步驟重新加上去喔(不然站台又會再跟你鬧革命不啟動)。
19. 對外防火牆開好 443 port 後,就可以用 https:\\ 瀏覽你的站台囉。
20. 若使用 Google Chrome 瀏覽器,直接點選綠色鎖頭就可以看到憑證資訊,打完收工。
沒有留言:
張貼留言