Gre*_*egH 11 encryption x509certificate x509 jwt jwk
我需要生成具有以下参数的 JWK:
\n\xe2\x80\x9ckty\xe2\x80\x9d:密钥类型
\n\xe2\x80\x9ckid\xe2\x80\x9d:密钥 ID
\n\xe2\x80\x9cuse\xe2\x80\x9d:\xe2\x80\x9csig\xe2\x80\x9d 公钥使用
\n\xe2\x80\x9cn\xe2\x80\x9d:模数
\n\xe2\x80\x9ce\xe2\x80\x9d: \xe2\x80\x9cAQAB\xe2\x80\x9d 公共指数
\n\xe2\x80\x9cx5c\xe2\x80\x9d:X.509 证书链
\n\xe2\x80\x9cx5t\xe2\x80\x9d:X.509 证书 SHA-1 指纹
\n笔记:
\nJWK 应包含使用 RSA 算法的公钥。RSA 提供用于密钥匹配目的的密钥 ID。
\n应包含使用 \xe2\x80\x9cx5t\xe2\x80\x9d (X.509 SHA-1 指纹)和 \xe2\x80\x9cx5c\xe2\x80\x9d (X.509\n证书链)的 X.509 证书参数
\n前 5 个参数(“kty”、“kid”、“use”、“n”、“e”)相当简单,不是问题。但是,对于“x5c”和“x5t”组件,我不确定如何生成它们。看来我可以使用https://www.samltool.com/self_signed_certs.php上找到的工具创建 x509 证书,我想生成的 x509 证书将包含 x5c 参数。这是正确的吗?我如何从中生成 x5t(证书指纹)?
\n感谢所有帮助。
\nTop*_*aco 21
由于您既没有标记工具也没有标记语言,所以我认为它只是对这两个参数的一般解释。
在x5c中存储证书或证书链,在x5t中存储关联的指纹。证书或证书链用于证明公钥的所有权,指纹是用于识别/比较证书的证书的哈希值。
RFC 7517 JSON Web Key (JWK) 的第4.7 x5c和4.8 x5t章中描述了这两个参数的确切定义:
“x5c”(X.509 证书链)参数包含一个或多个 PKIX 证书链 [RFC5280]。证书链表示为证书值字符串的 JSON 数组。数组中的每个字符串都是一个 base64 编码([RFC4648] 第 4 节——不是 base64url 编码)的 DER [ITU.X690.1994] PKIX 证书值。包含密钥值的 PKIX 证书必须是第一个证书。后面可能会跟有其他证书,每个后续证书都用于证明前一个证书。第一个证书中的密钥必须与 JWK 的其他成员所代表的公钥相匹配。使用此成员是可选的...
“x5t”(X.509 证书 SHA-1 指纹)参数是 X.509 证书 [RFC5280] DER 编码的 base64url 编码的 SHA-1 指纹(也称为摘要)。请注意,证书指纹有时也称为证书指纹。证书中的密钥必须与 JWK 的其他成员所代表的公钥相匹配。该成员的使用是可选的。
创建证书:
自签名证书也可以(除了您使用的在线工具之外)例如使用 OpenSSL 生成。以下 OpenSSL 语句
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.crt -days 365
Run Code Online (Sandbox Code Playgroud)
生成 PKCS#8 格式的私有(未加密)PEM 编码的 4096 位密钥 ( key.pem ):
-----BEGIN PRIVATE KEY-----
MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDkWIfV9uL3XMay
...
OPAsywknGU1A/xTa3fFKO9KV6t/T9z3G
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
和 PEM 编码的证书 ( cert.crt ):
-----BEGIN CERTIFICATE-----
MIIF4zCCA8ugAwIBAgIJAKSZ5oC4tblkMA0GCSqGSIb3DQEBCwUAMIGHMQswCQYD
...
6aBMYeKy0dqjtZIlO8rm2Rialc7Qt+0=
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
有关更多选项和详细信息,请参阅openssl req和帖子如何使用 OpenSSL 生成自签名 SSL 证书?。
请注意,自签名证书是由所有者签名的。自签名证书用于内部页面或测试环境。相比之下,CA 签名证书由第三方、公众信任的证书颁发机构 (CA) 签名,例如 DigiCert 或 Thawte 等,用于面向公众的网站等。也在这里。请求带有CSR 的签名证书。
证书、证书链、证书颁发机构等是公钥基础设施的一部分。
x5c 的使用示例:
RFC 7517 的附录 B中给出了x5c参数的使用示例。DER 编码的证书采用 Base64 编码并包含在 JSON 数组中:
{
"kty":"RSA",
"use":"sig",
"kid":"1b94c",
"n":"vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08
PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Q
u2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4a
YWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwH
MTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMv
VfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ",
"e":"AQAB",
"x5c":
["MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJB
gNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYD
VQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1
wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBg
NVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDV
QQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1w
YmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnH
YMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66
s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6
SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpn
fajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPq
PvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVk
aZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BA
QUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL
+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1
zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL
2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo
4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTq
gawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA=="]
}
Run Code Online (Sandbox Code Playgroud)
请注意,值内的换行符仅用于显示目的。DER 编码是 PEM 编码去除页眉、页脚和换行符并对其余部分进行 Base64 解码的结果,即 Base64 解码的 DER 编码证书是没有换行符的 PEM 编码证书的正文。
对于证书链,证书之间用逗号分隔,请参阅RFC 7515,附录 B,x5c 等。
指纹/指纹:
证书的指纹是 DER 编码证书的 SHA-1 哈希值,可以使用 OpenSSL 生成,如下所示:也在这里:
openssl x509 -in cert.crt -noout -fingerprint
Run Code Online (Sandbox Code Playgroud)
这里的cert.crt是PEM编码的证书。有关更多详细信息,请参阅openssl x509。
示例:如果使用 RFC 7517 附录 B 中的证书,则 OpenSSL 语句将返回以下输出:
SHA1 Fingerprint=E2:93:5E:9C:40:4B:BF:42:69:2C:87:6E:81:6C:50:90:EB:19:70:AD
Run Code Online (Sandbox Code Playgroud)
即十六进制编码的指纹是:E2935E9C404BBF42692C876E816C5090EB1970AD或 Base64url 编码:4pNenEBLv0JpLIdugWxQkOsZcK0。后者是x5t的值:
"x5t":"4pNenEBLv0JpLIdugWxQkOsZcK0"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18392 次 |
最近记录: |