我有一個使用 .NET 6 開發的云運行 API。API 運行良好,大多數路由都按預期作業。
在我的 API 上,我有一些路由需要檢查發出 REST 請求(主要是 POST 呼叫)的外部服務。
問題是:當我將我的 API 帶到云運行時,這些路由無法按預期作業。我在請求期間收到 SSL 錯誤。
在我的計算機、同事計算機(不同的 ISP)和 GCP VM 上,API 按預期作業。
該問題僅在云運行時發生。
{
"success": false,
"metaData": null,
"dataHora": "2022-04-25T17:09:16.683683 00:00",
"errorMetaData": {
"stackTrace": null,
"errorMessage": "Call failed. The SSL connection could not be established, see inner exception: POST https://************************/b1s/v1/Login",
"innerError": {
"stackTrace": null,
"errorMessage": "The SSL connection could not be established, see inner exception.",
"innerError": {
"stackTrace": null,
"errorMessage": "Authentication failed, see inner exception.",
"innerError": {
"stackTrace": null,
"errorMessage": "SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.",
"innerError": {
"stackTrace": null,
"errorMessage": "error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol",
"innerError": null
}
}
}
}
}
}
編輯:
Dockerfile:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["API/API.csproj", "API/"]
RUN dotnet restore "API/API.csproj"
COPY . .
WORKDIR "/src/API"
RUN dotnet build "API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "API.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "API.dll"]
我認為 TLS 兼容性也是一個問題,因為我試圖訪問的 API 有一個舊的 TLS 版本。
使用 docker 在我的本地計算機上嘗試并收到相同的錯誤 - 所以這不是云運行問題,但可能是 docker 中的某種配置?
uj5u.com熱心網友回復:
我通過在 ENTRYPOINT 之前使用以下代碼將 TLS 的最低版本更改為 1.0 來解決此問題。
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/' /etc/ssl/openssl.cnf \
&& sed -i 's/CipherString = DEFAULT@SECLEVEL=2/CipherString = DEFAULT@SECLEVEL=1/' /etc/ssl/openssl.cnf
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/466533.html
上一篇:卡夫卡:listener.name.internal.ssl.endpoint.identification.algorithmvsssl.endpoint.identification.algori
