Kur*_*ula 5 c# mmc ssl-certificate x509certificate
我有一个场景,我在代码中使用证书来触发操作。将证书导入到本地计算机并运行 C# 代码后,它会引发私钥访问问题,并显示错误“用户帐户无法访问客户端证书的私钥”。任何可以解决问题或可以让我调试问题的指针?
我做了什么:运行 - certlm.msc 个人 - 证书 - 所有任务 - 导入 - 本地计算机 - 浏览我的 .cer 文件
我试图解决(但无法解决):运行 - certlm.msc 个人 - 证书 - 我的证书 - 右键单击 - 所有任务 - 管理私钥 - 添加具有完全控制权的“网络服务”。我尝试添加我的邮件 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>
Run Code Online (Sandbox Code Playgroud)
问题发生的原因可能有多种选择。
你可以试试:
将用户帐户添加到本地计算机的证书存储中。要将用户帐户添加到本地计算机证书存储区,请使用命令: 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();
}
Run Code Online (Sandbox Code Playgroud)
如果有任何选项有效,请告诉我。
经过几周的努力,我找到了问题的解决方案。我以管理员身份运行 Visual Studio,但经过几次尝试,我尝试以特定用户身份运行 Visual Studio(Shift + 右键单击 Visual Studio 快捷方式),输入我的凭据并打开 Visual Studio。通过使用我的凭据以特定用户身份打开 Visual Studio 可以解决该问题。
| 归档时间: |
|
| 查看次数: |
2702 次 |
| 最近记录: |