監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關閉

使用Microsoft SOAP Toolkit 2.0建立安全Web服務

申請免費試用、咨詢電話:400-8352-114

AMTeam.org

使用Microsoft SOAP Toolkit 2.0建立安全Web服務


Kirill Gavrylyuk

測試組長,Web 數據 SOAP 組

Microsoft Corporation

2001年7月

摘要: Microsoft SOAP Toolkit 2.0 提供一個靈活的框架,可以為各種 Intranet 和 Internet 解決方案構建可伸縮的 Web 服務。在這兩種方案中,安全性都是建立可靠服務的重要因素。SOAP Toolkit 2.0 支持基于 IIS 安全基礎結構的 Internet 安全性。本文介紹了如何使用 Microsoft SOAP Toolkit 2.0 建立安全解決方案。

簡介

與任何分布式協(xié)議相同,成功的 SOAP 應用程序的關鍵在于獲得安全性權限。SOAP 標準不指定任何安全性機制,而是將安全處理委派給傳輸層。對 SOAP Toolkit 2.0 而言,傳輸層是 HTTP。在 HTTP 上運行的 SOAP 基本上是一個 Web 應用程序,與其它在 IIS 上運行的 ASP 或 ISAPI 應用程序很相似。SOAP 的身份驗證、授權和加密機制與您通常使用的 Web 應用程序完全相同。如果熟悉 Web 安全性,也就了解了 SOAP 安全性。如果對 Web 應用程序不夠熟悉,本文將為您提供充分的入門知識背景。每個主題都介紹的非常詳細。如果需要更詳細的信息,請參見 MSDN Library 或由 Michael Howard、Marc Levy 和 Richard Waymire 編著的《設計 Microsoft Windows 2000 基于 Web 的安全應用程序》。

重要規(guī)則

根據《設計 Microsoft Windows 2000 基于 Web 的安全應用程序》中闡述的觀點,我們首先從概述建立安全 Web 服務應遵守的重要規(guī)則開始。安全 Web 服務可歸納為以下七類:

身份驗證

授權

審核

保密

完整性

可用性

認可

身份驗證是一個實體(也稱為主題)驗證另一個實體是否符合它所聲稱的身份的過程。SOAP Toolkit 2.0 支持以下身份驗證方法:

基本

摘要式

Kerberos

Windows NTLM

SSL 客戶端證書

基于 SOAP 頭的身份驗證

代理身份驗證

本文檔介紹如何配置服務器端和客戶端使用上述身份驗證方法。

授權是為經過身份驗證的用戶提供資源訪問權限的機制。只要使用 SOAP Toolkit 建立的 Web 服務基于 IIS,這些服務就可以利用 IIS 支持的授權機制。本文檔也將講述用戶應注意的一些問題。

審核的目的是為了收集有關對 Web 服務的成功和失敗請求的信息??梢允褂?IIS 審核功能和 SOAP Toolkit 跟蹤功能實現(xiàn)這一目的。本文檔沒有介紹這方面的內容,您可以參考 IIS 文檔、netmon 日志和 SoapServer 對象的 SOAP Toolkit 幫助。

保密是指確保攻擊者看不到客戶端與服務器之間的通信信息。完整性是指保護數據不被刪除或更改(不管是惡意還是不慎)的能力。為了實現(xiàn)保密和完整性,SOAP Toolkit 允許使用安全套接字層 (SSL) 加密數據。本文檔將介紹如何啟用 IIS 上的 SSL 支持以及如何將其用于客戶端。

可用性確保不會拒絕合法用戶對請求的資源的訪問??捎眯约夹g的示例包括負載平衡以及硬件和軟件的故障轉移。SOAP Toolkit 已成功通過了 Microsoft Application Center 負載平衡軟件的測試。

認可是一種技術,為發(fā)生的操作提供證據以防止客戶端在事務處理中欺詐或否認。SOAP Toolkit 采用 IIS 提供的認可功能。本文檔不對認可進行介紹。

身份驗證

本節(jié)介紹了 SOAP Toolkit 支持的身份驗證方法,包括其優(yōu)點和缺點,以及如何對其進行設置。還介紹了 SOAP Toolkit 在支持平臺上的已知局限性,以及服務器具有多個可用身份驗證方案時 SOAP Toolkit HTTP 連接器的行為。

身份驗證握手是如何進行的?每個身份驗證握手都是如下開始:

客戶端發(fā)出頁面請求。

服務器返回狀態(tài) 401“拒絕訪問”和一組 HTTP 頭。

WWW 驗證它支持的每一個身份驗證方法。

如何使用 SoapClient 驗證自身?如果 Web 服務要求身份驗證(基本、摘要式、NTLM 或 Kerberos),需要為 SoapClient 提供用戶名和密碼,以將其傳遞到 Web 服務。也可以使用 SoapClient.ConnectorProperty 包完成此操作:

dim SoapClient

set SoapClient = createobject("MSSoap.SoapClient")

SoapClient.mssoapinit("
http://your-server/webservice/service.wsdl ")

SoapClient.ConnectorProperty("AuthName") = "username"

SoapClient.ConnectorProperty("AuthPassword") = "userpwd"

Quote = SoapClient.GetQuote()

注意:使用 SOAP Toolkit 2.0 時,只有在調用遠程方法時才必須設置 SoapClient 上的 ConnectorProperties。

如果包含服務描述的 wsdl 文件所在的虛擬目錄也要求身份驗證,可以在 URL 內傳遞用戶名和密碼:

SoapClient.mssoapinit

("http:// username:userpwd@your-server/webservice/service.wsdl ")

人們往往錯誤地認為將用戶名和密碼放入 URL 是不安全的。事實并非如此。在發(fā)送 HTTP 請求之前,客戶端 HTTP 代碼將分析 URL,移出用戶名和密碼,并在身份驗證握手時使用此用戶名和密碼。事實上,代碼:

SoapClient.ConnectorProperty("AuthName") = "username"

SoapClient.ConnectorProperty("AuthPassword") = "userpwd"

Quote = SoapClient.GetQuote()

與下列代碼的功能相同(假設 WSDL 文件 service.wsdl 指向自身):

SoapClient.ConnectorProperty("EndPointURL")=

"http:// username:userpwd@your-server/webservice/service.wsdl"

Quote = SoapClient.GetQuote()

虛擬目錄設置如何要求身份驗證?若要在服務器上更改特定虛擬目錄的身份驗證設置,請執(zhí)行下列操作:

在 IIS 4.0 和 IIS 5.0 上,用鼠標右鍵單擊虛擬目錄,單擊“屬性”,然后單擊“目錄安全性”選項卡。

在“匿名訪問和身份驗證控制”之下,單擊“編輯”。將出現(xiàn)以下兩個選項:

匿名訪問

匿名訪問不是身份驗證方法。Windows 2000 和 NT4 要求用戶在訪問任何資源之前驗證自身,這種情況下,IIS 使用一個特殊帳戶作為匿名 Web 用戶(默認為 IUSR_machinename)??梢詥螕簟澳涿L問編輯”按鈕更改此默認匿名 Web 用戶的帳戶或其密碼。

注意:小心不要將特權帳戶用作匿名 Web 用戶帳戶。若要將虛擬目錄設置為要求身份驗證,需要清除“匿名訪問”標記。

基本身份驗證

若要將虛擬目錄設置為要求基本身份驗證,需要:

轉至“屬性”/“目錄安全性”/“編輯匿名訪問驗證控制”菜單。

取消選中“匿名訪問”。

啟用“基本身份驗證”。將顯示一條警告消息。如果要繼續(xù)使用基本身份驗證,請單擊“確定”。

單擊“基本身份驗證編輯”按鈕。輸入域名。如果要使用默認域名,請輸入“”(不加引號)。

缺點:基本身份驗證是非常不安全的。用戶名和密碼以不加密的 Base64 編碼形式通過線路傳輸。問題不僅在于攻擊者能訪問基本身份驗證保護的資源,他們還能夠獲取您的用戶名和密碼的實際值,并用來訪問其它更安全的資源。使用 SSL 連接會更安全一些,因為 SSL 握手在身份驗證握手之前發(fā)生。這樣,可以通過安全連接傳送用戶名和密碼。

優(yōu)點:基本身份驗證是 HTTP 1.0 協(xié)議的一部分,是得到最廣泛支持的身份驗證方案。

結論:基本身份驗僅當與 SSL 功能共同使用時才是一個好的解決方案。如果希望您的服務具有安全性和高互操作性,請使用本方法。

摘要式身份驗證

這是一個相對較新的方法,是 HTTP1.1 協(xié)議的一部分,但沒有被 Web 服務器廣泛采用。對于 Windows,它只在出現(xiàn) Windows 2000 之后才被采用。若要在 IIS 5.0 上設置摘要式身份驗證,請執(zhí)行下列步驟:

轉至“屬性”/“目錄安全性”/“編輯匿名訪問”和“身份驗證控制”菜單。

取消選中“匿名訪問”。

啟用“摘要式身份驗證”。將顯示一條警告消息。如果要繼續(xù)使用摘要式身份驗證,請單擊“確定”。

使用摘要式身份驗證具有以下要求:

運行 Windows 2000 Server 的系統(tǒng)位于 Active Directory 域。

在域控制器上安裝 iissuba.dll 文件。該 DLL 在匿名訪問和摘要式身份驗證期間發(fā)揮作用。

在 Active Directory 設置中使用摘要式身份驗證的所有帳戶的日志記錄都啟用“使用可逆加密存儲密碼”選項。這是對 Active Directory 中帳戶密碼的純文本副本進行摘要式身份驗證訪問時所必需的。這樣,可確保存儲這些密碼的服務器是非常安全的。

缺點:如果摘要式身份驗證不與 SSL 一起使用,將不能保護資源免于重復攻擊。目前尚未在其它 HTTP 客戶端和服務器中被廣泛采用。在 IIS 5.0 上的實現(xiàn)具有局限性,如果通過摘要式身份驗證登錄到服務器,標識將無法委派到其它服務器。這就將服務器限制為服務器方案。

優(yōu)點:摘要式身份驗證簡單,可能會越來越普及。它比基本身份驗證更安全,因為盡管仍可能遭到重復攻擊,但攻擊者無法獲得訪問其它資源所要求的用戶名和密碼的實際值。

結論:摘要式身份驗證可以用于保護通過 Web 服務公開到 Internet 的低價值資源。在 SSL 上使用基本身份驗證可以獲得更好的性能,因為 SSL 速度慢,但不會象基本身份驗證那樣將用戶名和密碼暴露給攻擊者。

Windows 集成身份驗證 (NTLM)

Windows 集成身份驗證(IIS 4 中的 Windows 請求/響應身份驗證)在 Windows 2000 和 NT4 上表現(xiàn)為不同的方法。在具有 IIS 4 的 NT 4 下,它描述為 NTLM 身份驗證。若要將 IIS 服務器設置為要求 Windows 集成身份驗證(在 IIS 5 上)或 NTLM(在 IIS 4 上),請完成基本或摘要式身份驗證步驟 1 和 2,并在步驟 3 中選擇相應的復選框。

NTLM 身份驗證(NT LAN Manager 或 Windows 請求/響應身份驗證)是本機 Windows 身份驗證方案。如果未指定用戶名/密碼,將使用當前登錄用戶憑據。通過 Intranet 訪問時,如果用戶已經登錄的域與 Web 服務器的域相同,而且使用自己的憑據,則這些用戶不必重新進行身份驗證。在 NTLM 握手過程中,客戶端用服務器(請求)發(fā)送的隨機值散列密碼,然后將此散列(響應)發(fā)送給服務器。這意味著密碼不會通過線路顯式發(fā)送。人們通常錯誤地認為 NTLM 只能用于 Intranet 解決方案,不應用于 Internet。實際上,NTLM 可以用于 Internet,只不過用于 Intranet 時速度更快,因為它依賴于 Windows 登錄過程。若要同時傳送域名和登錄名稱,請使用 SAM 帳戶名稱:

SoapClient.ConnectorProperty("AuthName") = "DOMAINusername"

缺點:NTLM 只能用于 Windows。與基本和摘要式身份驗證方案一樣,它只對客戶端進行身份驗證。使用 NTLM 時,服務器上的模擬線程無法將自己的權限委派給另一臺服務器。這限制了 NTLM 身份驗證在“服務器至服務器”方案中的使用;但仍可以在這種方案中使用基本和摘要式身份驗證。NTLM 不能通過代理工作。

優(yōu)點:NTLM 比基本和摘要式身份驗證更安全,因為它不容易受到重復攻擊。由于依賴 Windows 登錄過程,因此在 Intranet 方案中速度很快。

結論:推薦將 NTLM 用于“客戶端至服務器”Intranet 解決方案。也可用于限制為 Windows 體系結構的公司 Internet 解決方案。

Kerberos 身份驗證

Kerberos 身份驗證是在 Windows 2000 中出現(xiàn)的。當指定 IIS 5 使用 Windows 集成身份驗證時,IIS 5 和 SoapClient HTTP 連接器通過協(xié)商協(xié)議確定是使用 NTLM 還是使用 Kerberos。如果在 Windows 2000 上運行 SoapClient,則使用 Kerberos,否則使用 NTLM。指定 SoapClient 上用戶憑據時所應用的規(guī)則與 NTLM 相同。

缺點:僅 Windows 2000 平臺支持 Kerberos。Kerberos 要求具有一個可向其請求服務票證的 KDC 服務器。通常,人們不想將自己的 KDC 服務器公開于 Internet。因此,Kerberos 通常只限于 Intranet 應用。默認情況下,只有服務器的 NetBIOS 名稱在 Kerberos KDC 中進行了注冊。如果您希望請求票證時使用 IIS 服務器的 DNS 名稱,則必須在 KDC 中注冊 DNS 名稱。

優(yōu)點:與 NTLM 相比,Kerberos 速度更快、更安全,而且同時對服務器和客戶端進行身份驗證。Kerberos 不是 Windows 專有的身份驗證方案,也可以由其它平臺實現(xiàn)。很重要的一點在于它允許將標識委派給另一臺計算機,因此可以在“服務器至服務器”方案中使用。

結論:推薦在基于 Windows 2000 的 Intranet 解決方案中使用 Kerberos。

有時,需要服務器支持多種身份驗證方案(以便允許對多種類型的客戶端進行身份驗證)。這種情況下,IIS 將發(fā)送多個 WWW 身份驗證頭,詳細說明它支持的身份驗證方案,客戶端將選擇它支持的第一個身份驗證方案。了解 SoapClient 在特定情況下選擇哪種身份驗證方案非常重要。請參考表 1,其中描述了 SOAP Toolkit 2.0(更準確的說是 HttpConnector)在各種平臺上的行為。

表 1:SOAP Toolkit 2.0 HttpConnector 與 IIS 5.0 的比較

基本 摘要式 Windows 集成 Windows 98 Windows Me Windows NT 4.0 Windows 2000 X X   基本 基本 基本 摘要式 X   X NTLM NTLM NTLM Kerberos   X X NTLM NTLM NTLM Kerberos X X X NTLM NTLM NTLM Kerberos

左邊的三列代表服務器提供的身份驗證方案。每一行都代表服務器允許的身份驗證方案集的一個不同組合。右邊的四列顯示了可以運行 SOAP Toolkit Client (HttpConnector) 的平臺。例如,如果服務器既允許基本身份驗證也允許摘要式身份驗證,SOAP 將在除 Windows 2000 之外的所有平臺上選擇基本身份驗證。

表 2 顯示了 Microsoft SOAP 行為與 IIS 4.0 服務器的比較。

表 2:SOAP Toolkit 2.0 HttpConnector 與 IIS 4.0 的比較

基本 Windows 集成 Windows 98 Windows Me Winodws NT 4.0 Windows 2000 X X NTLM NTLM NTLM NTLM

身份驗證支持中的已知局限性:SOAP Toolkit 2.0 使用 NTLM/Kerberos 同時發(fā)送域名和帳戶名時具有某種局限性。但已經在 SP2 中進行了修正。

代理支持和身份驗證

SOAP Toolkit 廣泛支持通過代理服務器進行通信,包括在代理服務器上進行身份驗證。我們將具體說明以下方案,講述如何通過代理服務器使用 Web 服務。

直接訪問

默認情況下,SOAP Toolkit HttpConnector 嘗試對 Web 服務進行直接調用。如果您不具有 Web 服務的直接訪問權限(例如,Web 服務位于您的 Intranet 之外,必須通過代理才能訪問),以下腳本將失敗:

dim SoapClient

set SoapClient = createobject("MSSoap.SoapClient")

SoapClient.mssoapinit("
http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")

Quote = SoapClient.GetQuote()

通過默認代理訪問

試圖訪問 Intranet 之外的網站時,Internet Explorer Web 瀏覽器將通過在 IE 設置中指定的默認代理服務器。您可以通過 IE/“工具”/“選項”/“連接”/“局域網設置”對話框查看這些設置。若要使 Microsoft SOAP Toolkit (HTTPConnecter) 使用這些設置,應將 UseProxy 屬性設置為 TRUE。示例:

dim SoapClient

set SoapClient = createobject("MSSoap.SoapClient")

SoapClient.mssoapinit("
http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")

SoapClient.ConnectorProperty("UseProxy") = true

Quote = SoapClient.GetQuote()

繞過代理服務器列表。請注意,IE 代理設置中有一個主機列表,您可以連接這些主機來繞過代理服務器。

轉至 IE/“工具”/“選項”/“連接”/“局域網設置”對話框。

若要繞過本地服務器,請啟用設置“對于本地地址不使用代理服務器”。

若要在連接到其它特定服務器時繞過代理,請單擊“高級”按鈕??梢栽凇袄狻本庉嬁丶辛谐鲆@過的服務器,各個服務器名稱之間用分號隔開。可以使用通配符“*.soap-company.com”繞過名稱中含有 .soap-company.com 的所有服務器。

需要代理服務器來允許繞過本地 Intranet 之外的任何服務器。請注意,用于 HTTP 和用于通過 SSL (HTTPS) 連接的代理服務器不同。代理應允許使用任一協(xié)議,以便 SSL 正常工作。

局限性:使用默認代理時,在 Windows 2000 和 Windows NT4 上使用 Microsoft SOAP Toolkit 2.0 HttpConnector 有一個已知問題:它不理解默認 IE 代理設置的“繞過代理”列表。如果選中了“對于本地地址不使用代理服務器”并且在 URL 中指定的主機名不包含“.”,它將繞過代理服務器。但它不理解在 IE 代理設置“高級”菜單中的“例外”文本框中指定的復雜模板。

通過指定代理連接

可以指定哪個代理使用 ProxyServer 和 ProxyPort 連接器屬性:

set SoapClient = createobject("MSSoap.SoapClient")

SoapClient.mssoapinit("
http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")

SoapClient.ConnectorProperty("UseProxy") = true

SoapClient.ConnectorProperty("ProxyServer") = "yourproxy"

SoapClient.ConnectorProperty("ProxyPort") = 80

Quote = SoapClient.GetQuote()

請注意,如果使用 ProxyServer 屬性,則不必將 UseProxy 設置為 True,它將自動設置。

代理身份驗證

代理服務器可以在允許連接之前要求您對自身進行身份驗證。例如,可以使用它限制在公司 Intranet 內使用 Internet。代理服務器可使用上述所有身份驗證方案。Microsoft SOAP Toolkit 2.0 允許您指定代理身份驗證的用戶名和密碼:

set SoapClient = createobject("MSSoap.SoapClient")

SoapClient.ConnectorProperty("UseProxy") = true

SoapClient.mssoapinit("
http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")

SoapClient.ConnectorProperty("ProxyServer") = "secureproxy"

SoapClient.ConnectorProperty("ProxyPort") = 80

SoapClient.ConnectorProperty("ProxyUser") = "username"

SoapClient.ConnectorProperty("ProxyPassword") = "password"

Quote = SoapClient.GetQuote()

如果代理要求 NTLM 身份驗證,可以省略用戶名和密碼,這是將使用當前登錄憑據。如果需要指定代理 NTLM 身份驗證的域名,請?zhí)砑印癉OMAINusername”進行服務器身份驗證。

局限性。Microsoft SOAP Toolkit 2.0 不支持通過要求身份驗證的代理連接到也要求身份驗證的服務器。另外,通過要求身份驗證的代理的 SSL 連接在 Windows 2000 和 Windows NT4 上不能正常工作。

SSL 和客戶端證書

在本節(jié)中,我們將具體討論如何通過安全套接字層 (SSL) 和客戶端證書支持進行連接。我們還將討論 Microsoft SOAP Toolkit 2.0 在使用客戶端證書支持的支持平臺上的已知局限性。

通常認為 SSL 只是一種加密機制,其實它還提供身份驗證。若要使 IIS 4.0/IIS 5.0 支持 SSL 連接,需要獲取 X.509 證書,并將其安裝在服務器上。

何謂 X.509 證書?

證書是一種結構,其中包含主題、頒發(fā)者名稱、有效期和其它特征等信息。(有關證書的詳細信息,請參閱由 Michael Howard 編著的《設計 Microsoft Windows 2000 基于 Web 的安全應用程序》。) 每個證書都與用于 SSL 加密的一對私有和公用密鑰相關。SSL 始終使用 X.509 證書對 Web 服務器進行身份驗證。

若要獲得證書,需要向證書頒發(fā)機構發(fā)出證書請求。證書頒發(fā)機構 (CA) 是頒發(fā)證書的單位。當 CA 向主題(發(fā)出請求的實體)頒發(fā)證書時,它驗證該主題是否與它所聲稱的相符,并簽發(fā)新證書和私有密鑰。這樣,主題可以信任 CA。如果信任頒發(fā)證書的 CA,則表示信任向您提供此證書的主題。根目錄證書保證 CA 的可信性。多個 CA 可以形成一條信任鏈:如果信任根 CA,就信任具有根 CA 頒發(fā)的證書的中間 CA,因此將信任具有中間 CA 頒發(fā)的證書的所有主題。

“信任”的實際意義是什么?可以將 CA 的證書放入“受信任的根目錄證書頒發(fā)機構”存儲區(qū)來表示信任該 CA。所有證書都存儲在所謂的證書存儲區(qū)中。有多個默認存儲區(qū),例如:

CURRENT_USERMY,個人證書存儲區(qū),用于當前登錄的用戶,對其它登錄用戶不可見

LOCAL_MACHINEMY,個人證書存儲區(qū),用于所有用戶

CURRENT_USERRoot,受信任的根目錄證書頒發(fā)機構,包含當前用戶信任的根 CA 的證書,如果證書具有到根 CA 證書的證書路徑,則當前用戶信任該證書的有效性。

LOCAL_MACHINERoot,相同,但被所有用戶信任

具有被默認信任的根 CA,例如 Verisign。盡管我們的示例將使用一個試用版的 Verisign 證書,但是它們是由不被默認信任的 Verisign 測試機構頒發(fā)的。

在服務器上啟用 SSL

本節(jié)介紹如何創(chuàng)建證書請求、從 Verisign 站點獲得試用版的測試服務器端證書,并將其安裝在 Web 服務器上。

使用 IIS 4.0 啟用服務器上的 SSL

用鼠標右鍵單擊要啟用 SSL 的網站,并選擇“屬性”。

在“目錄安全性”選項卡上,單擊“編輯安全通信”。

在對話框中,單擊“密鑰管理器”。

展開樹狀視圖中的“本地計算機”節(jié)點。用鼠標右鍵單擊 WWW 葉,并選擇“新建密鑰”。這將啟動稱為“密鑰管理器”的密鑰請求向導。
選擇“將請求放入要發(fā)送到頒發(fā)機構的文件中”和一個文件名。單擊“下一步”。

輸入一個易記的密鑰名稱。輸入密碼,當獲取由頒發(fā)機構頒發(fā)的證書時需要此密碼。對于加密密鑰字節(jié)長度,請選擇 1024(1024 為推薦長度,某些頒發(fā)機構不頒發(fā)小于此長度的證書)。單擊“下一步”。

輸入您的組織和部門名稱。輸入等同于完整站點名稱的公用名稱,例如
www.yoursite.com。在啟動 SSL 連接之前,客戶端將檢查站點名稱是否與證書的公用名稱相同。單擊“下一步”。

輸入國家(地區(qū))、省/自治區(qū)、市/縣所在地。證書頒發(fā)機構可能檢查這些信息是否一致,以確保輸入的信息有效。輸入省時,請輸入完整的省名稱。

輸入管理服務器的人員的姓名、電子郵件地址和電話號碼。這些信息不包含在證書中,但證書頒發(fā)機構需要這些信息。

包含您的請求的文件已經創(chuàng)建。該文件為 Base64 編碼格式。在此過程中,IIS 還將為該證書請求創(chuàng)建一個私有密鑰和一個公用密鑰。私有密鑰將保存在您的計算機上,而公用密鑰將隨請求一起發(fā)往 Verisign,并用以加密證書數據。

轉至
www.verisign.com(英文),并單擊“Get Trial SSL ID”。注冊證書時,會要求您提供 CSR(證書簽名請求)。復制并粘貼您的請求文件中自行“BEGIN NEW CERTIFICATE REQUEST;”之后的內容,否則,將會出錯。Verisign 以郵件形式將測試服務器端證書發(fā)送給您。該過程同樣適用于商業(yè)證書,不同之處在于它收費并仔細驗證提交的信息。

確保從證書頒發(fā)機構獲得的證書是 Base64 編碼的。如果證書頒發(fā)機構是 Verisign,則您可以通過電子郵件獲得證書。創(chuàng)建一個擴展名為 .cer 的空文件,復制行“BEGIN CERTIFICATE”和“END CERTIFICATE”之間(包含這兩行)的所有內容并粘貼到該文件。

轉至要啟用 SSL 的站點的“屬性”/“目錄安全性”選項卡。單擊“編輯安全通信”,然后單擊“密鑰管理器”。

在對話框中,展開樹狀視圖中的“本地計算機”節(jié)點,再展開 WWW 葉,將顯示您的證書請求的密鑰。由于該證書尚未安裝,它標記為紅色。用鼠標右鍵單擊該證書,并選擇“安裝密鑰證書”。選擇具有要安裝的證書的文件。將提示您提供以前設置的密碼。輸入密碼?,F(xiàn)在,您的證書已安裝。

使用 IIS 5.0 啟用服務器上的 SSL

用鼠標右鍵單擊要啟用 SSL 的網站,并選擇“屬性”。

在“目錄安全性”選項卡上,單擊“編輯安全通信”。

單擊“服務器證書”打開服務器證書向導。該向導將記憶網站的當前狀態(tài),例如您是否已擁有服務器證書。(現(xiàn)在假設您沒有證書。)

在證書向導中,單擊“下一步”,選擇“創(chuàng)建一個新證書”,然后單擊“下一步”。

選擇“現(xiàn)在準備請求,但稍后發(fā)送”,并單擊“下一步”。

輸入證書的友好名稱。該名稱不會在證書結構中使用,但作為區(qū)分請求和證書的一種方法。選擇公用密鑰長度。推薦密鑰長度不小于 1024 字節(jié)。單擊“下一步”。

輸入可以由頒發(fā)機構驗證的組織名稱和部門名稱,如果您請求用于商業(yè)目的的真實證書,請輸入有效名稱。輸入要被認證的計算機的名稱。注意:它必須等同于您的完整站點名稱,例如 www.yoursite.com。單擊“下一步”。

輸入國家(地區(qū))、省/自治區(qū)、市/縣所在地。請輸入有效信息,證書頒發(fā)機構將檢查這些信息是否一致。輸入省時,請輸入完整的省名稱。單擊“下一步”。

輸入用于保存請求的請求文件名稱。單擊“下一步”。

將摘要顯示您輸入的內容。確認內容正確,并單擊“下一步”完成向導。包含請求的文件將以 Base 64 格式保存。

包含您的請求的文件已經創(chuàng)建。該文件為 Base64 編碼格式。在此過程中,IIS 還將為該證書請求創(chuàng)建一個私有密鑰和一個公用密鑰。私有密鑰將保存在您的計算機上,而公用密鑰將隨請求一起發(fā)往 Verisign,并用以加密證書數據。

轉至
www.verisign.com(英文),并單擊“Get Trial SSL ID”。注冊證書時,會要求您提供 CSR(證書簽名請求)。復制并粘貼您的請求文件中自行“BEGIN NEW CERTIFICATE REQUEST;”之后的內容,否則,將會出錯。Verisign 以郵件形式將測試服務器端證書發(fā)送給您。該過程同樣適用于商業(yè)證書,不同之處在于它收費并仔細驗證提交的信息。

確保從證書頒發(fā)機構獲得的證書是 Base64 編碼的。如果證書頒發(fā)機構是 Verisign,則您可以通過電子郵件獲得證書。創(chuàng)建一個擴展名為 .cer 的空文件,復制行“BEGIN CERTIFICATE”和“END CERTIFICATE”之間(包含這兩行)的所有內容并粘貼到該文件。

轉至要啟用 SSL 的站點的“屬性”/“目錄安全性”選項卡。單擊“編輯安全通信”,然后單擊“服務器證書”。服務器證書向導知道您剛剛提出證書請求,所以期望您已頒發(fā)證書并準備好在 IIS 5.0 中安裝。

選擇“處理掛起申請并安裝證書”,并單擊“下一步”。選擇從證書頒發(fā)機構獲得的證書的文件名。單擊“下一步”。查看證書概述,并單擊“下一步”。單擊“完成”。您的 Web 服務器證書已安裝在 IIS 5.0 中。

為 SSL 連接配置客戶端

僅僅具有配置正確的服務器并不足以啟用成功的 SSL 連接。請記住,SSL 連接始終包含身份驗證,其中客戶端驗證服務器的身份。特別是客戶端將驗證服務器是否具有有效證書,例如證書是否過期、是否被注銷、是否由客戶端信任的證書頒發(fā)機構頒發(fā)等。在上述詳細步驟中,將收到一個由 Verisign 測試根頒發(fā)機構頒發(fā)的試用版 Verisign 服務器端證書。默認情況下,該頒發(fā)機構并不被信任,例如,其證書不默認存儲在您計算機上的根存儲區(qū)。按照 Verisign 站點中的關于如何獲得 Verisign 測試頒發(fā)機構根目錄證書的指導進行操作。獲得包含 Verisign 測試頒發(fā)機構根目錄證書的文件之后,需要將其安裝在客戶端(您要用這些客戶端執(zhí)行至服務器的 SSL 連接)上,以在對服務器進行身份驗證時信任服務器端證書。請執(zhí)行以下步驟:

雙擊包含證書的文件,打開證書瀏覽器窗口。

單擊“安裝證書”。在證書導入向導歡迎頁上,單擊“下一步”。

選擇要保存該證書的存儲區(qū)。

默認情況下,Windows 將該證書放置到 CURRENT_USERRoot存儲區(qū)中。這意味著只以您的帳戶使用計算機時,才能夠信任由該頒發(fā)機構頒發(fā)的證書。若要確保對其它用戶也有效,推薦始終將根 CA 證書放置到 LOCAL_MACHINERoot 存儲區(qū)。這需要執(zhí)行以下操作:

選擇“將所有證書放置到以下存儲區(qū)”,并單擊“瀏覽”。

選擇“顯示物理存儲區(qū)”,展開“受信任的根目錄證書頒發(fā)機構”節(jié)點,選擇“本地計算機”,然后選擇“LOCAL_MACHINERoot”節(jié)點。
完成該向導安裝 CA 根目錄證書。

執(zhí)行 SSL 連接

嘗試打開到 Web 服務器的 SSL 連接。若要實現(xiàn)此目的,讓我們首先設置 Calc/Service/Rpc/AspVbsVb SOAP Toolkit 示例。需要執(zhí)行以下操作:

在服務器上,執(zhí)行 SOAP Toolkit 2.0 示例描述文件 C:Program FilesMSSOAPSamplesdefault.html 中有關示例設置的所有指導。

在服務器上,編輯 C:ProgramFilesMSSOAPSamplesCalcServiceRpcAspVbsVbcalc.wsdl 文件,并在位置 URL 而不是在 MSSOAP 的以下位置指定 Web 服務器名稱:

<port name='CalcSoapPort' binding='wsdlns:CalcSoapBinding' >

<soap:address location='https://您的服務器/MSSoapSamples/Calc
                              
/Service/Rpc/AspVbsVb/Calc.asp' />

</port>

在客戶端上運行以下 VBScript:

Set Calc = CreateObject("MSSOAP.SoapClient")

Calc.mssoapinit
https://your-server/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.wsdl

Answer = Calc.add(14,28)

WScript.Echo "14+28=" & Answer

這樣,即建立了一個 SSL 連接。請注意,如果將 URL 改回 HTTP,將建立一個通常意義上的非安全 HTTP 連接。若要使您的服務器要求 Web 服務實現(xiàn) SSL 連接,需要在服務所在的虛擬目錄上設置“要求 SSL”。請執(zhí)行以下操作:

在 IIS 4.0 上

用鼠標右鍵單擊 IIS 管理器中的虛擬目錄,并選擇“屬性”。

在“目錄安全性”選項卡上,單擊“編輯安全通信”。

啟用“訪問本資源時要求安全通道”。

在 IIS 5.0 上

用鼠標右鍵單擊 IIS 管理器中的虛擬目錄,并選擇“屬性”。

在“目錄安全性”選項卡上,單擊“編輯安全通信”。

啟用“要求 SSL”。

現(xiàn)在,如果試圖建立與該服務的非安全 HTTP 連接,將會出錯。

SSL 中的服務器身份驗證

常見錯誤是在 SSL 連接中使用 localhost 或服務器主機名的其它別名。在 SSL 握手期間,客戶端驗證服務器證書主題名稱的公用名稱 (CN) 部分與 HTTP 請求中的主機名是否匹配。如果不匹配,SSL 連接將失敗??蛻舳诉€同時驗證服務器端證書是否有效、是否撤消以及是否由信任的 CA 頒發(fā)。

客戶端證書身份驗證

除了必要的服務器身份驗證,SSL 還有一個可選步驟:對客戶端進行身份驗證。這是使用客戶端證書進行的??蛻舳俗C書與服務器證書相似。如果服務器配置為要求客戶端證書,客戶端會將客戶端證書發(fā)送到服務器。服務器至少要檢查它是否信任此客戶端證書,例如,它是否由信任的證書頒發(fā)機構頒發(fā)。

在服務器上配置客戶端證書身份驗證

IIS 4.0 和 IIS 5.0 都可以配置為:

忽略客戶端證書。這種情況下,客戶端證書身份驗證將關閉。

接受但不要求客戶端證書。這種情況下,如果提供了客戶端證書,將對客戶端進行身份驗證。這時,所謂的身份驗證僅是檢查客戶端證書是否有效、可信。

要求客戶端證書。如果沒有提供客戶端證書,連接將被拒絕。將如前一選項那樣對提供的客戶端證書進行檢查。

要求客戶端證書,并將其映射到指定的用戶帳戶。這種身份驗證方式與要求客戶端證書相同,但 IIS 工作線程還模擬指定用戶的憑據。

使用由 CA 而不是默認信任的頒發(fā)機構(例如 Verisign 或 Thawte)頒發(fā)的客戶端證書時,需要確保該 CA 根目錄證書存儲在服務器上的 LOCAL_MACHINERoot 存儲區(qū)中,而不是存儲在 CURRENT_USERRoot 存儲區(qū)中。默認情況下,向導將 CA 的證書放置在 CURRENT_USERRoot 中,這使該證書對 IIS 不可見,因為它使用不同的用戶帳戶。

如何配置 IIS 使用上述客戶端證書選項之一?請按照上述步驟執(zhí)行,但第三步要執(zhí)行以下操作(IIS 4.0 和 IIS 5.0 中的對話框相似):

若要忽略客戶端證書,請在 IIS 5.0 上選擇“忽略客戶端證書”或在 IIS 4.0 上選擇“不接受客戶端證書”;

若要接受但不要求客戶端證書,請選擇“接受客戶端證書”;

若要要求客戶端證書,請選擇“要求客戶端證書”;

若要要求客戶端證書與指定的用戶帳戶匹配,請選擇“要求客戶端證書”以及“啟用客戶端證書映射”。此時,您需要具有一個文件,該文件包含要映射的導出客戶端證書。要獲得該文件,請在客戶端證書所在的客戶端計算機上,執(zhí)行以下操作:

在 Internet Explorer 中,單擊“工具”菜單上的“Internet 選項”。單擊“內容”選項卡,然后單擊“證書”。

在出現(xiàn)的對話框上,將具有 CURRENT_USERMY、CURRENT_USERRoot 等證書存儲區(qū)。(請注意不會顯示 LOCAL_MACHINE 中的任何存儲區(qū)。)
選擇要導出的證書,并單擊“導出”。在向導中,選擇“不,不要導出私有密鑰”和“Base64 編碼 X.509(.CER)”格式。選擇文件名。結果文件將包含導出的客戶端證書。

若要將文件添加到服務器,請在“編輯客戶端證書映射”對話框中,單擊“添加”并選擇包含客戶端證書的文件。
將要求您提供映射名稱。選擇任意帳戶名稱以映射到證書和密碼。每當連接到此虛擬目錄中的服務時,客戶端都發(fā)出此證書,將使用所選帳戶模擬請求處理線程。有關使用客戶端證書進行身份驗證的詳細信息,請參閱 Windows 2000 網站上將證書映射到用戶帳戶的逐步指導(英文)。

在客戶端使用 SSL 客戶端證書

本節(jié)介紹為了與服務交流而需要提供客戶端證書時,如何在客戶端上進行操作。如何獲取和安裝客戶端證書?可以從 Verisign 或任何其它 CA 獲取客戶端證書(Web 標識)。

注意:服務器證書和客戶端證書的用途不同。不能將服務器端證書用作客戶端證書。

獲得包含證書的文件(.cer 文件)之后,雙擊該文件即可進行安裝。按照前述安裝 Verisign 測試 CA 根目錄證書的步驟進行操作。將要求您指定存放證書的存儲區(qū)??蛻舳俗C書的默認(推薦)存儲區(qū)是 CURRENT_USERMY。

注意:準備客戶端證書的請求時,通常會詢問您是否使用 CURRENT_USER 或 LOCAL_MACHINE 存儲區(qū)來存儲證書。

如果希望只能從創(chuàng)建請求時所使用的帳戶訪問證書,則使用 CURRENT_USER 存儲區(qū)。

如果希望幾個特權用戶可以共享訪問此證書,則使用 LOCAL_MACHINE 存儲區(qū)。只有本地管理帳戶具有 LOCAL_MACHINE 存儲區(qū)的訪問權限。例如,如果在具有客戶端證書身份驗證的 SSL 之上使用 SOAP 進行遠程配置,并且希望從任何本地管理員帳戶都可以使用客戶端腳本,可能要使用該存儲區(qū)。

以下是一些創(chuàng)建客戶端證書請求并將證書安裝到所選存儲區(qū)的簡單腳本。腳本使用證書注冊控制,與上述用于服務器證書的腳本很相似:

CERT_SYSTEM_STORE_LOCAL_MACHINE= 131072

OID_CLIENT_AUTH  = "1.3.6.1.5.5.7.3.2"

REQUEST_FILENAME = "ClientCertReq.txt" 

bUseLM = true

set enroll = CreateObject("CEnroll.CEnroll.1")

'建立證書的辨別名稱

strDN =  "CN=your-server,OU=UserUnit,O=UserOrg,L=UserCity,S=WA,C=US"

if bUseLM then

'如果希望將請求和證書保存在 LOCAL_MACHINE 存儲區(qū)中
    
enroll.MyStoreFlags      = CERT_SYSTEM_STORE_LOCAL_MACHINE
  
enroll.RequestStoreFlags = CERT_SYSTEM_STORE_LOCAL_MACHINE

end if

'否則,請求和證書將默認保存在

' CURRENT_USER 存儲區(qū)中

'創(chuàng)建請求,指定證書用途(客戶端身份驗證)

strReq = Enroll.createPKCS10( strDN, OID_CLIENT_AUTH)
'
添加 BEGIN/END 標記

strReq = "-----BEGIN NEW CERTIFICATE REQUEST-----" & vbCRLF & _
      
strReq & _
      
"-----END NEW CERTIFICATE REQUEST-------"

set fso = CreateObject("Scripting.FileSystemObject")

set f = fso.OpenTextFile(REQUEST_FILENAME, 2, true)

call f.Write(strReq)

f.Close()

ClientCertReq.txt 文件將包含一個 Base64 編碼的 PKCS10 請求。若要在從 CA 接收到 SSL 客戶端證書后進行安裝,請使用下列腳本:

FILE_CERTIFICATE = "certnew.cer"

CERT_SYSTEM_STORE_LOCAL_MACHINE= 131072

bUseLM = true

set enroll = CreateObject("CEnroll.CEnroll.1")

if bUseLM then

'如果希望請求和證書保存在 LOCAL_MACHINE 存儲區(qū)中

enroll.MyStoreFlags= CERT_SYSTEM_STORE_LOCAL_MACHINE

enroll.RequestStoreFlags= CERT_SYSTEM_STORE_LOCAL_MACHINE

end if

'否則,Cenroll 將默認使用 CURRENT_USER 存儲區(qū)。

'指定的存儲區(qū)應與保存請求的存儲區(qū)相同。

enroll.acceptFilePKCS7(FILE_CERTIFICATE)

該腳本將從指定文件獲取證書,并將其安裝到 IIS 保存服務器證書的 LOCAL_MACHINE 存儲區(qū)??梢允褂眠@些腳本自動進行配置。

如何使 SoapClient 使用客戶端證書?這相當容易。您需要了解證書保存在哪個存儲區(qū)以及證書公用名稱(主題名稱的 CN 部分)。當從 IE5 或 Microsoft Management Console(mmc.exe)瀏覽時,公用名稱顯示在“頒發(fā)給”列。以下腳本:

Set Calc = CreateObject("MSSOAP.SoapClient")

Calc.mssoapinit
https://your-server/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.wsdl

SoapClient.ConnectorProperty("SSLClientCertificateName") = "MyCert"

Answer = Calc.add(14,28)

WScript.Echo "14+28=" & Answer

從 CURRENT_USERMY 存儲區(qū)提取 CN=MyCert 的證書,并使用此證書請求安全服務。也可以顯式指定要使用的存儲區(qū):

SoapClient.ConnectorProperty("SSLClientCertificateName") = "LOCAL_MACHINEMYMyCert"

證書名稱不區(qū)分大小寫,但存儲區(qū)名稱區(qū)分大小寫。

“服務器至服務器”方案中的客戶端證書

我們詳細介紹并提供了一個使用客戶端證書的安全 B2B 解決方案示例。為了防止攻擊,在“服務器至服務器”方案中正確使用客戶端證書至關重要。

方案:Internet 商店使用第三方付費的 Web 服務驗證提交的客戶信息(例如信用卡號)。付費的 Web 服務要求客戶端證書身份驗證。

Internet 商店應用程序要求下列組件:

Web 應用程序:在高保護(隔離)Web 應用程序中運行的一組 ASP 頁(這是很重要的)。當需要使用信用卡號驗證服務時,調用執(zhí)行該任務的 COM+ 應用程序。這些 ASP 頁不訪問客戶端證書,也不直接使用 SoapClient。該應用程序允許匿名訪問。

COM+ 應用程序:配置為以特定本地帳戶標識在獨立進程中運行。用于對第三方信用卡號驗證服務進行身份驗證的客戶端證書保存在該本地帳戶的個人 (CURRENT_USERMY) 存儲區(qū)。該 COM+ 對象是信用卡號驗證服務的代理,而且使用 SoapClient 訪問該服務,并如上所述使用客戶端證書進行身份驗證。

信用卡號驗證服務:要求 SSL 連接和客戶端證書身份驗證。

客戶端證書存儲在證書存儲區(qū)中,并且該證書存儲區(qū)不能從 ASP 頁能夠模擬的任何帳戶訪問。這樣,就確保了攻擊者無法通過執(zhí)行腳本代碼使用客戶端證書,即使他們獲得了對 ASP 頁的更新訪問權限。不要從 ASP 頁直接訪問客戶端證書。

SSL 和客戶端證書支持的已知局限性

Windows 98:Windows 98 上的某些 WinInet 版本不支持客戶端證書。

Windows 98、Windows Me 和 Windows XP:如果包含服務的虛擬目錄(在 IIS 4.0 或 IIS 5.0 上)配置為要求客戶端證書,則無法連接到要求客戶端證書的本主機上的任何其它 URL。這是由于 WinInet 中的證書緩存問題所致,而且在整個進程生存期內都存在。但是,您可以連接到另一臺主機上的安全 URL。

在 Windows ME 中,SSL 連接可能在關閉時掛起。有關詳細信息,請參閱知識庫文章 Q238934。有關此 Windows ME 問題的 QFE,請與 Microsoft 產品支持服務聯(lián)系。

Windows 2000 和 Windows NT4 上的 SoapClient 只能通過端口 443 進行 SSL 連接。

身份驗證問題

這里,我們將討論使用 SOAP Toolkit 2.0 提供 COM 對象時可能遇到的某些身份驗證問題。這些并非安全漏洞,但您可能希望在部署安全 Web 服務時避免這些問題并確保資源的可用性。

以匿名登錄方式訪問文件和其它資源

當對允許匿名登錄的 Web 服務發(fā)出 SOAP 請求時,IIS 將使用特殊 IUSR_machinename 帳戶模擬請求處理服務器線程。如果已作為 Web 服務公開的 COM 對象試圖使用禁止 IUSR_machinename 帳戶訪問的資源,將收到“拒絕訪問”錯誤。為了避免此錯誤,可以更改 IUSR_machinename 對該資源的權限,或者更改虛擬目錄設置以使用另一匿名訪問帳戶。(請參閱身份驗證部分)

“服務器至服務器”方案

“服務器至服務器”是非常普遍的方案,其中 SoapClient 對象是從 ASP 文件內部使用。為了提高性能,需要緩存 global.asa 文件內的 SoapClient 對象。這樣,可以避免重新調用 SoapClient.mssoapinit 和分析 WSDL 文件。在該解決方案中,如果正在訪問另一臺要求身份驗證的安全服務器,需要在 global.asa 文件中設置憑據。

不能執(zhí)行 NTLM 身份驗證,因為它具有委派局限性(請參閱身份驗證部分)。

注意:對于 Kerberos,請務必顯式指定要使用哪些憑據。不要依賴當前線程憑據,因為具有較強憑據的客戶端發(fā)出第一個請求后,所有后續(xù)調用都將繼續(xù)使用此連接。這可能會在您的解決方案中導致安全漏洞。

注意:為了使解決方案更安全,我們推薦您采用使用 SoapClient 的獨立 COM+ 應用程序代碼并執(zhí)行經過身份驗證的連接。請參閱有關使用上述客戶端證書身份驗證的“服務器至服務器”解決方案的詳細描述。這樣,可以避免用戶名和密碼受到已經獲得 ASP 頁源代碼訪問權限的攻擊者的攻擊。

注意:如果決定在 ASP 頁中使用 SoapClient,推薦在高保護(隔離)模式下運行 ASP 頁。出于優(yōu)化目的,執(zhí)行 HTTP 連接的 SoapClient 代碼以進程帳戶而不是調用線程的帳戶運行。這意味著,如果在低保護(進程內)模式下運行的 ASP 頁中使用 SoapClient,HTTP 代碼將在系統(tǒng)帳戶下運行。如果使用隔離模式,它將在較安全的 IWAM_machinename 帳戶下運行。

在 NT4 上的 MTS 中運行的對象:

如果提供的 COM 對象是在 NT 4.0 上的 MTS Server Package 中運行,則可能會導致一些安全問題。在 NT 4.0 中,COM 在進行本地 COM 調用時始終使用進程標識。這意味著,當 SOAP 偵聽器創(chuàng)建和調用 COM 對象時,將使用進程標識進行調用,并且將忽略處理線程正在模擬用戶憑據的事實。MTS 數據包始終認為傳入調用是由同一個用戶帳戶發(fā)出的。用戶帳戶將是 IWAM 帳戶(如果 SOAP 偵聽器所在的虛擬目錄配置為進程外運行)或 SYSTEM 帳戶(如果 SOAP 偵聽器所在的虛擬目錄配置為進程內運行)。這會導致兩種不同結果:

由于忽略被模擬的用戶并使用進程標識進行調用,這種情況下,MTS 角色安全性不是非常有效。

無法將被模擬用戶與 MTS COM 對象區(qū)分開來。例如,調用 GetDirectCallerName 時不會返回被模擬用戶,而是返回 IWAM 或 SYSTEM。
有關詳細信息,請參閱知識庫文章 #Q243437“PRB:默認情況下 MTS 和 COM+ 庫數據包中的標識是不同的”。

疑難解答

本節(jié)將介紹使用 Microsoft SOAP Toolkit 2.0 設計安全 Web 應用程序時遇到的典型問題,以及如何根據上一節(jié)提供的信息解決這些問題。

拒絕訪問

通過 SOAP 調用公開的服務器端對象時,可能出現(xiàn)“拒絕訪問”錯誤,而本地且不通過 SOAP 調用對象時不會出現(xiàn)此錯誤。您很可能正在以匿名帳戶運行服務,并訪問了無法從 IIS 匿名帳戶訪問的資源(文件系統(tǒng)或其它內容)。需要更改對此資源的訪問權限,或者禁止匿名登錄此 Web 服務。有關詳細信息,請參閱身份驗證部分。

基本身份驗證不能正常工作

確保將運行服務的虛擬目錄配置為要求基本身份驗證,并在基本身份驗證設置中指定了域名(默認使用“”)。請參閱基本身份驗證部分。

摘要式身份驗證不能正常工作

閱讀摘要式身份驗證部分列出的要求,并確認完全符合這些要求。請認真斟酌是否確實需要使用摘要式身份驗證。

Windows 集成身份驗證不能正常工作

檢查客戶端和服務器是否位于同一個域。如果不是,請按 Windows 集成身份驗證 (NTLM) 部分中的示例所示指定域名和用戶名。如果在“服務器至服務器”方案下無法正常工作,請確保兩個服務器都運行 Windows 2000。如果正在 Windows NT4.0 上使用 NTLM,則不適用于“服務器至服務器”方案。

SOAP Toolkit 不能通過代理正常工作

檢查是否設置了 UseProxy 屬性以及是否正確指定了代理服務器名稱,或者在默認 Internet Explorer 設置中對其進行了設置(如果使用這些屬性和名稱)。SOAP Toolkit 2.0 代理支持已經通過市場上許多可用代理進行了測試(包括 Microsoft Proxy 2.0、ISA 代理、Apache 代理服務器、Netscape 代理服務器等)。只有用于 Netscape 代理時出現(xiàn)了問題。

SSL 不能正常工作

這是最常見的問題。通常是由于服務器未正確配置為支持 SSL 引起的。請參考 SSL 部分中的指導。若要查看服務器是否啟用 SSL,請使用 Internet Explorer 訪問您的服務 URL。

另一種可能是客戶端不信任服務器端證書。在客戶端,確保為頒發(fā)服務器端證書的 CA 安裝了根目錄證書。

如果正在運行“服務器至服務器”方案,例如嘗試在 ASP 頁中使用 SoapClient 調用另一臺服務器,請確保已將為頒發(fā)服務器端證書的 CA 安裝的根目錄證書安裝到了 LOCAL_MACHINE 存儲區(qū)中。有關詳細信息,請參閱 SSL 部分。

SSL 客戶端證書不能正常工作

確保在 SSLClientCertificateName 連接器屬性中正確指定了客戶端證書的名稱和存儲區(qū)。應該指定證書主題名稱的公用名稱 (CN) 部分。若要檢查 CURRENT_USERMY 存儲區(qū)中證書的 CN 名稱,請轉至 Internet Explorer/“工具”/“選項”/“內容”/“證書”菜單,并在可用的客戶端證書列表中選中“頒發(fā)給”。

確??蛻舳俗C書合法,例如,轉至 Internet Explorer/“工具”/“選項”/“內容”/“證書”菜單,并單擊證書,應不提示任何警告并顯示“證書正常”和“您具有證書的私有密鑰?!?/FONT>

確保服務器信任您的客戶端證書,例如,頒發(fā)客戶端證書的 CA 的根目錄證書位于服務器上的 LOCAL_MACHINERoot 存儲區(qū)中。有關如何檢查這些內容的詳細信息,請參閱 SSL 客戶端證書部分。

確保運行進程的帳戶對指定的證書存儲區(qū)具有訪問權限。請參閱身份驗證問題部分中“服務器至服務器”一節(jié)的注釋。

有關詳細信息

《設計 Microsoft Windows 2000 基于 Web 的安全應用程序》,Michael Howard、Marc Levy 和 Richard Waymire 編著。

《運行 Microsoft Internet Information Server》,Leon Braginski 和 Matt Powell 編著。

知識庫文章 #Q243437,PRB:默認情況下 MTS 和 COM+ 庫數據包中的標識是不同的(英文)。

發(fā)布:2007-03-24 18:00    編輯:泛普軟件 · xiaona    [打印此頁]    [關閉]
相關文章:
上海OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢