如何在来自LetsEncrypt的基于ECDSA的证书中持久保存KeyUsage和BasicConstraints的值?

问题描述 投票:0回答:1

我正在尝试建立一个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无法启动。

所以我的问题是:

  1. 从LetsEncrypt获取我的CA的根证书是否可行?
  2. 如果是,我们是否需要使用cert bot命令传递一些额外的标志?
  3. 或者我在哪里弄错了?

我对使用公共ca生成证书非常陌生。

lets-encrypt ecdsa
1个回答
1
投票

LetsEncrypt除了颁发域验证的证书外,不发行任何其他内容。没有代码签名证书,没有根CA证书,仅此而已。

https://letsencrypt.org/docs/faq/

© www.soinside.com 2019 - 2024. All rights reserved.