bash
# ========== 1.1 创建 Root CA ==========
ROOT_CA_ARN=$(aws acm-pca create-certificate-authority \
--certificate-authority-configuration '{
"KeyAlgorithm": "RSA_2048",
"SigningAlgorithm": "SHA256WITHRSA",
"Subject": {
"Country": "CN",
"Organization": "DemoCompany",
"CommonName": "Demo Root CA"
}
}' \
--certificate-authority-type ROOT \
--usage-mode SHORT_LIVED_CERTIFICATE \
--query 'CertificateAuthorityArn' --output text)
echo "Root CA ARN: $ROOT_CA_ARN"
# 记下这个 ARN,后面要反复用
# ========== 1.2 自签 Root CA 证书(激活 CA)==========
# 获取 CSR
aws acm-pca get-certificate-authority-csr \
--certificate-authority-arn $ROOT_CA_ARN \
--output text > root-ca.csr
# 用自己签发 Root 证书(短期模式,有效期 7 天)
ROOT_CERT_ARN=$(aws acm-pca issue-certificate \
--certificate-authority-arn $ROOT_CA_ARN \
--csr fileb://root-ca.csr \
--signing-algorithm SHA256WITHRSA \
--template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \
--validity Value=7,Type=DAYS \
--query 'CertificateArn' --output text)
echo "Root Cert ARN: $ROOT_CERT_ARN"
# 等待证书颁发
aws acm-pca wait certificate-issued \
--certificate-authority-arn $ROOT_CA_ARN \
--certificate-arn $ROOT_CERT_ARN
# 下载 Root CA 证书
aws acm-pca get-certificate \
--certificate-authority-arn $ROOT_CA_ARN \
--certificate-arn $ROOT_CERT_ARN \
--query 'Certificate' --output text > root-ca.pem
# 导入证书以激活 CA
aws acm-pca import-certificate-authority-certificate \
--certificate-authority-arn $ROOT_CA_ARN \
--certificate fileb://root-ca.pem
# ========== 1.3 验证 CA 状态 ==========
aws acm-pca describe-certificate-authority \
--certificate-authority-arn $ROOT_CA_ARN \
--query 'CertificateAuthority.Status'
用形象的比喻解释下 这些命令,每一步是干啥的?作用是
我们用一个 "开一家权威印章公司" 的比喻来形象地解释你这段脚本的每一步在做什么。这个比喻贴合 AWS ACM PCA(私有证书颁发机构)的核心逻辑。
🏢 整体背景:你要开一家「印章公司」(即 Root CA)
- 这家公司专门给人刻章(签发数字证书)。
- 但首先,你自己得先有一个"公章"(Root CA 证书),别人才会相信你刻的章是合法的。
- 而 AWS 就像一个"保险柜+刻章机一体机",帮你安全保管私钥(不能拿走),但你需要完成注册流程。
✅ 第一步:申请成立印章公司(创建 CA)
ROOT_CA_ARN=$(aws acm-pca create-certificate-authority ...)
比喻 :你去工商局提交申请:"我要开一家叫 'Demo Root CA' 的印章公司,法人是中国 DemoCompany,用 RSA 2048 加密技术。"
- AWS 收到申请后:
- 在保险柜里生成一把 绝密私钥(你永远拿不到);
- 同时生成一份 《刻章申请书》(CSR),上面写着"我想刻一个这样的章";
- 但此时公司状态是 "待激活" (
PENDING_CERTIFICATE)------因为你还没拿到自己的公章!
💡
--usage-mode SHORT_LIVED_CERTIFICATE表示这家公司只打算发短期证书(比如用于测试或 DevOps 场景)。
✅ 第二步:用自己的机器给自己刻章(自签名 + 激活)
1️⃣ 获取《刻章申请书》(CSR)
aws acm-pca get-certificate-authority-csr ... > root-ca.csr
比喻:你从 AWS 那里拿到那份《刻章申请书》(root-ca.csr),内容是你想刻的章的样子。
2️⃣ 提交申请:"请用我的申请书,给我刻一个公章!"
ROOT_CERT_ARN=$(aws acm-pca issue-certificate ... --template-arn RootCACertificate ...)
比喻 :你对 AWS 说:"我自己就是最高权威,请按这份申请书,用我自己的机器(私钥)给我刻一个公章!"
--template-arn arn:aws:acm-pca:::template/RootCACertificate/V1
👉 相当于选择"根公章模板"(不是普通员工章,而是董事长章!)--validity Value=7,Type=DAYS
👉 公章 7 天后失效(因为是测试用,短期有效)
AWS 用保险柜里的私钥,在内部完成了签名,生成了你的 Root CA 证书(即公章)。
3️⃣ 等待公章制作完成
aws acm-pca wait certificate-issued ...
比喻:你站在柜台前等:"公章刻好了吗?好了我才走。"
4️⃣ 拿到公章(下载证书)
aws acm-pca get-certificate ... > root-ca.pem
比喻 :工作人员把刻好的 实体公章(root-ca.pem) 交给你(虽然是电子文件,但代表权威)。
5️⃣ 把公章装回公司(激活 CA)
aws acm-pca import-certificate-authority-certificate ...
比喻:你把公章郑重地挂到公司墙上,并告诉 AWS:"现在我正式开业了!请把我的状态从'待激活'改为'营业中'!"
✅ 此时,CA 状态变为 ACTIVE ------ 你的印章公司正式开张!
✅ 第三步:检查公司是否正常营业
aws acm-pca describe-certificate-authority ... --query 'Status'
比喻 :你打电话问工商局:"我家印章公司现在状态是?"
回答:"ACTIVE" ✅ ------ 可以开始给别人刻章了!
🎯 总结:整个流程就像
| 技术操作 | 现实比喻 |
|---|---|
create-certificate-authority |
申请开印章公司 |
get-certificate-authority-csr |
拿到刻章申请书 |
issue-certificate(Root 模板) |
用自己当权威,给自己刻公章 |
import-certificate-authority-certificate |
把公章挂上墙,正式开业 |
describe-certificate-authority |
查营业执照状态 |
🔐 关键点提醒:
- 私钥始终锁在 AWS 的"保险柜"(KMS/HSM)里,你无法导出 ------ 这是安全设计。
- 只有导入了 自己签发的 Root 证书 ,CA 才能从
PENDING_CERTIFICATE变成ACTIVE。 - 之后你就可以用这个 Root CA 去签发服务器证书、客户端证书等(就像给客户刻章)。
需要我继续用这个比喻解释"如何用这个 Root CA 签发一个网站证书"吗?😊