我正在尝试建立一个CA,并且我需要该CA的根证书。此根证书必须由公共CA签名,并且签名算法必须是带有prime256v1曲线的ECDSA。
我正在LetsEncryp论坛上关注this issue。但是,我使用了一个单独的实用程序来生成密钥和CSR。该实用程序可帮助我成功生成ECDSA密钥和CSR。以下是生成的CSR:
Certificate Request:
Data:
Version: 0 (0x0)
Subject: O=MyOrg, L=Bengaluru, ST=Karnataka, C=IN, CN=mydomain.in
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
<value>
ASN1 OID: prime256v1
NIST CURVE: P-256
Attributes:
Requested Extensions:
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Extended Key Usage:
TLS Web Client Authentication, TLS Web Server Authentication
X509v3 Key Usage:
Digital Signature, Key Encipherment, Certificate Sign, CRL Sign
Signature Algorithm: ecdsa-with-SHA256
<value>
所以,基本上,我在扩展名中获得KeyUsage和BasicConstraints的正确值。
现在,对于下一步,我正在ec2实例中使用以下命令:
certbot certonly -d <mydomain> --server https://acme-v02.api.letsencrypt.org/directory --csr <csr_generated_above> --cert-name <mydomain>
使用此命令,我可以获取由LetsEncrypt签名的证书以及证书链。但是,在生成的证书中,我得到KeyUsage和BasicConstraints的不同值:
Owner: CN=<my_domain>
Issuer: CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Serial number: <value>
Valid from: Fri Jan 03 14:46:29 UTC 2020 until: Thu Apr 02 14:46:29 UTC 2020
Certificate fingerprints:
SHA1: <value>
SHA256: <value>
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 256-bit EC key
Version: 3
Extensions:
#1: <value>
#2: <value>
#3: <value>
#4: ObjectId: <value> Criticality=true
BasicConstraints:[
CA:false
PathLen: undefined
]
#5: <value>
#6: ObjectId: <value> Criticality=false
ExtendedKeyUsages [
serverAuth
clientAuth
]
#7: ObjectId: <value> Criticality=true
KeyUsage [
DigitalSignature
]
#8: <value>
#9: <value>
如上所述,KeyUsage,BasicConstraints和Signature算法没有保留。问题是我的CA需要KeyUsage的值之一应该是“证书标志”。由于这个原因,我的CA无法启动。
所以我的问题是:
我对使用公共ca生成证书非常陌生。
LetsEncrypt除了颁发域验证的证书外,不发行任何其他内容。没有代码签名证书,没有根CA证书,仅此而已。