我的 .Net core 应用程序使用 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;
}
所以,这是可能的。
我从 NuGet 安装了 AWSSDK.Core 和 AWSSDK.CertificateManager。
然后,我为 AWS 创建了一个凭证文件,请参阅 Amazon 的说明https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html
接下来,我使用 AmazonCertificateManagerClient 来获取证书。
AmazonCertificateManagerClient client = new AmazonCertificateManagerClient();
var certificates = client.GetCertificateAsync(arn).Result;
然后,我将证书从字符串转换为字节,然后添加到处理程序中。
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);
显然,这不是值得生产的代码,希望它有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)