按AWS指南创建自签名CA证书后,上传至AWS IoT遇验证错误
解决AWS IoT注册CA证书时的CertificateValidationException错误
我之前也碰到过一模一样的问题!AWS IoT对CA证书的合规性要求很明确,必须把basicConstraints扩展设置为CA:TRUE——这是用来证明该证书是CA根证书的核心标识,缺了它AWS IoT肯定会拒绝。下面是我亲测有效的修复步骤:
1. 重新生成带正确扩展的CA证书
如果之前生成CA证书时没指定这个关键扩展,得重新生成。用OpenSSL的话,可以这么操作:
- 先创建一个配置文件(比如命名为
ca_config.cnf),把扩展规则写进去:
[req] distinguished_name = req_distinguished_name x509_extensions = v3_ca prompt = no [req_distinguished_name] C = US # 替换成你的国家代码 ST = Washington # 替换成你的州/省份 L = Seattle # 替换成你的城市 O = YourOrganization # 替换成你的组织名 OU = YourDepartment # 替换成你的部门 CN = YourRootCA # 替换成你的CA证书名称 [v3_ca] basicConstraints = CA:TRUE, critical keyUsage = keyCertSign, cRLSign subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always, issuer
- 然后用这个配置文件生成新的CA证书和私钥:
openssl req -x509 -newkey rsa:2048 -days 3650 -keyout CA_key.pem -out CA_cert.pem -config ca_config.cnf -nodes
2. 验证证书的扩展是否正确
生成后别着急上传,先确认basicConstraints已经设置好:
openssl x509 -in CA_cert.pem -text -noout
在输出里找X509v3扩展部分,看到下面这样的内容就说明没问题:
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:TRUE
3. 重新生成验证证书并完成注册
接下来按照你之前的AWS步骤,用新的CA证书重新生成验证证书(verificationCert.crt),然后再次执行注册命令:
aws iot register-ca-certificate --ca-certificate file://CA_cert.pem --verification-cert file://verificationCert.crt
这样应该就能顺利完成CA证书的注册了,AWS IoT会认可这个符合规范的证书。
内容的提问来源于stack exchange,提问作者Aleksander Aleksic
相关产品推荐
相关产品推荐

