您現在的位置: 365建站網 > 365學習 > 免費證書怎么申請,windows+IIS部署免費HTTPS的方法

免費證書怎么申請,windows+IIS部署免費HTTPS的方法

文章來源:365jz.com     點擊數:1835    更新時間:2018-07-30 23:18   參與評論

這篇文章主要講述 IIS 8 部署免費 HTTPS 。 HTTPS 是互聯網 web 大勢所趨。

  • 從 HTTP 到 HTTPS - 什么是 HTTPS

  • 從 HTTP 到 HTTPS - IIS 部署免費 HTTPS

  • 從 HTTP 到 HTTPS - 網站部署 HTTPS 中需要做的事情

有哪些免費證書

這里只介紹在我部署 HTTPS 中嘗試的免費證書方案,部署在 IIS8 上。

  • Let's Encrypt

  • 沃通 (wosign) (不推薦)

本來在遷移中嘗試部署過沃通 (wosign) 的簽發的免費證書,但是后來發現了 Mozilla 官網( firefox/火狐 背后的開源組織 ) 里列出了 沃通的一系列可疑行為和問題,并且沃通 "秘密" 收購 StartCom(著名的免費 HTTPS 證書 StartSSL 即其旗下產品)行為可疑, Mozilla 基金會正在考慮對沃通以及 StartCom 這兩個 CA 機構一年內新簽發的所有 SSL 證書進行封殺。

我在上一篇文章 《從 HTTP 到 HTTPS - 什么是 HTTPS》 中指出 CA 機構應該是是權威和可信的,但由于沃通當前的陷入的一系列丑聞,信任度降低,所以暫時不推薦使用沃通。并且沃通官網已暫時關閉免費 HTTPS 證書申請。

所以我們這次僅推薦 Let's Encrypt。

Let's Encrypt

推薦 Let's Encrypt 理由:

  • 由 ISRG(Internet Security Research Group,互聯網安全研究小組)提供服務,而 ISRG 是來自于美國加利福尼亞州的一個公益組織。Let's Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等眾多公司和機構的支持,發展十分迅猛。

  • 極速申請 - 只要認證的網站通過驗證,當時即可頒發證書

  • 免費和訪問速度兼得

  • 對于域名所有權的驗證,支持兩種方式:放臨時文件進行驗證、查詢 whois 給域名所有人發郵件驗證

  • 無需注冊賬戶

  • 關鍵是穩定,背后的支持的組織很強大

缺點:

  • 一次只能頒發3個月有效期的證書,到期之后需要自己再續上 (仍然是免費的),這點維護起來比較麻煩,不過我們可以使用工具自動續期。

  • 不支持通配符泛域名 (*.365jz.com),所以在申請認證是時候,要把域名都 301 跳轉到證書里包含的域名上,不然瀏覽器會彈證書錯誤。

流程

默認 Let's Encrypt 申請證書比較繁瑣,所以我們在 windows 下使用工具 letsencrypt-win-simple 進行部署,簡單方便快捷。

如果你覺得這樣還很麻煩的,請直接到本文的 自動續訂 章節,介紹了 certify 這個軟件,可以幫助你自動申請、驗證并且續訂證書。

  1. 下載 letsencrypt-win-simple

  2. 在服務器中打開CMD,運行letsencrypt-win-simple

  3. 在CMD中根據簡單的命令,輸入要認證的網站域名和網站文件夾

  4. letsencrypt-win-simple 自動驗證域名所有權

  5. 驗證通過后即時頒發證書

  6. 部署

使用 letsencrypt-win-simple 進行自動化認證和部署

下載最新版 letsencrypt-win-simple

github - letsencrypt-win-simple

本人在2016年9月15日下到的最新版是:letsencrypt-win-simple.V1.9.1.zip。

自動化認證

在服務器解壓 letsencrypt-win-simple.V1.9.1 得到文件夾,打開CMD進入到該文件夾下。

第一次運行命令會連接遠程服務器更新,并且會讓你是否輸入郵箱訂閱認證信息,可以忽略,然后讓做個選擇(忘記什么選擇了),選擇Y即可,選擇N則會中斷。

部署單個域名

  • 輸入以下命令

      letsencrypt.exe --accepttos --manualhost 你的域名 --webroot 你的網站物理路徑(wwwroot路徑)
  • letsencrypt-win-simple.V1.9.1 會自動生成臨時文件并放到網站根目錄,然后會讓 Let's Encrypt 服務器會訪問這個文件, 用于驗證這個網站是否屬于你。

  • 如果驗證不通過,是因為 IIS 需要修改一些配置,具體參見下文的詳細說明。

  • 驗證通過后會實時頒發證書,并且 letsencrypt-win-simple.V1.9.1 會自動把證書添加到服務器中,然后直接在 IIS 中進行HTTPS部署即可。

部署多個域名

  • 輸入命令 letsencrypt.exe --san

  • 輸入 M ,表示此次需要認證多個域名

  • 輸入網站的 host

  • 輸入要認證的多個域名,用 , 號分隔,比如365jz.com,www.365jz.com,m.365jz.com

  • 輸入網站物理路徑,比如 D:\wwwroot\365siteweb

  • letsencrypt-win-simple.V1.9.1 會自動生成臨時文件并放到網站根目錄,然后會讓 Let's Encrypt 服務器會訪問這個文件, 用于驗證這個網站是否屬于你。

  • 如果驗證不通過,是因為 IIS 需要修改一些配置,具體參見下文的詳細說明。

  • 驗證通過后會實時頒發證書,并且會自動把證書添加到服務器中,然后直接在 IIS 中進行HTTPS部署即可。

更多命令文檔可以 參考這里。

自動化認證單個域名

解壓 letsencrypt-win-simple.V1.9.1 文件夾,然后點擊文件夾,按住shift,再點擊右鍵,選擇在此處打開命令窗口 (即讓控制臺打開后直接定位到這個文件夾下)。

使用下面的命令:

letsencrypt.exe --accepttos --manualhost 你的域名 --webroot 你的網站路徑(wwwroot路徑)

比如 https://365jz.com 部署的命令是這樣的:

letsencrypt.exe --accepttos --manualhost 365jz.com --webroot D:\wwwroot\365siteweb

letsencrypt-win-simple 會自動生成臨時文件并放到網站根目錄 (詳情可以參考下一章節 自動化認證多個域名 ),然后會讓 Let's Encrypt 服務器會訪問這個文件, 用于驗證這個網站是否屬于你。

如果驗證通過,直接進入本文的 部署 章節即可。如果驗證不通過,是因為需要修改 IIS 的一些配置,請參考下一章節 自動化認證多個域名。

自動化認證多個域名

CMD 進入 letsencrypt-win-simple.V1.9.1 文件夾,運行如下命令:

letsencrypt.exe --san

然后會彈出一坨選項:

Let's Encrypt (Simple Windows ACME Client)
Renewal Period: 60
Certificate Store: WebHosting

ACME Server: https://acme-v01.api.letsencrypt.org/
Config Folder: C:\Users\linkFly\AppData\Roaming\letsencrypt-win-simple\htpsacme-v01.api.letsencrypt.org
Certificate Folder: C:\Users\linkFly\AppData\Roaming\letsencrypt-win-simpe\httpsacme-v01.api.letsencrypt.org
Loading Signer from C:\Users\linkFly\AppData\Roaming\letsencrypt-win-simpe\httpsacme-v01.api.letsencrypt.org\Signer

Getting AcmeServerDirectory
Loading Registration from C:\Users\linkFly\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\Registration

Scanning IIS Sites
2: SAN - IIS 365jz (D:\wwwroot\365siteweb)
3: SAN - IIS Test (D:\wwwroot\Demo)

W: Generate a certificate via WebDav and install it manually.
S: Generate a single San certificate for multiple sites.
F: Generate a certificate via FTP/ FTPS and install it manually.
M: Generate a certificate manually.
A: Get certificates for all hosts
Q: Quit
Which host do you want to get a certificate for:

Scanning IIS Sites 列出了在 IIS 中檢測到的當前已發布的網站,然后顯示了一系列指令 (W, S, F, M, A),決定你想要的操作:

  • W - 生成一個證書并通過 WebDav 來進行安裝

  • S - 給 IIS 當前已經發布的所有網站都部署一個證書

  • F - 生成一個證書通過FTP、FTPS安裝。

  • M - 通過配置手動生成證書

  • A - 給 IIS 當前已經發布的所有網站各自部署上對應的證書

我們這次要認證手動認證多個域名,輸入命令:

M

接著出現讓你輸入host( Enter a host name )。 比如 http://365jz.com 輸入的是365jz.com。

然后會讓你輸入要認證的多個域名 (注意這些域名要可以訪問的,因為一會兒會輪流訪問這些域名進行驗證),用,號分隔 (Enter all Alternative Names seperated by a comma:),然后我們輸入需要驗證的域名即可:

365jz.com,www.hugecrab.com,m.365jz.com,wap.365jz.com

hostname

接著輸入站點部署的位置 (Enter a site path ),輸入你的網站部署的位置即可:

D:\wwwroot\365siteweb

hosts

然后輸入是否要指定使用者 (用戶),輸入 N。( 一旦選擇了Y,會讓你輸入用戶名和密碼,證書會進行用戶認證 )。

接著會在你此次認證的項目根目錄下 (wwwroot) ,根據你剛才輸入的域名列表,生成對應的臨時認證文件, Let's Encrypt 服務器會訪問這個文件,結構大概如下:

---- wwwroot(認證的網站根目錄)
| -- .well-known
    | -- acme-challenge
            | -- DGz4z_A_VsgO3dilCAB8bkgurpPt-EFpLygmua3L6x8 (一個臨時文件,多個域名會有多個臨時文件)

files

然后 Let's Encrypt 服務器會根據剛才輸入的域名列表,用 HTTP 輪流訪問這些文件,注意這時候可能存在這個報錯:

******************************************************************************
The ACME server was probably unable to reach http://linkflys.com/.well-known/acme-challenge/DGz4z_A_VsgO3dilCAB8bkgurpPt

Check in a browser to see if the answer file is being served correctly.

*****************************************************************************

出現這個錯誤表示生成的這個臨時文件訪問不到,驗證不通過。

原因是因為 .well-know 這個文件夾帶了前綴.,IIS會認為是不可識別的 MIMEType ,只需要在網站根目錄下臨時加上 mimeMap 配置即可:

<?XML version="1.0" encoding="UTF-8"?><configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="." mimeType="text/plain" />
        </staticContent>
    </system.webServer></configuration>

記得驗證通過后,如果你的網站不需要這個 mimeMap 配置,要記得刪除。

如果驗證通過,會顯示下圖,這時候恭喜你驗證通過。

success

部署

打開 IIS,選擇對應的網站,右鍵 編輯綁定,點擊 新增, 類型 選擇https,則會彈出如下界面:

iis

輸入要綁定的域名,然后選擇頒發的證書即可。域名 日期 上午/下午這種格式就是 Let's Encrypt 此次頒發的證書。

這個時候,使用 https 協議訪問你的域名就可以啦,比如:https://365jz.com。

自動續訂

2016-12-29 更新, 距我首次為 IIS 部署到近日,剛好滿了 90 天,今天發現自己的證書已經過期,并且沒有自動續訂,于是又小小了折騰了一下。

按照 letsencrypt-win-simple 項目中介紹的用法和查閱的一些資料, 使用:letsencrypt --renew 命令即可以自動設立定時任務并自動更新,詳情請參考這里 和 這里。

我執行了這條命令,然而現在并沒有什么卵用,也沒有自動續訂證書,查了半天也沒有查到原因,于是特意來分享另外一種方案。

在網上找到了一個自動續訂的 GUI 軟件,叫做 certify,按照原作者的說法是可以自動配置、創建和自動續訂證書,并且到快要續訂的時候會自動發郵件給你。當然,這里我也只能等三個月之后才能確認是否如此。

首先先去 官網下載 certify ,然后在服務器上安裝。注意,certify 要求以管理員權限運行,并且要求服務器安裝了 PowerShell 4.0。 PowerShell 4.0 默認集成在 Windows Management Framework 4.0 中,而 Windows Management Framework 4.0 又依賴 Microsoft .NET Framework 4.5 (坑爹啊)。

可以查看下自己的服務器是否具備這些環境,然后按需更新即可。更新之后安裝 certify 運行。

點擊 New Contact 按鈕,創建一個聯系人,這個聯系人會在證書快要過期的時候收到續訂證書的提醒郵件,輸入自己常用的 email 即可。

certify

然后點擊 New Certificate,certify 會自動掃描 IIS 中的站點,然后選擇你要申請證書的域名。

certify

點擊 Request Certificate 獲取證書,certify 會在網站根目錄下生成 .well-known 文件夾,并且會自動配置 web.config,自動驗證證書。

驗證完成后會彈窗顯示證書已安裝。然后你就可以看到自己已經申請的證書詳細信息了,并且 IIS 中也已經自動給你配置好了證書。

certify

吐個槽,感覺這篇文章介紹的所有的東西,都被 certify 給搞定了...

在 certify 官網上作者說這個軟件還出于 beta/alpha 階段,所以某些地方可能會出問題,如果發現證書沒有續訂或者沒有生效,點擊一下 Auto Apply 就可以了。

最后記得把網站根目錄下的 .well-known 目錄給刪掉,保持網站目錄清潔。

查看證書

在服務器中查看證書

在服務器中,Win + R 打開運行,輸入 MMC,打開 控制臺 界面。

點擊頂部菜單欄 文件,然后點擊 添加/刪除管理單元

彈出的窗口中,在左側的 可用的管理單元 中點擊 證書,然后點中間的 添加,會彈出如下界面:

certificate

選擇 計算機賬戶,然后默認下一步完成,點擊 確定,即可看到證書列表。

展開 證書,再展開 中間證書頒發機構,選擇 證書,即可看到 Let's Encrypt 頒發的證書:

certificate

在chrome中查看證書

使用 HTTPS 訪問網址,點擊地址欄的小 綠鎖,然后點擊 詳細信息,這時候會彈出 chrome 調試工具,點擊 View certificate

chrome certificate

就會看到證書的詳細信息:

chrome certificate

其他

IIS 配置 web.config 實現自動 HTTPS 跳轉

為了保證域名統一,將訪問 http://www.hugecrab.com、http://365jz.com、https://www.365jz.com 的域名都跳轉到 https://365jz.com,IIS 可以進行如下配置 (需要安裝 IIS UrlRewrite 模塊,代碼注釋是為了方便理解,部署到線上請刪除中文注釋):

<?xml version="1.0" encoding="UTF-8"?><configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HostNameRule1">
                    <match url="(.*)" />
                    <!--匹配所有條件-->
                    <conditions logicalGrouping="MatchAny">
                        <!--當不是使用https協議訪問的時候-->
                        <add input="{HTTPS}" pattern="^OFF$" />
                        <!--并且訪問的host不是365jz.com這種,例如www.hugecrab.com-->
                        <add input="{HTTP_HOST}" pattern="^365jz\.com$" negate="true" />
                    </conditions>
                    <!--跳轉到https-->
                    <action type="Redirect" url="https://365jz.com/{R:1}" />
                </rule>
                <rule name="HTTPS redirect">
                    <match url="(.*)" />
                    <conditions>
                        <!--當使用HTTPS協議訪問-->
                        <add input="{HTTPS}" pattern="^ON$" />
                        <!--當訪問 http://www.hugecrab.com的時候 -->
                        <add input="{HTTP_HOST}" pattern="^365jz\.com$" negate="true" />
                    </conditions>
                    <!--跳轉到HTTPS-->
                    <action type="Redirect" url="https://365jz.com/{R:1}" redirectType="SeeOther" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer></configuration>

這里需要注意,想讓 https://www.365jz.com 也可以跳轉到 https://365jz.com,在申請 HTTPS 證書的時候,要把 www.365jz.com 這種域名也給申請上,否則瀏覽器會解析不出 https://www.365jz.com,因為在進行 HTTPS 加密握手的時候就會認證失敗。

chrome 調試中發現 HTTPS 改動不生效

HTTPS 第一次連接域名的時候會和證書頒發機構進行 HTTPS 證書認證,后續的連接會緩存起來,清緩存就好了

如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇


發表評論 (1835人查看,0條評論)
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼: 點擊我更換圖片
最新評論
------分隔線----------------------------
自拍偷拍福力视频,偷拍国际精品,麻豆一区福利电影,国产网红视频午夜福利,se视频大全,久久国产AV影院 新婚被老头播种怀孕| 经典在线国产自拍视频| 一进一出抽搐gif喷水少妇| 中文字幕乱码亚洲无线码| 中国国产xxxxx免费视频| 东北60岁肥胖老熟女| 啦啦啦在线观看免费直播| yy6090青苹果手机理论免费| 毛多水多欧美肥胖老妇性开放| 快播乱伦| a片在线观看全免费| jk制服爆乳裸体自慰流水| 日本高清视频在线网站| 欧洲日韩av无线在码| 亚洲av无码不卡在线观看| 超清无码一区二区三区| 亚洲gv天堂gv无码男同| 强行入侵女人a片| 女人高潮抽搐潮喷视频分腿| caoprom超碰公开国产| japanxxxxhd videos12| 成年网站未满十八禁视频| 夜夜躁狠狠躁日日躁| 日本三级香港三级人妇电影| 宝贝儿腿再开一点| yy6090青苹果影院| 性欧美暴力猛交69hd| 日本真人试看120秒做受| 人人爽天天碰狠狠添| 丁香婷婷激情综合俺也去| 法国a级情欲片| http://www.tianlewl.com