Unhandled exception occurred
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.
---> Interop+OpenSsl+SslException: Using SSL certificate failed with OpenSSL error - ca md too weak.
at Interop.OpenSsl.UpdateClientCertificate(SafeSslHandle ssl, SslAuthenticationOptions sslAuthenticationOptions)
at System.Net.Security.SslStreamPal.HandshakeInternal(SafeDeleteSslContext& context, ReadOnlySpan`1 inputBuffer, Int32& consumed, SslAuthenticationOptions sslAuthenticationOptions)
< /code>
Я загрузил сертификат из hex < /p>
var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
{
return true;
},
ClientCertificateOptions = ClientCertificateOption.Manual,
ClientCertificates = { cert },
CheckCertificateRevocationList = false
};
< /code>
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
USER $APP_UID
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Debug
WORKDIR /src
COPY . .
RUN dotnet restore "src/MyProject.Proxy/MyProject.Proxy.csproj"
COPY . .
WORKDIR "/src/src/MyProject.Proxy"
RUN dotnet build "./MyProject.Proxy.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Debug
RUN dotnet publish "./MyProject.Proxy.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
USER root
RUN sed -i \
-e "s|^MinProtocol = .*|MinProtocol = TLSv1.0|g" \
-e "s|^CipherString = .*|CipherString = DEFAULT@SECLEVEL=0\nOptions = UnsafeLegacyRenegotiation,UnsafelyIgnoreCertCN,UnsafelyIgnoreHostVerification|g" \
-e "s|^VerifyCAFile =|#VerifyCAFile =|g" \
-e "s|^VerifyMode =|#VerifyMode =|g" \
/etc/ssl/openssl.cnf
RUN mkdir -p /usr/local/share/ca-certificates && \
touch /usr/local/share/ca-certificates/dummy.crt && \
update-ca-certificates
ENV DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0
ENV DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_INSECURE=true
ENV DOTNET_NET_HTTP_SSL_CLIENT_CERT_MODE=Ignore
ENV DOTNET_NET_HTTP_SSL_SERVER_CERT_MODE=Ignore
ENV OPENSSL_CONF=/dev/null
ENV SSL_CERT_FILE=/dev/null
ENV SSL_CERT_DIR=/dev/null
ENV DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT=false
ENV DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP3SUPPORT=false
ENTRYPOINT ["dotnet", "MyProject.Proxy.dll"]
< /code>
Я контейнер, прокси -приложение .NET 9.0, которое необходимо полностью игнорировать ошибки проверки сертификата SSL при выполнении HTTPS -запросов. Несмотря на обширные изменения конфигурации как в переменных, так и в среде .NET, приложение по -прежнему терпит неудачу с ошибками проверки сертификата. Я действительно смог решить, добавив эту строку кода
if (OperatingSystem.IsLinux())
{
CryptoConfig.AddAlgorithm(typeof(RSACryptoServiceProvider), "System.Security.Cryptography.RSA");
CryptoConfig.AddAlgorithm(typeof(DSACryptoServiceProvider), "System.Security.Cryptography.DSA");
}
Не думайте, что это дубликат, потому что решение зависит от платформы.
Из macos все в порядке, но в Docker исключения брошен < /p> [code]Unhandled exception occurred System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Interop+OpenSsl+SslException: Using SSL certificate failed with OpenSSL error - ca md too weak. at Interop.OpenSsl.UpdateClientCertificate(SafeSslHandle ssl, SslAuthenticationOptions sslAuthenticationOptions) at System.Net.Security.SslStreamPal.HandshakeInternal(SafeDeleteSslContext& context, ReadOnlySpan`1 inputBuffer, Int32& consumed, SslAuthenticationOptions sslAuthenticationOptions) < /code> Я загрузил сертификат из hex < /p> var handler = new HttpClientHandler { ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }, ClientCertificateOptions = ClientCertificateOption.Manual, ClientCertificates = { cert }, CheckCertificateRevocationList = false }; < /code> FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base USER $APP_UID WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build ARG BUILD_CONFIGURATION=Debug WORKDIR /src COPY . . RUN dotnet restore "src/MyProject.Proxy/MyProject.Proxy.csproj" COPY . . WORKDIR "/src/src/MyProject.Proxy" RUN dotnet build "./MyProject.Proxy.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish ARG BUILD_CONFIGURATION=Debug RUN dotnet publish "./MyProject.Proxy.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final WORKDIR /app COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProject.Proxy.dll"] < /code> Я контейнер, прокси -приложение .NET 9.0, которое необходимо полностью игнорировать ошибки проверки сертификата SSL при выполнении HTTPS -запросов. Несмотря на обширные изменения конфигурации как в переменных, так и в среде .NET, приложение по -прежнему терпит неудачу с ошибками проверки сертификата. Я действительно смог решить, добавив эту строку кода if (OperatingSystem.IsLinux()) { CryptoConfig.AddAlgorithm(typeof(RSACryptoServiceProvider), "System.Security.Cryptography.RSA"); CryptoConfig.AddAlgorithm(typeof(DSACryptoServiceProvider), "System.Security.Cryptography.DSA"); }
[/code] Не думайте, что это дубликат, потому что решение зависит от платформы.
Из macos все в порядке, но в Docker исключения брошены
Unhandled exception occurred
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
--->...
Из macos все в порядке, но в Docker исключения брошен
Unhandled exception occurred
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException:...
Я просмотрел стек, пытаясь найти ответ на этот вопрос. По сути, у меня установлен сертификат, и я могу получить доступ к XML-файлу через Chrome, но я пытаюсь перенести его непосредственно в Python с помощью запросов.
Я искал стек, пытаясь найти ответ на это. У меня в основном установлен сертификат, и я могу получить доступ к файлу XML через Chrome, но я пытаюсь потянуть его прямо в Python, используя запросы.