繁体   English   中英

AWS 认知公钥证书

AWS cognito public key certificate

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要 Amazon Cognito 使用的公钥证书,以便我的 Web 应用程序可以验证 Cognito JWT。 无论如何要获得公钥证书还是必须使用cognito SDK来实现这一点?

3 个回复

Cognito JWK 上没有证书链。 您可以在此处找到 Cognito 的公共 JWK:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json

您可以使用https://www.npmjs.com/package/jwk-to-pem等库将 JWK 解码为 PEM 公钥格式

var jwkToPem = require('jwk-to-pem');

var jwk = JWK_FROM_URL,
    pem = jwkToPem(jwk);

或者您可以使用https://github.com/cisco/node-jose 之类的内容进行完整验证

jose.JWK.asKey(keys[key_index])
  .then(result => jose.JWS.createVerify(result).verify)
  .then(result => JSON.parse(result.payload))

这里有一个解码 Cognito JWT 的详细指南https://aws.amazon.com/premiumsupport/knowledge-center/decode-verify-cognito-json-token/ ,这里有一个在 Cognito JWT 上使用jose的示例: https:/ /github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.js

没有可用的直接选项,但您可以在 openSSL 中做一个解决方法,

  1. 生成私钥并使用可用的私钥生成证书签名请求 (CSR)。 两者都可以在一行中完成
openssl req -new -newkey rsa:2048 -nodes -keyout PrivateKey_FileName.key -out CSR_FileName.csr
  1. 以 .pem 格式保存来自 cognito 的 PublicKey。 您可以使用在线工具https://8gwifi.org/jwkconvertfunctions.jsp从 jwk 转换为 .pem。

  2. 使用生成的私钥对 CSR 进行自签名,并强制 CA 包含以 .pem 格式保存的自定义公钥,以使用以下命令创建一个证书,以替换生成 CSR 请求时可用的任何公钥。

openssl x509 -req -days 1200 -in CSR_FileName.csr -force_pubkey cognito_publicKeyFileName.pem -signkey PrivateKey_FileName.key -out export_certificate_FileName.crt
  1. Boom..您已经使用来自 cognito 的公钥创建了您的 x509 证书

使用 AWS CLI 使用此处记录的 CLI 调用获取 Cognito 公共x509证书的内容: https : //awscli.amazonaws.com/v2/documentation/api/latest/reference/cognito-idp/get-signing-证书.html 下面打印了一个示例输出。

MIICdzCCAeCgAwIBAgIGANc+Ha2wMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNVBAYT
AlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMQwwCgYDVQQLEwNBV1MxITAfBgNVBAMT
GEFXUyBMaW1pdGVkLUFzc3VyYW5jZSBDQTAeFw0wOTAyMDQxNzE5MjdaFw0xMDAy
MDQxNzE5MjdaMFIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMRcw
FQYDVQQLEw5BV1MtRGV2ZWxvcGVyczEVMBMGA1UEAxMMNTdxNDl0c3ZwYjRtMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpB/vsOwmT/O0td1RqzKjttSBaPjbr
dqwNe9BrOyB08fw2+Ch5oonZYXfGUrT6mkYXH5fQot9HvASrzAKHO596FdJA6DmL
ywdWe1Oggk7zFSXO1Xv+3vPrJtaYxYo3eRIp7w80PMkiOv6M0XK8ubcTouODeJbf
suDqcLnLDxwsvwIDAQABo1cwVTAOBgNVHQ8BAf8EBAMCBaAwFgYDVR0lAQH/BAww
CgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQULGNaBphBumaKbDRK
CAi0mH8B3mowDQYJKoZIhvcNAQEFBQADgYEAuKxhkXaCLGcqDuweKtO/AEw9ZePH
wr0XqsaIK2HZboqruebXEGsojK4Ks0WzwgrEynuHJwTn760xe39rSqXWIOGrOBaX
wFpWHVjTFMKk+tSDG1lssLHyYWWdFFU4AnejRGORJYNaRHgVTKjHphc5jEhHm0BX
AEaHzTpmEXAMPLE=

在这些内容前面加上 -----BEGIN CERTIFICATE----- 并附加 -----END CERTIFICATE-----。 最终结果将如下所示:

 -----BEGIN CERTIFICATE-----
MIICdzCCAeCgAwIBAgIGANc+Ha2wMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNVBAYT
AlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMQwwCgYDVQQLEwNBV1MxITAfBgNVBAMT
GEFXUyBMaW1pdGVkLUFzc3VyYW5jZSBDQTAeFw0wOTAyMDQxNzE5MjdaFw0xMDAy
MDQxNzE5MjdaMFIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMRcw
FQYDVQQLEw5BV1MtRGV2ZWxvcGVyczEVMBMGA1UEAxMMNTdxNDl0c3ZwYjRtMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpB/vsOwmT/O0td1RqzKjttSBaPjbr
dqwNe9BrOyB08fw2+Ch5oonZYXfGUrT6mkYXH5fQot9HvASrzAKHO596FdJA6DmL
ywdWe1Oggk7zFSXO1Xv+3vPrJtaYxYo3eRIp7w80PMkiOv6M0XK8ubcTouODeJbf
suDqcLnLDxwsvwIDAQABo1cwVTAOBgNVHQ8BAf8EBAMCBaAwFgYDVR0lAQH/BAww
CgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQULGNaBphBumaKbDRK
CAi0mH8B3mowDQYJKoZIhvcNAQEFBQADgYEAuKxhkXaCLGcqDuweKtO/AEw9ZePH
wr0XqsaIK2HZboqruebXEGsojK4Ks0WzwgrEynuHJwTn760xe39rSqXWIOGrOBaX
wFpWHVjTFMKk+tSDG1lssLHyYWWdFFU4AnejRGORJYNaRHgVTKjHphc5jEhHm0BX
AEaHzTpmEXAMPLE=                      
-----END CERTIFICATE-----

将这些内容保存到一个file: Cognito.crt 此文件包含 Cognito 的已签名x509公共证书。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM