我正在尝试在microsoft / aspnetcore docker映像上安装受信任的自签名根证书。
我在这里关注了以下主题,
Trusted Root Certificates in DotNet Core on Linux (RHEL 7.1)
Install certificate in dotnet core docker container
这对我不起作用。这是docker build的输出,
第10/24步:复制corppvt_root_cert.cer /usr/local/share/ca-certificates/corppvt_root_cert.cer ---> af1674a5219c
第11/24步:复制CCASRootCert.cer /usr/local/share/ca-certificates/CCASRootCert.cer ---> a2d6affc1ae1
步骤12/24:运行update-ca-certificates --->在ca6fb1b9aa50中运行 更新/ etc / ssl / certs中的证书...添加0,删除0;完成。 在/etc/ca-certificates/update.d中运行钩子已完成。拆下 中间容器ca6fb1b9aa50
从RUN update-ca-certificates命令的输出中,似乎无法识别/存储新复制的证书,因为输出显示添加0,删除0。
我正在使用Microsoft / aspnetcore映像。我相信基于Ubuntu / Debian的映像。因此证书位置应为/ usr / local / share / ca-certificates /
有人可以建议此命令出了什么问题以及为什么证书存储没有得到更新?有没有人使用过这张图片,并且做了ssl的东西?
谢谢!
答案 0 :(得分:2)
您不必首先将证书放入容器中。在docker容器中使用ASP.NET Core时,典型的用例是将其配置为具有反向代理(例如nginx,IIS等),就像ifs(面向Internet的服务器)一样,它接受来自外部的请求并用作SSL终结点终结点以及负载均衡器。
从反向代理到应用程序容器的流量未加密(仅在您自己的网络中,而不是通过公共网络)。这样具有性能(负载平衡器将执行ssl加密)和较少的维护(如果您更改证书,则可以在反向代理上进行,并且适用于所有后面的应用程序)。
反向代理应该发送.get(..)
头,该头告诉后面的应用程序该请求是否使用SSL连接(def get(self, request, *args, **kwargs):
return self.voted(request, *args, **kwargs)
头),并向谁转发(X-Forwarded-*
,即请求者IP-可能是另一个反向代理或最终用户ip)等。
ASP.NET Core将识别此标头,并且不会像处理HTTPS请求一样处理它(即使未加密从反向代理到应用程序的连接)。
答案 1 :(得分:1)
您的证书未安装/更新,因为update-ca-certificates仅选择.crt,而不是.cer。
只需重命名扩展名,然后重试。