如何签署CSR以在AWS ACM中启用私有证书颁发机构(CA)? (如何生成版本3证书?)

时间:2019-05-24 00:57:43

标签: amazon-web-services openssl vpn aws-acm

我正在尝试在AWS ACM中设置私有证书颁发机构(CA),以建立到VPC的直接VPN连接而无需访问互联网(故意)。 https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html

因此,在VPN客户端配置中,我需要获取服务器证书ARN。这就是我去尝试设置私有CA以便设置Client VPN Endpoint的地方。

当前,我已经在ACM中创建了私有CA ,但是需要:

  

导入CA证书以激活您的CA。

我不清楚这里发生了什么。目前只有我一个人,所以我做了以下事情:

(通过此链接:https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309

在本地PC上:

  1. 创建根CA私钥:

    openssl genrsa -des3 -out rootCA.key 4096
    
  2. 在本地计算机上创建并自签名“ Root Certificate

    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
    
    1. 使用CA Root密钥(私钥)/ Root证书和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控制台中

  1. Import CA Certificate对话框中:

    • 添加“ AWS Service Certificate”作为证书正文
    • 添加“ Root Certificate”作为证书链

这时,当我单击“确认并导入”时出现错误:

  

CertificateMismatchException   证书版本必须大于或等于3。

我使用以下命令检查了生成的“ AWS Service Certificate”的版本,并显示为 Version 1

openssl x509 -in service.aws.crt -text -noout
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
    ...

显然,我在这里做错了,但是我似乎找不到它。要解决当前的AWS错误,我的问题是:

  • 如何使用根密钥/证书和AWS CSR生成Version: 3证书?

或者,没有互联网连接到VPC的最佳方法是什么?如果设置VPC <-> VPC连接更容易,我可以通过它通过SSH访问另一个VPC,则可以使用。

1 个答案:

答案 0 :(得分:1)

我的评论不正确,因为它可能是您的openssl版本。这些说明与从CSR生成证书有关。问题是您没有正确设置openssl设置。

最简单的解决方法是创建一个文本文件(例如v3.ext),其内容如下:

authorityKeyIdentifier=keyid,issuer
basicConstraints=critical,CA:TRUE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

将以下内容添加到您的openssl命令行“ -extfile filename”中,例如“ -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证书。