如何在本地开发中为容器化的 OIDC 服务器处理 https?
How to handle https for a containerized OIDC server in local development?
我在 TLS 终止代理后面的容器中有一个 OpenID Connect 服务器 (OpenIDdict) 和一个 asp.net 核心网络应用程序。在生产中,webapp 和 OIDC 服务器之间的所有通信都可以根据它们的 public 名称通过 'outside'。但是,在开发中,我使用的是容器 运行 应用程序不信任的自签名证书,仅受我的主机 pc 信任。因此,在开发中,webapp 可以很好地将浏览器重定向到 OIDC 服务器,但是当它需要调用令牌端点时,它将失败,因为证书不受信任。
一个可能的解决方案是让服务器到服务器的通信通过内部容器网络进行,但我无法让它工作。有没有办法让 asp.net 核心 OpenID Connect 中间件使用不同的 url(和协议)进行服务器到服务器通信?
另一种解决方案是在容器中安装自签名证书,但因为这只在开发中需要,所以给图像增加负担似乎是不好的做法。该评估是否正确?
我希望我错过了最明显的解决方案。有什么想法吗?
这就是我最后做的事情:
- 我在我的电脑的主机文件中添加了一个自定义域,指向它自己。
- 我使用 openssl 创建了一个 rootDevCA.crt 并将其添加到我的电脑和所有容器映像中的受信任根。
- 使用该根证书,我为自定义域签署了一个新证书并将其(包括其密钥)提供给代理。
只要我将根证书的密钥文件远离我的源代码,就不会有安全问题。
我在 TLS 终止代理后面的容器中有一个 OpenID Connect 服务器 (OpenIDdict) 和一个 asp.net 核心网络应用程序。在生产中,webapp 和 OIDC 服务器之间的所有通信都可以根据它们的 public 名称通过 'outside'。但是,在开发中,我使用的是容器 运行 应用程序不信任的自签名证书,仅受我的主机 pc 信任。因此,在开发中,webapp 可以很好地将浏览器重定向到 OIDC 服务器,但是当它需要调用令牌端点时,它将失败,因为证书不受信任。
一个可能的解决方案是让服务器到服务器的通信通过内部容器网络进行,但我无法让它工作。有没有办法让 asp.net 核心 OpenID Connect 中间件使用不同的 url(和协议)进行服务器到服务器通信?
另一种解决方案是在容器中安装自签名证书,但因为这只在开发中需要,所以给图像增加负担似乎是不好的做法。该评估是否正确?
我希望我错过了最明显的解决方案。有什么想法吗?
这就是我最后做的事情:
- 我在我的电脑的主机文件中添加了一个自定义域,指向它自己。
- 我使用 openssl 创建了一个 rootDevCA.crt 并将其添加到我的电脑和所有容器映像中的受信任根。
- 使用该根证书,我为自定义域签署了一个新证书并将其(包括其密钥)提供给代理。
只要我将根证书的密钥文件远离我的源代码,就不会有安全问题。