如果我有两个基于同一私钥的不同证书,我的令牌是否仍然可以验证?

问题描述

对于我的Identity Server 4,我们设置了两个不同的服务器来托管应用程序。 我要求我们的运营团队在两台服务器上安装相同的证书。但是,它们都收到了不同的指纹,并且在以下字段中证书中的值也不同:kid,x5t,n和x5c链中的值在两者之间也不同,当我加载.well-kNown / openid-configuration / jwks地址。我已经在下面发布了密钥。这样行吗?我认为,如果x5c.0值基于相同的私钥,则它们将是相同的。

第一把钥匙:

keys    
0   
kty "RSA"
use "sig"
kid "8366EB61F60720FE0FCC5C0E6BF3E5F8ACC98E2DRS256"
x5t "g2brYfYHIP4PzFwOa_Pl-KzJji0"
e   "AQAB"
n   "6sYPa_JNapDqcw3KgvlmtbrrCuYCd1sq3R_3Ao1aAW7bHjdN1isPHP8eWsCA5WeTDmdsfE1GsN2ri0pyVY8LlqAYznEyqHI1FDVS_d601TMiq_WiMTapnQQKFdw0SF1xLNWVT13QsosgErYq0g7pJvlpYDRRXymU8Arw0LMya6nD2sMbFggYEpqMdT_j7KLiZ6oC_2G5v4VVaMdZOF8ppzUkFFtj4MU4k7J_8zVM1LbCy8vH8uyjxGqCsRzbryDu-yhQmPy1FIXBX4ZZgXy8gB2bLLPtndba9rmSFMq4VbWDjwe2hqAF7X4yvru0bGeu_4mxB10vxO2KPP9Sqaniqw"
x5c 
0   "MIIFvDCCA6SgAwIBAgITHQAAADE6PYCZMMXL9QAAAAAAMTANB8VHvcXFg4="
alg "RS256"
keys    
0   
kty "RSA"
use "sig"
kid "B2042B75C33612AC9BD31051B2821E5DEB4D0F34RS256"
x5t "sgQrdcM2Eqyb0xBRsoIeXetNDzQ"
e   "AQAB"
n   "zJiOYj3NhxS4vxte0GtimbMwu6DtFHISguFdlLaroRQaNciqVynyRYJ2v8y5194miwT_K3jtKnh9lSGz93Q7Z500kvmZjS9boqQFn8g-I_02FOUUcLzsJJOTcBGqt6lvja5YlVhdWKG92sq8RizkDm28GV6bdDLh8mbR6GtwyvD2iN7aHs7nE6Z-S5doFlkr4SJ9lUxNMr18WpQHqXvP3Z0lpr8E5DRVv80n5HS7u9uusZvhryOp1QgQGfikCqPc8XNcZ9GyXhtGJkHD-QlpUZVbondHZOCi5IKOUrq7LK4cgILB-zDVIGVpyl0JhhjCCp02wq9kWcgKAvTcb8m8Aw"
x5c 
0   "MIIFmjCCA4KgBpvenCRU6YuvZamis9K4OrGuKNK0EwNe1tbPMViVE++/H21P/utQ=="
alg "RS256"

解决方法

为什么在两个IdentityServer的安装中都没有使用相同的签名密钥证书和相同的私钥?

您还需要记住,域名(服务器)的证书与令牌签名密钥是分开的。

在两种情况下,令牌签名密钥都必须相同。要安装专用签名密钥,可以很方便地将其包装在X509证书中。

证书包含一个私钥,根据保存私钥,您可以拥有许多证书。我将使用 openssl 生成令牌的专用签名密钥,并热衷于将域证书分开,只是为了获得明确的关注点分离。如果您使用Azure Key Vault,甚至可以直接在其中创建和存储密钥。