如何在本地开发中处理容器化 OIDC 服务器的 https?

问题描述

我在 TLS 终止代理后面的容器中有一个 OpenID Connect 服务器 (OpenIDdict) 和一个 asp.net 核心 web 应用程序。在生产中,webapp 和 OIDC 服务器之间的所有通信都可以通过“外部”,基于它们的公共名称。但是,在开发中,我使用的是运行应用程序的容器不信任的自签名证书,只有我的主机 pc。因此,在开发中,webapp 可以很好地将浏览器重定向到 OIDC 服务器,但是当它需要调用令牌端点时,它就会失败,因为证书不受信任。

一个可能的解决方案是让服务器到服务器的通信通过内部容器网络,但我无法让它工作。有没有办法让 asp.net 核心 OpenID Connect 中间件使用不同的 url(和协议)进行服务器到服务器的通信?

另一种解决方案是在容器中安装自签名证书,但因为这仅在开发中需要,所以用它来加重图像的负担似乎是不好的做法。这种评估是否正确?

我希望我错过了最明显的解决方案。有什么想法吗?

解决方法

这就是我最终做的:

  1. 我在我的电脑的 hosts 文件中添加了一个指向自身的自定义域。
  2. 使用 openssl,我创建了一个 rootDevCA.crt 并将其添加到我的电脑和所有容器映像中的受信任根目录中。
  3. 使用该根证书,我为自定义域签署了一个新证书,并将该证书(包括其密钥)提供给代理。

只要我将根证书的密钥文件远离我的源代码,就不会有安全问题。