2018年4月17日 星期二

https 網站使用 free SSL

2017年1月開始,對沒有使用SSL安全認證 (HTTPS) 服務的網站, Google Chrome 瀏覽器第56版以後的版本會將該網站標示為「不安全」或「Not Secure」,而且網站是否使用SSL安全認證(HTTPS) 服務,在 Google SEO 中也列入評分的項目。

現在的商業網站配合 Google SEO,或是為了交易安全,均會導入 SSL 來提升排名或保護交易;使用的 SSL 憑證除可識別該網站的所有權,並提供加密的交易安全傳輸,此時憑證的發放單位也是一個需考慮的項目;因此,雖然網路上雖有著為數不少的免費 SSL 憑證,但一個商業網站在選擇  SSL安全認證(HTTPS) 服務時,並不會考慮使用免費的 SSL 憑證,必竟SSL憑證的年費對於一個商業網站來說是便宜的。

話說,雖然 SSL 憑證年費並不高,但開發過程中的試網站,為了驗證網站的運作,也必須為其加入完整的SSL安全認證(HTTPS)服務,但為了測試用網站付費並不實際,所以可為這個網站申請一個免費的SSL安全認證(HTTPS)服務。

目前使用的是 Let’s Encrypt 所生成的免費憑證,Let’s Encrypt 是一個免費的、自動的、開放的認證機構 (CA),為公眾的利益而運行,它是由 Internet Security Research Group (ISRG) 提供的一項服務。唯一的限制是它的憑證有效期為90天,每隔90天需再更新一次憑證。它的另一個缺點是該網站沒有一個很好用的UI來提供憑證申請。

SSL For Free 提供了UI來完成 Let’s Encrypt 的 SLL 憑證申請,並透過註冊的帳號來管理所申請的憑證,並在憑證到期前以 eMAIL通知更新。


先到 SSL For Free 建立一個帳號,點選 Login



輸入你的帳號及密碼,點選 Register



只要一個步驟即可完成註冊,後續也會在有效憑證到期前一週,透過這個 eMAIL 通知更新

點選 Create one now ,開始建立所需的 SSL憑證


輸入要使用的完整網址,點選 Create Free SSL Certificate


網站預設提供兩個域名 www.domain.com 及 domain.com ,可依自己的需求調整

SSL For Free 提供三種驗證方式:Automatic FTP Verification、Manual Verification、Manual Verification (DNS)



建議採用 Manual Verification 方式
點選  Manual Verification



接著要驗證你是否為這個域名(網站)的擁有者,依序完成以下三個步驟
  1. Get domain verification files by clicking the button below
       點選下方的 Manually Verify Domain ,取得驗證檔
  2. Upload domain verification files to domain (Need help?)
       上傳這個驗證檔到你的網站中
  3. Download your  free ssl certificate
       確認無誤後,即可下載SSL憑證
點選Manually Verify Domain



  1. 先下載認證檔,每一個域名有一個檔案
  2. 在網頁的根目錄建立一資料夾 “.well-known”,在 Windows系統並無法直接以“.well-known”建立資料夾,需於尾端再加上 “.”,先建立一個新的資料夾,再將其更名為 “.well-known.”,更名後即可變成“.well-known”。
  3. 於資料夾 “.well-known”下再建立另一個資料夾 “acme-challenge”
  4. 將上方所下載的認證檔上傳到 “acme-challenge”資料夾中
  5. 接著就可以利用所列出的連結來確認是否可正常存取到此一檔案
  6. 如果是使用在  IIS 系統時,因為 “.” 無法被解析,需在 IIS 的 MIME 類型中將 “.” 加入為 “text/plain” 類型

如何在一個站台中新增一個  “MIME 類型”

點選站台內要設定的網站,並點選開啟  “MIME 類型” 


點選右側的 動作 à 新增



接著新增一個新的副檔名類型




第5點驗證時,未加入 MIME Type 畫面


第5點驗證時,已加入 MIME Type 畫面


確認第5點中所列連結均可正常呈現後,點選下方 “Download SSL Certificate”
此時系統會產出新的 SSL Certificate Files



點選 “Download All SSL Certificate Files”即可取得 Private.key、CA_bundle.crt 和 certificate.crt 三個憑證檔案的壓縮檔






因 IIS 只能使用 .pfx 憑證檔,所以需再將 .crt 轉換成 .pfx,此時可透過 openSSL for Windows 來轉換,依照作業系統版本下載安裝後執行轉換,安裝後 openssl 主程式所在位置於 C:\OpenSSL-Win64\bin  (Win 64 版本)

OpenSSL 使用的語法如下:

openssl pkcs12 -export -out "your_Domain.pfx" -inkey "private.key" -in "certificate.crt" -certfile "ca_bundle.crt"


執行時會要求輸入兩次後續要轉入憑證時所需的密碼


執行完成後可產出所需的 .pfx 檔



接著將新的憑證匯入供網站使用

開啟 Internet Information Services (IIS) 管理員,點選左側伺服器名稱,接著點選右側 IIS 中的 “伺服器憑證”



點選 右側 “匯入”


輸入經由 SSL for Free 及 OpenSLL 所產出的憑證檔及匯入的密碼


匯入完成後可看到一筆伺服器憑證記錄


在該記錄按右鍵 à 檢視,可查看憑證內容及期限


完成憑證匯入後,點選左側站台內要設定HTTPS 的站台,接著點選右側編輯站台中的“繫結”


新增一個 https 的站台繫結






以 Chrome 為例,開啟網站時即可看到網址左側的綠色鎖及安全字樣


點選右側 “自訂及管理Chrome” à  “更多工具”  à  “開發人員工具”


即可在 Security overview 頁面查看該網站相關的憑證資訊



至此已完成一個網站 Free SLL 憑證的申請、安裝及設定

此時可再回到 SLL for Free 點選右上方的 “Cretificates”查看你所擁有的憑證,別忘了,它的有效期限為90天,而且憑證到期前一週它會自動通知你。



最後,雖然有 Free 的 SLL 憑證可用,但對於營運中的網站,仍然建議選擇使用付費、優良的憑證機構發出的憑證。

2018年4月3日 星期二

Windows Server 2008 R2 建立新網站,出現 “HTTP 錯誤 500.21 - Internal Server Error”

最近要在新建的 Windows Server 2008 R2 上移轉舊的ASP .NET網站,該網站使用 .NET Framework 4.0,安裝前檢查系統內已安裝了Microsoft .NET Framework 4.7.1



該 Windows Server 2008 R2 是由VM環環中共用預設產出,所以並未安裝 IIS 7.5,於是先完成了 “網頁伺服器(IIS)” 角色的新增。



接著開啟 “Internet Information Services (IIS) 管理員”建立新網站,先查看目前狀況



建立新網站 Billing Report,並在應用程式集區中將 .NET Framework 改為 v4.0




看似完成了所有設定,但該網站確無法正常的被啟動,執行後出現以下錯誤

HTTP 錯誤 500.21 - Internal Server Error
處理常式 "PageHandlerFactory-Integrated" 的模組清單中有錯誤的模組 "ManagedPipelineHandler"



錯誤訊息中提到最有可能的原因第一點 “使用Managed處理常式,卻未安裝ASP.NET,或安裝不完整”,此案例真正問題原因是系統在啟用 IIS 之前安裝 .NET Framework 4,安裝的前後順序造成ASP.NET在 IIS 上無法正常運作。

此時需透過 ASP.NET IIS 註冊工具 (Aspnet_regiis.exe) 重新在網際網路資訊服務 (IIS) 註冊 ASP.NET 應用程式。透過ASP.NET IIS 註冊工具,重新在 IIS 註冊 .NET Framework4,並建立使用 .NET Framework 4 的應用程式集區。

需到.NET Framework4的對應路徑 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 並執行 aspnet_regiis.exe -i



這個執行會重新安裝 ASP.NET 4,並更新現有的應用程式以使用應用程式集區的 ASP.NET 4 版本。也會在 IIS Metabase 中同時更新 IIS 傳統模式及 IIS 整合模式的處理常式與指令對應。

這個修正過後網站恢復正常了