.NET Core应用程序中是否可以从AWS Certificate Manager检索证书并在HttpClient帖子中使用它?

Woo*_*Hoo 1 x509certificate2 aws-sdk .net-core aws-certificate-manager

我的.Net核心应用程序使用HttpClient向外部Web服务发出发布请求。外部Web服务需要证书进行验证。

证书安装在AWS中,并且我有一个指向证书的ARN。

是否可以通过编程方式从AWS Certificate Manager获取证书并在我的HtppClient中使用它,例如,这是我通常用来添加证书但我需要从AWS获得证书的代码。

   private HttpClientHandler HttpClientHandler()
   {
        var handler = new HttpClientHandler
        {
            ClientCertificateOptions = ClientCertificateOption.Manual,
            SslProtocols = SslProtocols.Tls12
        };
        handler.ClientCertificates.Add(new X509Certificate2("cert.crt")); //TODO: fetch from AWS.
        return handler;
    }
Run Code Online (Sandbox Code Playgroud)

Woo*_*Hoo 5

因此,这是可能的。

我从NuGet安装了AWSSDK.Core和AWSSDK.CertificateManager。

然后,我为AWS创建了一个凭证文件,请参阅Amazon中的说明 https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html

接下来,我使用AmazonCertificateManagerClient获得证书。

AmazonCertificateManagerClient client = new AmazonCertificateManagerClient();
var certificates = client.GetCertificateAsync(arn).Result;
Run Code Online (Sandbox Code Playgroud)

然后,我将证书从字符串转换为字节,然后添加到处理程序中。

var handler = new HttpClientHandler{
  ClientCertificateOptions = ClientCertificateOption.Manual,
  SslProtocols = SslProtocols.Tls12
};

byte[] toBytes = Encoding.ASCII.GetBytes(certificates.Certificate);
var cert = new X509Certificate2(toBytes);

handler.ClientCertificates.Add(cert); 
var httpClient = new HttpClient(handler);
Run Code Online (Sandbox Code Playgroud)

显然,不是有价值的代码,希望对您有所帮助。