如果我有两个基于相同私钥的不同证书,我的令牌是否仍然可以验证?
Will my tokens still be possible to validate, if I have two different certificates based on the same private key?
对于我的 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,您甚至可以直接在其中创建和存储密钥。
对于我的 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,您甚至可以直接在其中创建和存储密钥。