簡體   English   中英

用戶帳戶無權訪問客戶證書的私鑰

[英]User account has no access to private key of Client certificate

我有一個場景,我在代碼中使用證書來觸發操作。 將證書導入我的本地計算機並運行 c# 代碼后,它會引發私鑰訪問問題,並出現錯誤“用戶帳戶無法訪問客戶端證書的私鑰”。 任何可以解決問題或可以讓我調試問題的指針?

我做了什么:運行 - certlm.msc 個人 - 證書 - 所有任務 - 導入 - 本地機器 - 瀏覽 my.cer 文件

我試圖解決的問題(但無法解決):運行 - certlm.msc Personal - 證書 - 我的證書 - 右鍵單擊 - 所有任務 - 管理私鑰 - 添加“網絡服務”以完全控制。 我嘗試添加我的郵件 ID 或用戶名,但不允許添加。

錯誤:System.InvalidOperationException:“用戶帳戶無權訪問客戶端證書的私鑰”

配置:

<system.serviceModel>
        <behaviors>
            <endpointBehaviors>
                <behavior name="ClientBehavior">
                    <clientCredentials>
                        <clientCertificate findValue="xxxx-correct thumbprint-xxxxxxx" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />  
                    </clientCredentials>
                </behavior>
            </endpointBehaviors>
        </behaviors>
</system.serviceModel>

出現問題的原因可能有多種選擇。

你可以試試:

將用戶帳戶添加到本地計算機的證書存儲區。 要將用戶帳戶添加到本地計算機證書存儲,請使用命令:certutil -user -addstore "My" "C:\Users\username\Documents\certificates\client.pfx"

導入證書,可以使用如下命令:certutil -user -importpfx "C:\Users\username\Downloads\cert.pfx"

將用戶帳戶添加到證書的私鑰訪問控制列表 (ACL)。 您可以通過在提升的命令提示符下運行以下命令來執行此操作:certutil -user -setreg。 例如,如果您的證書指紋是 1234567890ABCDEF 並且您的用戶帳戶是 MyUser,您將運行以下命令:certutil -user -setreg 1234567890ABCDEF MyUser。 您可以通過在提升的命令提示符下運行以下命令來查找證書的指紋:certutil -store my. 您可以通過在提升的命令提示符中運行以下命令來查找用戶帳戶:whoami /user。

最后可以嘗試使用代碼將證書導入本地機器。 例子:

public static void ImportCertificate(string certificatePath)
{
    X509Certificate2 certificate = new X509Certificate2(certificatePath);
    X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadWrite);
    store.Add(certificate);
    store.Close();
} 

請讓我知道是否有任何選項有效。

暫無
暫無

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

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