vaultsharp tls身份验证失败-必须提供客户端证书

时间:2019-05-16 22:37:41

标签: ssl

Vaultsharp无法使用Vault的TLS AUTH方法进行身份验证

Windows 10上的

C#代码,个人商店中的证书和密钥

环境窗口

X509Certificate2 clientCertificate = null;
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certificateList =         
store.Certificates.Find(X509FindType.FindBySubjectName, "subject name", false);

    if (certificateList.Count > 0)
    {
        clientCertificate = certificateList[0];
    };
    store.Close();


// got clientCertificate here, it has private key as well

try
{
    IAuthMethodInfo authMethod = new CertAuthMethodInfo(clientCertificate);
    var vaultClientSettings = new VaultClientSettings("endpoint:8200", authMethod);
    IVaultClient vaultClient = new VaultClient(vaultClientSettings);
    Secret<Dictionary<string, object>> secret = null;
    Task.Run(async () =>
    {
        secret = await vaultClient.V1.Secrets.KeyValue.V1.ReadSecretAsync("dummy_app/dev/connection_strings");
    }).GetAwaiter().GetResult();

上面的代码抛出错误

  

{“错误”:[“必须提供客户端证书”]}

它应该返回机密而不是抛出异常

1 个答案:

答案 0 :(得分:1)

请检查以下内容。

  1. 该证书确实具有私钥。 (对对象进行HasPrivateKey检查)通常,您会使用密码从商店中读取私钥。我在上面没有看到,所以也许您拥有的是公共密钥。

  2. 请确保证书是完整链上的有效证书。如果Vault API(不是VaultSharp)找不到父链,则会引发错误。

  3. 请检查http或tcp连接,以查看证书是否真正连接。