Можно ли в приложении .NET Core получить сертификат из AWS Certificate Manager и использовать его в сообщении HttpClient? - PullRequest
0 голосов
/ 10 сентября 2018

Моё основное приложение .Net отправляет запрос во внешний веб-сервис, используя HttpClient. Внешний веб-сервис требует сертификат для проверки.

Сертификаты установлены в 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;
    }

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Итак, это возможно.

Я установил AWSSDK.Core и AWSSDK.CertificateManager из NuGet.

Затем я создал файл учетных данных для 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;

Затем я преобразовал сертификат из строки в байты, а затем добавил в обработчик.

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);

Очевидно, что не код, достойный производства, надеюсь, он поможет.

0 голосов
/ 10 сентября 2018

Если вы используете AWS SDK, вы можете получить сертификаты, используя AmazonCertificateManagerClient. Подробнее см. документацию AWS SDK . (выберите Amazon.CertificateManager> AmazonCertificateManagerClient)

...