![](/img/trans.png)
[英]Creating certificate issued based on self-signed root certificate with BouncyCastle
[英]Client certificate - shall I use self-signed or CA issued?
我們有服務器到服務器的通信,我們打算使用客戶端證書。 我們應該使用自簽名證書還是 CA 頒發的證書? 為什么?
在這兩種情況下 - 使用自簽名和 CA 頒發,我們如何在以下服務器代碼中驗證客戶端證書是否有效?
public class CheckClientCertAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
var cert = actionContext.Request.GetClientCertificate();
if (cert == null)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "Client Certificate not present in the HTTP request."
};
return;
}
// How do I make sure the client certificate is valid here?
base.OnAuthorization(actionContext);
}
}
如果您有能力購買它,您應該使用“真實”證書,最好是由您公司自己的中間證書頒發機構頒發的公司證書,該證書又由受信任的根頒發機構簽名。
你想這樣做的原因是部署。 如果您使用通用的、受信任的根權限,則不必在所有服務器上安裝您自己的根權限。 這不僅會給背后帶來麻煩,而且還會為黑客創造一個很好的攻擊途徑,因為在該機器上運行的所有其他軟件也會信任該根權限。
至於驗證,因為您是在代碼中進行的,所以您可以驗證任何您想要的東西。 如果您想非常嚴格,您可以驗證序列號(盡管當您必須更新證書時這會產生一些維護上的麻煩)。 另一種驗證它的常用方法是檢查主題或通用名稱字段。 如果操作正確,您可以更新證書而無需重新配置您的應用程序,因為您正在檢查的字段保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.