我一直在嘗試在IIS6上使用SSL設置WCF傳輸安全性。通過SSL爲IIS6配置WCF傳輸安全性
客戶端位於同一個域上的單獨計算機上。
我瞭解證書,根CA等的前提,並且擁有一組可用於消息安全的證書,並且可以在相同環境中使用這些證書。 (我在過去一週學到了很多東西:)
我有一個噩夢試圖讓我的客戶端在我切換到SSL時對IIS 6服務進行身份驗證。通話時始終收到「不允許的匿名身份驗證」。
在IIS中我有
- 根簽署CA證書的網站SSL端口443 (上設置的,如果我瀏覽https://開頭SVC頁面,我可以看到IE掛鎖和頁面說你需要一個證書到通信)
我有
- 需要SSL通道
- 要求128位加密
- 需要客戶端證書
- 啓用客戶端證書映射(具有許多設置爲1名映射到管理員帳戶上的IIS框現在證書主題O域匹配的)
下網站安全(身份認證和訪問控制)
- 匿名訪問= ON
- Intergrated Windows身份驗證= OFF
- 基本身份驗證= ON
對於客戶端的wsHttpBinding我已經準備好身份驗證的證書和一個自定義端點行爲提供這種信息,但我不認爲它得到這個地步!
更新的服務器CONFIG
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="CertificateWithTransport">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="WCFServiceCertificate.Service1" behaviorConfiguration="credentialConfig">
<endpoint address="https://svnvmig02/Service1.svc"
binding="wsHttpBinding"
bindingConfiguration="CertificateWithTransport"
contract="WCFServiceCertificate.IService1">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="credentialConfig">
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
更新的客戶端CONFIG
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IService1">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://svnvmig02/Service1.svc" binding="wsHttpBinding" behaviorConfiguration="CustomBehavior"
bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1"
name="WSHttpBinding_IService1">
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="CustomBehavior">
<clientCredentials>
<clientCertificate findValue="svnvmig02" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
編輯: 也許值得一提的是我的VS項目是3.5,但IIS6運行.NET4
使用修改後的配置文件(感謝Fabio;)我現在可以從客戶機瀏覽地址https://svnvmig01/Service1.svc並查看生成的svc頁面,該頁面允許我單擊也可用的wsdl URl。
我在網上找到的大多數網頁都是指自我託管或IIS7 ....我希望IIS7支持比較好;)
任何幫助,將不勝感激:)
IIS的聲音配置正確。你可以發佈你的服務和客戶端配置嗎? – Fabio
嗨法比奧,我想我可能已經退後一步了...... IIS配置保持不變,但是我在那裏修補我得到了...... 此服務的安全設置需要「匿名」身份驗證,但未啓用用於承載此服務的IIS應用程序 – Barbloke6
此文章是否有用? http://msdn.microsoft.com/en-us/library/ms731074.aspx。你能減少你的配置到類似於文章中描述的那個嗎? – Fabio