由于当前的基础架构是 Internet-> IIS-> nginx->应用程序(Docker),我正在尝试添加客户端证书身份验证以实现“合成mTLS”。该API也受JWT保护。我已将一个副本上传到GitHub
在Windows上运行Kestrel可以正常工作,并且浏览器会提示您已安装的那些客户端证书。选择由受信任的授予访问权限的证书签名的任何内容。
但是,在Docker(没有nginx)上,我遇到了tags.every((tag: any) => doc.tags.includes(tag)) && tags.length === doc.tags.length;
的问题。我将证书添加为
PartialChain: unable to get local issuer certificate
注意::在我公司,我们使用基于Alpine的图片,并且有关于证书的警告。在建立标准并运行之后,我将在下面处理。参见issue。
为客户端证书配置了nginx
ADD root.crt /usr/local/share/ca-certificates/root.crt
RUN update-ca-certificates
在这种情况下,日志没有给我任何东西
server {
...
ssl_verify_client optional_no_ca;
ssl_client_certificate /etc/nginx/client_certs/root.crt;
...
}
如果尝试发送不是由nginx指定的证书颁发的客户端证书,nginx不会停止访问吗?
有人可以帮助我阐明如何使它工作吗?
谢谢
答案 0 :(得分:0)
我遇到了同样的问题,就我而言,我必须为Kestrel注册一些环境变量。
具有配置为使用根证书的环境变量的容器的示例:
docker run --rm -it -p 5000:80 -p 5001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=5001 -e ASPNETCORE_Kestrel__Certificates__Default__Path=/usr/local/share/ca-certificates/myCert.crt imageName:latest
documentation中的更多信息