C# X509Chain构建在Azure Kubernetes集群中的Alpine linux容器上失败,并带有Istio

C# X509Chain构建在Azure Kubernetes集群中的Alpine linux容器上失败,并带有Istio,c#,linux,docker,x509certificate,azure-aks,C#,Linux,Docker,X509certificate,Azure Aks,我有一个证书,我正在使用X509Chain(chain.Build(certificate))验证该证书。该证书有一个中间CA X和一个根证书Y,这两个证书当前都安装在我正在测试的windows计算机上 在我的windows计算机上,chain.Build()成功(假设因为我的计算机上存在两个CA),但相同的验证代码无法在我的linux容器上验证证书 以下是我的dockerfile的外观: # pull down the build container FROM mcr.microsoft.co

我有一个证书,我正在使用X509Chain(
chain.Build(certificate)
)验证该证书。该证书有一个中间CA X和一个根证书Y,这两个证书当前都安装在我正在测试的windows计算机上

在我的windows计算机上,chain.Build()成功(假设因为我的计算机上存在两个CA),但相同的验证代码无法在我的linux容器上验证证书

以下是我的dockerfile的外观:

# pull down the build container
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine3.10

WORKDIR /app

# expose ports
EXPOSE 443
EXPOSE 80

# Install cultures (same approach as Alpine SDK image)
RUN apk add --no-cache icu-libs

# Disable the invariant mode (set in base image)
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false

# copy build output
COPY . /app

COPY ./Configuration/X.cer /usr/share/ca-certificates/X.crt
COPY ./Configuration/Y.cer /usr/share/ca-certificates/Y.crt

RUN echo "X.crt" >> /etc/ca-certificates.conf
RUN echo "Y.crt" >> /etc/ca-certificates.conf

RUN update-ca-certificates

# start the service
ENTRYPOINT ["dotnet", "ValidationService.dll"]
我已从我的计算机导出base64编码的X509证书,并使用该证书复制到/usr/share/ca certificates/。 我手动输入etc文件夹中的ca-certificates.conf文件,然后运行更新ca证书。 部署后,我在容器中的conf文件中以及ssl文件夹中看到了正确的条目,其中添加了我的证书。但我的验证仍然失败


不确定我是否错过了任何一步?请给出建议。

我在您的Dockerfile中看到一些问题

  • 尝试使用OpenSSL将证书转换为CRT格式:
  • 将证书复制到
    /usr/local/share/ca certificates/
    路径
  • openssl x509 -inform DER -in certificate.cer -out certificate.crt