如何签署 CSR 以在 AWS ACM 中启用私有证书颁发机构 (CA)? (如何生成版本 3 证书?)
How to sign the CSR to enable a private Certificate Authority (CA) in AWS ACM? (How to generate version 3 cert?)
我正在尝试在 AWS ACM 中设置私有证书颁发机构 (CA),以便在没有 Internet 访问权限的情况下(有意)设置与 VPC 的直接 VPN 连接。
https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html
因此在 VPN 客户端配置中我需要获取服务器证书 ARN。这就是我尝试设置私有 CA 以设置 Client VPN Endpoint
.
的地方
目前,我已经在 ACM 中创建了 私有 CA,但需要:
Import a CA certificate to activate your CA.
我有点不清楚这里发生了什么。目前只有我一个人,所以我做了以下事情:
(在这个 link 之后:https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309 )
在本地 PC 上:
创建根 CA 私钥:
openssl genrsa -des3 -out rootCA.key 4096
在本地电脑上创建并自签名“Root Certificate
”:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
- 使用 CA 根密钥(私钥)/根证书和 AWS 颁发的 CSR 为 AWS 服务“
AWS Service Certificate
”生成证书:
openssl x509 -req -in AWS-PRIVATE-CSR.pem -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out service.aws.crt -days 500 -sha256
然后从 AWS ACM 控制台:
来自 Import CA Certificate
对话框:
- 添加“
AWS Service Certificate
”作为证书正文
- 添加“
Root Certificate
”作为证书链
此时点击报错,"Confirm and Import":
CertificateMismatchException
The certificate version must be greater than or equal to 3.
我用下面的命令检查了生成的“AWS Service Certificate
”的版本,它显示为版本 1。
openssl x509 -in service.aws.crt -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
...
所以显然我在这里做错了什么,但我似乎无法找到它是什么。要解决当前的 AWS 错误,我的问题是:
- 如何使用根 Key/Cert 和 AWS CSR 生成
Version: 3
证书?
或者,在没有 Internet 访问权限的情况下连接到 VPC 的最佳方式是什么?如果设置一个 VPC<->VPC 连接更容易,我可以通过 SSH 访问另一个 VPC 就可以了。
我的评论不正确,它可能是您的 openssl 版本。关于从 CSR 生成证书的说明有点偏离。问题是您没有正确设置 openssl 来执行此操作。
最简单的解决方法是创建一个包含以下内容的文本文件(例如 v3.ext):
authorityKeyIdentifier=keyid,issuer
basicConstraints=critical,CA:TRUE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
将以下内容添加到您的 openssl 命令行“-extfile 文件名”,例如“-extfile v3.ext”
因此您的 openssl 命令将是:
openssl x509 -req -in AWS-PRIVATE-CSR.pem -CA rootCA.crt -CAkey
rootCA.key -CAcreateserial -out service.aws.crt -days 500 -sha256
-extfile v3.ext
然后您可以使用
进行验证
openssl x509 -in service.aws.crt -text -noout
这应该会生成一个 v3 证书。
我正在尝试在 AWS ACM 中设置私有证书颁发机构 (CA),以便在没有 Internet 访问权限的情况下(有意)设置与 VPC 的直接 VPN 连接。 https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html
因此在 VPN 客户端配置中我需要获取服务器证书 ARN。这就是我尝试设置私有 CA 以设置 Client VPN Endpoint
.
目前,我已经在 ACM 中创建了 私有 CA,但需要:
Import a CA certificate to activate your CA.
我有点不清楚这里发生了什么。目前只有我一个人,所以我做了以下事情:
(在这个 link 之后:https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309 )
在本地 PC 上:
创建根 CA 私钥:
openssl genrsa -des3 -out rootCA.key 4096
在本地电脑上创建并自签名“
Root Certificate
”:openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
- 使用 CA 根密钥(私钥)/根证书和 AWS 颁发的 CSR 为 AWS 服务“
AWS Service Certificate
”生成证书:
openssl x509 -req -in AWS-PRIVATE-CSR.pem -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out service.aws.crt -days 500 -sha256
- 使用 CA 根密钥(私钥)/根证书和 AWS 颁发的 CSR 为 AWS 服务“
然后从 AWS ACM 控制台:
来自
Import CA Certificate
对话框:- 添加“
AWS Service Certificate
”作为证书正文 - 添加“
Root Certificate
”作为证书链
- 添加“
此时点击报错,"Confirm and Import":
CertificateMismatchException The certificate version must be greater than or equal to 3.
我用下面的命令检查了生成的“AWS Service Certificate
”的版本,它显示为版本 1。
openssl x509 -in service.aws.crt -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
...
所以显然我在这里做错了什么,但我似乎无法找到它是什么。要解决当前的 AWS 错误,我的问题是:
- 如何使用根 Key/Cert 和 AWS CSR 生成
Version: 3
证书?
或者,在没有 Internet 访问权限的情况下连接到 VPC 的最佳方式是什么?如果设置一个 VPC<->VPC 连接更容易,我可以通过 SSH 访问另一个 VPC 就可以了。
我的评论不正确,它可能是您的 openssl 版本。关于从 CSR 生成证书的说明有点偏离。问题是您没有正确设置 openssl 来执行此操作。
最简单的解决方法是创建一个包含以下内容的文本文件(例如 v3.ext):
authorityKeyIdentifier=keyid,issuer
basicConstraints=critical,CA:TRUE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
将以下内容添加到您的 openssl 命令行“-extfile 文件名”,例如“-extfile v3.ext”
因此您的 openssl 命令将是:
openssl x509 -req -in AWS-PRIVATE-CSR.pem -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out service.aws.crt -days 500 -sha256 -extfile v3.ext
然后您可以使用
进行验证openssl x509 -in service.aws.crt -text -noout
这应该会生成一个 v3 证书。