簡體   English   中英

客戶端在WCF中是否需要用於用戶名身份驗證的證書

[英]Does the client need a certificate for username authentication in WCF

在帶有WCF的wsHttpBinding上使用用戶名認證時,客戶端是否需要安裝證書?還是僅在主機上需要? 在任何情況下,此證書是否需要由第三方簽名,或者也可以與自簽名證書一起使用?

我的理解是,我可以使用自簽名證書並進行設置

<authentication certificateValidationMode="None" /> 

在服務器端。 這個對嗎?

還有一件事。 如果我使用自簽名證書,是否需要將證書放在任何特定的商店中? -自我回答:只要在代碼中設置了正確的存儲,存儲就不重要了。

如果沒有傳輸模式安全性,WCF將不允許用戶名身份驗證,這意味着您需要證書。

據我所知,有兩種方法可以獲取適當的證書:

  1. 從受信任的證書頒發機構購買一個。
  2. 自己成為證書頒發機構並創建證書。 除非您控制對話雙方,否則這不是很有用。 如果決定自己制作證書,則可以使用MakeCertPvk2PfxOpenSSL創建鏈接的加密證書。 看看這篇使用OpenSSL的方法文章 最后但並非最不重要的一點是,應將私鑰保存在安全的位置。

現在,您應該擁有以下文件(名稱用於說明目的):

  • server.cer(服務器的公共密鑰)
  • server.pfx(服務器的密鑰交換文件)
  • client.cer(客戶端的公鑰)
  • client.pfx(客戶端的密鑰交換文件)

然后,您可以執行以下操作:

  • 在服務器上,在本地計算機證書存儲中:

    1. 將server.pfx導入“個人”文件夾。 這將允許服務器使用其私鑰加密消息,並解密已使用其公鑰加密的消息。
    2. 將client.cer導入到Trusted People文件夾。 這將允許服務器使用客戶端的公鑰加密消息,並解密已使用客戶端的私鑰加密的消息。
  • 在客戶端上,在本地計算機證書存儲中:

    1. 將client.pfx導入到Personal文件夾。 這將允許客戶端使用其私鑰加密消息,並解密已使用其公鑰加密的消息。
    2. 將server.cer導入Trusted People文件夾。 這將允許客戶端使用服務器的公鑰加密消息,並解密已使用服務器的私鑰加密的消息。

最后在客戶端和服務集的配置文件上:

<authentication certificateValidationMode="ChainTrust"/> 

這將確保只有可以鏈接到“受信任的根存儲”中的證書頒發機構的證書才有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM