簡體   English   中英

客戶證書 - 我應該使用自簽名還是 CA 頒發?

[英]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.

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