gpt4 book ai didi

docker - IdentityServer4:如何在 Docker 中从 Cert Store 加载签名凭据

转载 作者:IT老高 更新时间:2023-10-28 21:24:11 25 4
gpt4 key购买 nike

我们有一个基于 IdentityServer4 的 STS 在 Windows 上成功运行,其中签名凭据已安装到本地计算机,其中 .pfx 在 Personal > Certificates 下,.cer 在 Trusted People > Certificates 下。我们是然后能够按其通用名称加载签名凭据,如下所示:

services.AddIdentityServer()
.AddSigningCredential("CN=CERT_NAME")
...

我们现在想在 Docker 容器中运行我们的 STS 实现,并且遇到了以下异常:

Unhandled Exception: System.PlatformNotSupportedException: Unix LocalMachine X509Store is limited to the Root and CertificateAuthority stores.
at Internal.Cryptography.Pal.StorePal.FromSystemStore(String storeName, StoreLocation storeLocation, OpenFlags openFlags)
at System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags)
at IdentityModel.X509CertificatesFinder.Find(Object findValue, Boolean validOnly)
at Microsoft.Extensions.DependencyInjection.IdentityServerBuilderExtensionsCrypto.AddSigningCredential(IIdentityServerBuilder builder, String name, StoreLocation location, NameType nameType)

基于上述错误信息,以及我们在这里使用的 AddSigningCredential 方法的来源:https://github.com/IdentityServer/IdentityServer4/blob/ec17672d27f9bed42f9110d73755170ee9265116/src/IdentityServer4/Configuration/DependencyInjection/BuilderExtensions/Crypto.cs#L73 ,显然我们的问题是 IdentityServer4 正在本地计算机的个人(“我的”)存储中查找证书,但是,根据错误消息,这样的存储在 Unix 环境中不可用。

所以,我很想知道在 Docker 容器中加载 IdentityServer4 的签名凭据是否存在一些最佳实践,如果无法通过名称或指纹加载它。唯一的选择是将证书与我们的应用程序捆绑在一起,然后按文件名加载吗?

最佳答案

当您使用 Docker 容器和 IdentityServer 时,基本上您有两种选择:

  • 将证书添加到容器镜像(COPY certificate.pfx .)
  • 将证书挂载到容器(-v/path/to/certificate.pfx:/certificate.pfx)

无论你选择什么选项,你只需要在Startup

中的 ConfigureServices中添加如下配置代码
var identityServerBuilder = services.AddIdentityServer();
/* store configuration and etc. is omitted */
if (_hostingEnvironment.IsDevelopment())
{
identityServerBuilder.AddDeveloperSigningCredential();
}
else
{
var certificate = new X509Certificate2("certificate.pfx", "certificate_password");
identityServerBuilder.AddSigningCredential(certificate);
}

从配置、环境变量或 secret 存储中读取证书密码也是一个好主意。

关于docker - IdentityServer4:如何在 Docker 中从 Cert Store 加载签名凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43285380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com