[英]Use client certificate in WCF service net tcp
我有一個 WCF 應用程序以網絡 tcp 運行,並在服務器中安裝了服務器證書 (xxx.domain.com)。
啟用具有證書安全性的傳輸。 IIS web 站點已配置並且與上述證書一起工作正常,它也沒有安裝在本地機器中,因為它找到了正確的根 ca 和中間證書。
我可以在不安裝證書的情況下調用 wcf 服務嗎?如果是,我應該使用根 CA 或中間證書。 請參閱下面的證書鏈
根 CA
中間的
xxx.domain.com
這是客戶端中使用的代碼
channel.Credentials.ClientCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.CertificateAuthority,
X509FindType.FindByThumbprint,
"tried intermediate and root CA its not working ");
當 Nettcpbinding 創建的Nettcpbinding
服務使用證書對客戶端進行身份驗證時,我們需要在服務憑證中指定服務證書。
sh.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "5ba5022f527e32ac02548fc5afc558de1d314cb6");
然后該服務將正常工作。 隨后,客戶端在調用服務時應提供客戶端證書,因為Clientcredentialtype
屬性是服務器端的Certificate
。
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
客戶端。
ServiceReference1.ServiceClient client = new ServiceClient();
client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "f0969c5725b2f142b7f150515ec2bd12bc45250b");
var result = client.Test();
Console.WriteLine(result);
在此過程中,請注意我們應該在根CA中安裝彼此的證書,這樣才能建立客戶端和服務器端的證書信任關系。
回頭看你的問題,原因可能是客戶端和服務器端之間無法建立證書信任關系。 我們必須確保客戶端已經在根 CA 中安裝了服務證書,並且服務器已經在根 CA 中安裝了客戶端證書。
如果有什么我可以幫忙的,請隨時告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.