首页 > 解决方案 > 在 VaultSharp 库中,设置 VAULT_CACERT 环境变量的等价物是什么?

问题描述

我收到错误使用 C# 中的 VaultSharp 库从 Vault 服务请求机密时发送请求时出错。我可以从命令行获取我需要的访问令牌,因此我知道 Vault 地址和我的个人 Vault 令牌工作。

CLI 依赖于环境变量 VAULT_ADDR、VAULT_TOKEN 和 VAULT_CACERT。我看到 VaultSharpVaultClientSettings使用前两个创建对象:地址和令牌信息——但我可以在 VaultSharp 的哪个位置指定 CA 证书路径?

这是我正在使用的代码,从https://github.com/rajanadar/VaultSharp/blob/master/README.md复制:

string vaultToken = Environment.GetEnvironmentVariable("VAULT_TOKEN");
VaultSharp.V1.AuthMethods.IAuthMethodInfo authMethod = new VaultSharp.V1.AuthMethods.Token.TokenAuthMethodInfo(vaultToken);

string vaultAddress = Environment.GetEnvironmentVariable("VAULT_ADDR");
var vaultClientSettings = new VaultSharp.VaultClientSettings(vaultAddress, authMethod);
VaultSharp.VaultClient vaultClient = new VaultSharp.VaultClient(vaultClientSettings);

string vaultRoute = Properties.Settings.Default.VaultRoute;
VaultSharp.V1.Commons.Secret<VaultSharp.V1.Commons.SecretData> kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(vaultRoute);

正是这最后一条语句ReadSecretAsync引发了错误。

非常感谢您的帮助!

标签: c#certificatevaultvaultsharp

解决方案


VaultSharp 中没有等效的 VAULT_CACERT。VaultSharp 希望您的 Vault URL 具有受信任的 SSL 证书。如果没有,您将在建立握手时收到 TLS 错误。在非生产环境中,人们通常使用以下代码段来解决它。

ServicePointManager.ServerCertificateValidationCallback += 
  (sender, cert, chain, sslPolicyErrors) => true; // or do specific checks

推荐阅读