windows server2008R2申請免費let's encrypt證書
Let’s Encrypt 項目(https://letsencrypt.org/)是由互聯網安全研究小組ISRG,Internet Security Research Group主導並開發的一個新型數字證書認證機構CA,Certificate Authority。該項目旨在開發一個自由且開放的自動化 CA 套件,並向公眾提供相關的證書免費簽發服務以降低安全通訊的財務、技術和教育成本。在過去的一年中,互聯網安全研究小組擬定了 ACME 協議草案,並首次實現了使用該協議的應用套件:服務端 Boulder 和客戶端 letsencrypt。
目前LE的證書已經獲得了所有瀏覽器的信任了(XP也可以支持了),在瀏覽器地址欄都會顯示一個綠色可信任標誌,證書90天有效期我們安裝後需要定時任務每月續簽一次證書就好了。
以前都是在linux上部署lets encrypt,很方便直接yum certbot-auto就可以了,今天需要部署的是一臺windows server2008R2+IIS7.5。首先我使用的是:
ACMESharp:https://github.com/ebekker/ACMESharp
ACMESharp安裝方式有兩種:
如果你的服務器PowerShell版本是5.0以上,以管理員權限運行打開PowerShell執行:
PS> Install-Module -Name ACMESharp
來安裝ACMESharp,安裝過程需要看網絡情況,服務器有條件的用vpn安裝,沒條件的多嘗試幾次。
2. 如果你的服務器PowerShell版本是3.0 or 4.0的則麻煩些,先需要在powershell上安裝chocolatey命令行包管理器,然後利用chocolatey安裝。
在powershell中執行:
PS> iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1‘))
來安裝chocolatey命令行包管理器,然後執行:
PS> choco install acmesharp-posh-all
首先你要確實自己的powershell是什麽版本的,這裏直接管理員運行powershell輸入:
PS> get-host Name : ConsoleHost Version : 5.1.14393.1532 InstanceId : 1e00ccb9-a961-4c81-89ed-b22bc1f280c4 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : zh-CN CurrentUICulture : zh-CN PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace
這個是我自己windows10的運行結果,從Version可以看到版本,windows server2008R2的版本是2.0的,為了方便安裝我準備升級powershell。
升級簡單就三步:
1、安裝.NET Framework 4.6.2,下載NDP462-KB3151800-x86-x64-AllOS-ENU.exe,安裝。
2、安裝PowerShell 4.0(5.0依賴4.0),下載Windows6.1-KB2819745-x64-MultiPkg.msu,安裝。
3、安裝PowerShell 5.0,下載Win7AndW2K8R2-KB3134760-x64.msu,安裝。
重啟服務器完成升級。
ACMESharp安裝完畢我們來申請LE證書吧:
管理員身份打開PowerShell
第一步:導入ACMESharp模塊
PS> Import-Module ACMESharp
在這裏出現錯誤,無法運行腳本,提示系統禁止,解決辦法:
因為powershell的默認安全設置禁用了執行腳本,要啟用這個功能需要擁有管理員的權限。
開啟:set-executionpolicy remotesigned
關閉:Set-ExecutionPolicy Restricted
第二步:初始化ACMEVault來保存和管理證書信息
PS> Initialize-ACMEVault
第三步:在LE填寫註冊信息,接受註冊協議
PS> New-ACMERegistration -Contacts mailto:[email protected] -AcceptTos
第四步:創建一個你要申請域名身份
PS> New-ACMEIdentifier -Dns myserver.example.com -Alias dns1
第五步:認證域名所有權
如果是IIS web服務器執行:
PS> Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler iis -HandlerParameters @{ WebSiteRef = ‘Default Web Site‘ }
如果是其它web服務器,比如nginx需要自己配置的執行:
PS> Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler manual == Manual Challenge Handler - HTTP == * Handle Time: [1/12/2016 1:16:34 PM] * Challenge Token: [2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0]To complete this Challenge please create a new fileunder the server that is responding to the hostnameand path given with the following characteristics: * HTTP URL: [http://myserver.example.com/.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0] * File Path: [.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0] * File Content: [2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0.H3URk7qFUvhyYzqJySfc9eM25RTDN7bN4pwil37Rgms] * MIME Type: [text/plain] ------------------------------------
執行完畢之後看返回結果LE的服務器在執行下一步時會訪問你的這個地址:
http://myserver.example.com/.well-known/acme-challenge/2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0
返回的文本內容是:
2yRd04TwqiZTh6TWLZ1azL15QIOGaiRmx8MjAoA5QH0.H3URk7qFUvhyYzqJySfc9eM25RTDN7bN4pwil37Rgms
.well-known
文件夾在windows下可能不能直接創建,需要在命令行下創建。
如果準備好了,我們繼續下一步。
第六步:提交認證
PS> Submit-ACMEChallenge dns1 -ChallengeType http-01
提交之後我們接下來就需要等待LE服務器來驗證了,我們可以通過命令:
PS> Update-ACMEIdentifier dns1 ... Status : valid ...
來檢查驗證狀態: pedding
正在等待驗證 valid
驗證通過 invalid
驗證失敗,如果驗證失敗需要重新申請一次
我做到這裏死活都是invalid,當時心想沒辦法了各種IIS的權限配置都試完了,之後突然想起以前保存的一個網站裏面有所有lets encrypt的部署工具(https://letsencrypt.org/docs/client-options/),找了個windows的部署工具還帶gui的
Certify SSL Manager
Home page for downloads and info : https://certifytheweb.com/
直接對接IIS7.0以上,一鍵就部署好https了!!簡直不要太爽~~終於找到一個windows下的lets encrypt部署利器了!!
本文出自 “Technology Way” 博客,謝絕轉載!
windows server2008R2申請免費let's encrypt證書