iis 7 ssl https教程配置方法
iis6(windows2003)下,ssl的所有配置資訊都儲存在iis中繼資料中,在使用者模式中加密解密(這會耗費很多的核心/使用者模式轉換)。在iis7中,http.sys在核心模式下操作ssl加密解密,相對於iis6,這種方式能提高近20%的效能。
當ssl運行於核心模式時,會將ssl綁定資訊儲存在兩個地方。第一個地方,綁定配置儲存在%windir%system32inetsrvconfigapplicationhost.config中,當網站啟動時,iis7發送綁定資訊給http.sys,同時http.sys會在特定的ip和連接埠監聽請求。第二個地方,與綁定相關聯的ssl配置儲存在http.sys配置中。使用netsh命令可以查看儲存在http.sys的ssl綁定配置:
netsh http show sslcert
當一個客戶開始串連並初始化ssl協商時,http.sys在它的配置中尋找這個ip:port對應的ssl配置。這個ssl配置必須包括認證hash值和名稱:
l 在applicationhost.config中確認這個綁定是否存在
l http.sys中是否包含有效認證的hash值以及命名是否存在
選擇認證時,需要考慮以下問題:
是否想讓終端使用者能夠通過你提供的認證確認你伺服器的唯一性?
如果是的,則
要麼建立一個認證請求,並且發送認證請求到認證權威機構(ca),比如verisign或者geotrust;
要麼從intranet的線上ca那裡擷取一個認證
瀏覽器一般用三樣東西來確認伺服器憑證的有效性:
1. 當前日期在認證的有效期間範圍內
2. 認證的“common name”(cn)與請求中的主機名稱相匹配。比如,如果客戶發起了一個到http://www.contoso.com的請求,則cn必須是這樣的:http://www.contoso.com/
3. 認證的發行者是已知的和受到信任的ca
如果其中有1項失敗,瀏覽器就會警告使用者。如果你有個internet網站或者你不怎麼熟的intranet使用者,那你就需要確保這3項是都通過的。
自簽名的認證可以用你自己的電腦建立。如果終端使用者不重要,或者他們信任你的伺服器,又或者用於測試環境,則這種自我簽署憑證將會非常有用。
使用wmi來綁定ssl認證
使用wmi命名空間,是不能夠請求或者建立認證。建立ssl綁定
以下指令碼展示了如何建立ssl綁定,以及添加相應資訊到http.sys中:
set oiis = getobject("winmgmts:rootwebadministration")
''''''''''''''''''''''''''''''''''''''''''''' ' create ssl binding ''''''''''''''''''''''''''''''''''''''''''''' oiis.get("sslbinding").create _ "*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "my"
''''''''''''''''''''''''''''''''''''''''''''' ' add ssl binding to site '''''''''''''''''''''''''''''''''''''''''''''
set obinding = oiis.get("bindingelement").spawninstance_ obinding.bindinginformation = "*:443:" obinding.protocol = "https"
set osite = oiis.get("site.name='default web site'") arrbindings = osite.bindings
redim preserve arrbindings(ubound(arrbindings) + 1) set arrbindings(ubound(arrbindings)) = obinding
osite.bindings = arrbindings set opath = osite.put_
注意:認證的hash值和名稱必須引用了你服務其上真實且有用的認證。如果其中有一項虛假,就會出現錯誤。
配置ssl設定
以下指令碼展示了如何通過iis7的wmi提供者來設定ssl。
const ssl = 8
set oiis = getobject("winmgmts:rootwebadministration")
set osection = oiis.get( _
"accesssection.path='machine/webroot/apphost',location='default web site'")
osection.sslflags = osection.sslflags or ssl
osection.put_
ø 使用iis管理器來綁定ssl認證
擷取一個認證
在樹目錄中選擇伺服器節點,在右面雙擊server certificates表徵圖:
iis 7 ssl https配置方法
iis6(windows2003)下,ssl的所有配置資訊都儲存在iis中繼資料中,在使用者模式中加密解密(這會耗費很多的核心/使用者模式轉換)。在iis7中,http.sys在核心模式下操作ssl加密解密,相對於iis6,這種方式能提高近20%的效能。
當ssl運行於核心模式時,會將ssl綁定資訊儲存在兩個地方。第一個地方,綁定配置儲存在%windir%system32inetsrvconfigapplicationhost.config中,當網站啟動時,iis7發送綁定資訊給http.sys,同時http.sys會在特定的ip和連接埠監聽請求。第二個地方,與綁定相關聯的ssl配置儲存在http.sys配置中。使用netsh命令可以查看儲存在http.sys的ssl綁定配置:
netsh http show sslcert
當一個客戶開始串連並初始化ssl協商時,http.sys在它的配置中尋找這個ip:port對應的ssl配置。這個ssl配置必須包括認證hash值和名稱:
l 在applicationhost.config中確認這個綁定是否存在
l http.sys中是否包含有效認證的hash值以及命名是否存在
選擇認證時,需要考慮以下問題:
是否想讓終端使用者能夠通過你提供的認證確認你伺服器的唯一性?
如果是的,則
要麼建立一個認證請求,並且發送認證請求到認證權威機構(ca),比如verisign或者geotrust;
要麼從intranet的線上ca那裡擷取一個認證
瀏覽器一般用三樣東西來確認伺服器憑證的有效性:
1. 當前日期在認證的有效期間範圍內
2. 認證的“common name”(cn)與請求中的主機名稱相匹配。比如,如果客戶發起了一個到http://www.contoso.com的請求,則cn必須是這樣的:http://www.contoso.com/
3. 認證的發行者是已知的和受到信任的ca
如果其中有1項失敗,瀏覽器就會警告使用者。如果你有個internet網站或者你不怎麼熟的intranet使用者,那你就需要確保這3項是都通過的。
自簽名的認證可以用你自己的電腦建立。如果終端使用者不重要,或者他們信任你的伺服器,又或者用於測試環境,則這種自我簽署憑證將會非常有用。
使用wmi來綁定ssl認證
使用wmi命名空間,是不能夠請求或者建立認證。建立ssl綁定
以下指令碼展示了如何建立ssl綁定,以及添加相應資訊到http.sys中:
set oiis = getobject("winmgmts:rootwebadministration")
''''''''''''''''''''''''''''''''''''''''''''' ' create ssl binding ''''''''''''''''''''''''''''''''''''''''''''' oiis.get("sslbinding").create _ "*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "my"
''''''''''''''''''''''''''''''''''''''''''''' ' add ssl binding to site '''''''''''''''''''''''''''''''''''''''''''''
set obinding = oiis.get("bindingelement").spawninstance_ obinding.bindinginformation = "*:443:" obinding.protocol = "https"
set osite = oiis.get("site.name='default web site'") arrbindings = osite.bindings
redim preserve arrbindings(ubound(arrbindings) + 1) set arrbindings(ubound(arrbindings)) = obinding
osite.bindings = arrbindings set opath = osite.put_
注意:認證的hash值和名稱必須引用了你服務其上真實且有用的認證。如果其中有一項虛假,就會出現錯誤。
配置ssl設定
以下指令碼展示了如何通過iis7的wmi提供者來設定ssl。
const ssl = 8
set oiis = getobject("winmgmts:rootwebadministration")
set osection = oiis.get( _
"accesssection.path='machine/webroot/apphost',location='default web site'")
osection.sslflags = osection.sslflags or ssl
osection.put_
ø 使用iis管理器來綁定ssl認證
擷取一個認證
在樹目錄中選擇伺服器節點,在右面雙擊server certificates表徵圖:
在樹目錄中選擇伺服器節點,在右面雙擊server certificates表徵圖: 單擊create self-signed certificate…按鈕: 輸入新認證的名字後單擊ok。現在你有了一個自我簽署憑證。這個認證被標記為”伺服器端驗證” 建立ssl綁定選擇一個網站,在actions面板中單擊bindings…。會顯示出添加、修改、刪除綁定對話方塊。單擊add…按鈕添加新的ssl綁定。預設設定是80連接埠,在類型下拉框中選擇https,在ssl certificate下拉框中選擇你剛才建立的自我簽署憑證名字,單擊ok。 現在你已經完成ssl綁定的建立工作了,剩下的就是要確認是否工作正常了。 ø
ssl綁定的確認在actions面板中,在browse web site下,單擊剛才增加的綁定 由於這個認證是個自簽名的認證,ie7會顯示一個錯誤頁面。單擊continue to this website(not recommended).繼續 ø
配置ssl設定當你要求使用者必須使用認證,又或者必須ssl方式串連時,你需要配置ssl設定。雙擊ssl settings如: