Односторонний TLS, отправка GET запроса
using var httpClient =
new HttpClient(
new CpHttpHandler
{
SslOptions = new()
{
// С помощью данного коллбека можно реализовать собственный
// алгоритм проверки сертификата веб-сервера
// (в данном примере сертификат веб-сервера не проверяется).
// Если коллбек не задан, то проверка будет осуществляться
// на основе хранилищ сертификатов КриптоПро CSP.
RemoteCertificateValidationCallback =
(object sender,
CpX509Certificate2? certificate,
CpX509Chain? chain,
SslPolicyErrors sslPolicyErrors) => true
}
});
var response = await httpClient.GetAsync("https://some-gost-tls-url");
Двухсторонний TLS, отправка GET запроса
// Загружаем сертификат клиента, например из файла:
var clientCertificatePfx = File.ReadAllBytes(pathToPfx);
using var cert =
new CpX509Certificate2(
clientCertificatePfx,
"11111111",
X509KeyStorageFlags.EphemeralKeySet);
using var httpClient =
new HttpClient(
new CpHttpHandler
{
SslOptions = new()
{
// Указываем сертификат клиента.
ClientCertificates = [cert],
// С помощью данного коллбека можно реализовать собственный
// алгоритм проверки сертификата веб-сервера
// (в данном примере сертификат веб-сервера не проверяется).
// Если коллбек не задан, то проверка будет осуществляться
// на основе хранилищ сертификатов КриптоПро CSP.
RemoteCertificateValidationCallback =
(object sender,
CpX509Certificate2? certificate,
CpX509Chain? chain,
SslPolicyErrors sslPolicyErrors) => true
}
});
var response = await httpClient.GetAsync("https://some-gost-tls-url");