Я пытаюсь переместить запрос с сертификатом из старой системы, созданной с помощью NodeJS, в новую систему, использующую .NET 8.0.
Однако при запуске кода .NET я всегда получаю следующую ошибку:
Я пытаюсь переместить запрос с сертификатом из старой системы, созданной с помощью NodeJS, в новую систему, использующую .NET 8.0. Однако при запуске кода .NET я всегда получаю следующую ошибку:
Не удалось установить SSL-соединение
Вот мой код NodeJS: [code]const Q = require('q'); return Q.Promise((resolve, reject) => { const options = { method: 'POST', url: ConfigPayment.kmobile.url + '/targetUrl', headers: { 'cache-control': 'no-cache', 'content-type': 'text/xml;charset=UTF-8', 'SoapAction': '', }, agentOptions: { ca: [ fs.readFileSync('file1.pem'), fs.readFileSync('file2.pem'), fs.readFileSync('file3.crt'), fs.readFileSync('file4.crt'), fs.readFileSync('file5.crt'), fs.readFileSync('file6.crt') ] }, strictSSL: true, body: xml } [/code] Это мой новый код .NET 8.0: [code]var _trustedCertificates = new X509Certificate2Collection();
var filePathList = new string[] { Path.Combine(this.ProjectRootPath, "file1.pem"), Path.Combine(this.ProjectRootPath, "file2.pem"), Path.Combine(this.ProjectRootPath, "file3.crt"), Path.Combine(this.ProjectRootPath, "file4.crt"), Path.Combine(this.ProjectRootPath, "file5.crt"), Path.Combine(this.ProjectRootPath, "file6.crt") };
foreach (var path in filePathList) { if (File.Exists(path)) { logger.LogDebug($"Files exists {path}"); var cert = new X509Certificate2(path); _trustedCertificates.Add(cert); } }
using var chain2 = new X509Chain(); chain2.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; chain2.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
foreach (var c in _trustedCertificates) { chain2.ChainPolicy.ExtraStore.Add(c); }
var serverCert = cert as X509Certificate2 ?? new X509Certificate2(cert); var isValid = chain2.Build(serverCert);
foreach (var status in chain2.ChainStatus) { logger.LogDebug("Chain error: {Status} - {Info}", status.Status, status.StatusInformation); }
return isValid; } };
this.httpClient = new HttpClient(handler); this.httpClient.DefaultRequestHeaders.Add("cache-control", "no-cache"); this.httpClient.DefaultRequestHeaders.Add("SoapAction", ""); this.httpClient.BaseAddress = new Uri("https://targetUrl.com/"); [/code] Кто-нибудь знает, что я делаю неправильно?