×

Let’s Encrypt 1月份时宣布在年内正式支持签发 IP 证书,7月1日签发了第一个 IP 证书,目前开放了 staging 申请,但是需要 ACME client 支持新的 draft ACME Profiles specification

lego 目前已经支持了 profile 功能,但是它会在申请证书时将 IP 作为 CN 字段写入 csr 文件,而 CN 字段明确不被 shortlived 和 tlsserver 配置支持(也意味着未来证书可能不再有 CN 字段)。错误如下:

➜  ~ ./lego --server https://acme-staging-v02.api.letsencrypt.org/directory \
     --accept-tos \
     --email [email protected] \
     --http \
     --domains 47.79.x.x \
     --path ./certs \
     run\
     --profile shortlived

2025/07/04 20:00:43 [INFO] [47.79.x.x] acme: Obtaining bundled SAN certificate
2025/07/04 20:00:44 [INFO] [47.79.x.x] AuthURL: https://acme-staging-v02.api.letsencrypt.org/acme/authz/xxxx
2025/07/04 20:00:44 [INFO] [47.79.x.x] acme: Could not find solver for: tls-alpn-01
2025/07/04 20:00:44 [INFO] [47.79.x.x acme: use http-01 solver
2025/07/04 20:00:44 [INFO] [47.79.x.x] acme: Trying to solve HTTP-01
2025/07/04 20:00:44 [INFO] [47.79.x.x] Served key authentication
2025/07/04 20:00:44 [INFO] [47.79.x.x] Served key authentication
2025/07/04 20:00:44 [INFO] [47.79.x.x] Served key authentication
2025/07/04 20:00:44 [INFO] [47.79.x.x] Served key authentication
2025/07/04 20:00:44 [INFO] [47.79.x.x] Served key authentication
2025/07/04 20:00:48 [INFO] [47.79.x.x] The server validated our request
2025/07/04 20:00:48 [INFO] [47.79.x.x] acme: Validations succeeded; requesting certificates
2025/07/04 20:00:48 Could not obtain certificates:
        error: one or more domains had a problem:
47.79.x.x: acme: error: 400 :: POST :: https://acme-staging-v02.api.letsencrypt.org/acme/finalize/xxx :: urn:ietf:params:acme:error:badCSR :: Error finalizing order :: CSR contains IP address in Common Name

所以目前需要手动生成一个不含 CN 字段的 csr 用于申请证书:

openssl ecparam -name secp384r1 -genkey -noout -out ec384.key

openssl req -new -key ec384.key -out ec384.csr -subj "/CN=" -addext "subjectAltName = IP:47.79.x.x"

再通过 lego 申请证书:

➜  ~ ./lego --server https://acme-staging-v02.api.letsencrypt.org/directory \
     --accept-tos \
     --email [email protected] \
     --http \
     -c ec384.csr \
     --path ./certs \
     run\
     --profile shortlived

2025/07/04 20:40:55 [INFO] [47.79.x.x] acme: Obtaining bundled SAN certificate given a CSR
2025/07/04 20:40:55 [INFO] [47.79.x.x] AuthURL: https://acme-staging-v02.api.letsencrypt.org/acme/authz/xxx
2025/07/04 20:40:55 [INFO] [47.79.x.x] acme: authorization already valid; skipping challenge
2025/07/04 20:40:55 [INFO] [47.79.x.x] acme: Validations succeeded; requesting certificates
2025/07/04 20:40:56 [INFO] Wait for certificate [timeout: 30s, interval: 500ms]
2025/07/04 20:40:57 [INFO] [47.79.x.x] Server responded with a certificate.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

编译curl并启用http/3和ech

编译curl并启用http/3和ech功能,...

读出全部

Canokey固件

编译好的适用于nRF52840 dongle...

读出全部

注册claude账号

注册claude需要进行短信验证,可以使用5...

读出全部

Adobe分流规则

Adobe软件通过与下列服务器通信检测是否为...

读出全部

Github Copilot 解封记录

使用copilot被封禁,可以开工单让客服帮...

读出全部

如何订阅ChatGPT Plus

由于openai的限制,无法直接使用中国大陆...

读出全部