Статус: Новичок
Группы: Участники
Зарегистрирован: 07.11.2024(UTC) Сообщений: 2  Откуда: Уфа
|
Добрый день! Есть веб-сервис и веб-приложение на .NET Core 6, используется LibCore "старой версии" (2023.9.26.1). Сама LibCore сейчас используется для интеграции с УЦ Крипто ПРО под Windows и Linux. Сервис и приложение работают под Astra Linux 1.6-1.7. Для простоты прикладываю пример кода инициализации сервиса - поднимается два HTTPS-endpoint с ГОСТ-сертификатами, один сертификат грузится из pfx, второй из хранилища. На машине установлен Крипто ПРО УЦ CSP. Код:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;
LibCore.Initializer.Initialize(LibCore.Initializer.DetouredAssembly.All,
debugFlags: LibCore.Initializer.DebugFlags.DisableEnvelopedCmsDetours,
debug: true);
var builder = WebApplication.CreateBuilder();
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.Listen(IPAddress.Any, 555);
serverOptions.ConfigureHttpsDefaults(httpsOptions =>
{
httpsOptions.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
});
serverOptions.Listen(IPAddress.Any, 666, listenOptions =>
{
var cert = new X509Certificate2(@"GOST.pfx", "123456qweRTY");
listenOptions.UseHttps(cert);
});
serverOptions.Listen(IPAddress.Any, 777, listenOptions =>
{
var storeName = StoreName.My;
var storeLocation = StoreLocation.CurrentUser;
using (CpX509Store store = new CpX509Store(storeName, storeLocation))
{
store.Open(OpenFlags.ReadWrite);
var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "7B7374449C4AF10EE30758BAF3BAF6B12F0D9FB5", false);
listenOptions.UseHttps(cert.First());
store.Close();
}
});
});
var app = builder.Build();
app.MapControllers();
app.Run();
Данный сервис успешно запускается под Linux, но при обращении к нему имеем ошибку: Код:
//fail: Microsoft.AspNetCore.Server.Kestrel[0]
// Unhandled exception while processing 0HN7V10D81STF.
// System.ComponentModel.Win32Exception(0x80090304): Неизвестная ошибка -2146893052
// at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc)
// at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential)
// at System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer)
// at System.Net.Security.CpSecureChannel.AcquireServerCredentials(Byte[]& thumbPrint, Byte[] clientHello)
// at System.Net.Security.CpSecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output)
// at System.Net.Security.CpSecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count)
// at LibCore.Net.Security.CpSslStream.ProcessBlob(Int32 frameSize)
// at LibCore.Net.Security.CpSslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter adapter)
// at LibCore.Net.Security.CpSslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
// at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware.OnConnectionAsync(ConnectionContext context)
// at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1.ExecuteAsync()
Вопросы: 1) Должно ли это вообще работать? Поддерживается ли запуск HTTPS с ГОСТ-овой криптографией? Или тут лучше использовать nginx-gost-проксирование? 2) Поможет решить данную проблему переход на последний LibCore с новым интерфейсов? Бегло посмотрел, там сейчас хранилище CpX509Store возвращает CpX509Certificate2-сертификат, не понятно как его подсунуть в инфраструктуру сервера .NET: Код:
using (CpX509Store store = new CpX509Store(storeName, storeLocation))
{
store.Open(OpenFlags.ReadWrite);
var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "7B7374449C4AF10EE30758BAF3BAF6B12F0D9FB5", false);
// ВОТ ТУТ НЕ ПОЛУЧИТСЯ ИСПОЛЬЗОВАТЬ СЕРТИФИКАТ
listenOptions.UseHttps(cert.First());
store.Close();
}
Отредактировано пользователем 7 ноября 2024 г. 13:30:18(UTC)
| Причина: Не указана
|