ACME 证书申请
1 选择CA
2 配置
3 验证
4 下载
加载中...
HTML5网页版ACME客户端
修改自:
GitHub
- 功能用途本网页客户端用于:向 Let's Encrypt、ZeroSSL、Google 等支持 ACME 协议的证书颁发机构,免费申请获得用于 HTTPS 的 SSL/TLS 域名证书(RSA、ECC/ECDSA),支持多域名和通配符泛域名;只需在现代浏览器上操作即可获得 PEM 格式纯文本的域名证书,不依赖操作系统环境,无需下载和安装软件,纯手动操作,只专注于申请获得证书这一件事。
步骤一:选择证书颁发机构
*
证书颁发机构 ACME(v2, RFC 8555) 服务URL:
Let's Encrypt:
请按照下面的操作步骤提示进行申请即可得到证书,证书有效期90天。
ZeroSSL:
此URL可能需要先根据下面的提示进行操作来消除跨域不能访问的问题。
申请证书前,你需要根据ZeroSSL的官方文档,先注册ZeroSSL账号并生成一个EAB凭据,每次申请证书时使用此EAB凭据,按照下面的操作步骤提示进行申请即可得到证书,证书有效期90天。
[2026-01]ZeroSSL证书签发服务可能不稳定,如果反复出现重试或长时间等待,第二天再试可能恢复正常。
Google Trust Services:
此URL可能需要先根据下面的提示进行操作来消除跨域不能访问的问题。
申请证书前,你需要根据Google的官方文档,在Google Cloud中生成一个EAB凭据,每次申请证书时使用此EAB凭据,按照下面的操作步骤提示进行申请即可得到证书,证书有效期90天。
注意:因为同一个Google EAB凭据只能绑定到一个ACME账户(私钥),因此你在首次申请证书时,必须同时保存好在第二步操作中新创建的或手动填写的ACME账户私钥,下次申请证书时使用此EAB凭据必须和已保存的ACME账户私钥一起使用。
读取服务目录
步骤二:证书配置
等待中,请先完成第一步...
温馨提示:如果上次申请过证书,可以拖拽已下载保存的记录LOG文件到本页面,将自动填充上次的配置信息。
*
证书中要包含的域名:
一个证书可以包含多个域名(支持通配符),比如填写:a.com, *.a.com, b.com, *.b.com;第一个域名将作为证书的通用名称(Common Name);带通配符的域名只支持DNS验证,其他域名支持上传文件验证;注意:填了www.a.com时,一般需要额外填上a.com。
*
证书的私钥:
生成或填写的私钥仅用于ACME接口签名,支持RSA(2048位+)、ECC(曲线)私钥;注意:证书私钥的类型决定了申请到的证书是RSA证书还是ECC(ECDSA)证书,RSA类型适用性更广也更常见;本客户端不会对此私钥进行保存或发送给其他任何人;证书签发后在部署到服务器时,需使用到此私钥;建议每次申请证书时均生成新的证书私钥。
*
ACME账户的私钥:
生成或填写的私钥仅用于ACME接口签名,支持RSA(2048位+)、ECC(曲线)私钥;账户私钥类型对证书无影响;本客户端不会对此私钥进行保存或发送给其他任何人;一个私钥相当于一个账户,可用于吊销已签发的证书;建议每次申请证书时使用相同的一个私钥(这样短期内多次申请证书时,验证域名所有权的参数极有可能会保持相同),不过每次都生成一个新的私钥大部分情况下也不会有问题。
注意:如果你选择的ACME服务(比如Google)要求提供EAB凭据并且限制了同一个EAB凭据只能绑定到一个ACME账户(私钥),那每次使用此EAB凭据时必须使用相同的一个私钥(首次时如果新创建了私钥,此新私钥需立即保存起来下次和此EAB凭据一起使用)。
*
ACME账户的联系邮箱:
此邮箱地址用于证书颁发机构给你发送邮件,比如:证书过期前的续期通知提醒。
EAB凭据:
当前ACME服务要求提供外部账号绑定凭据(External Account Binding),比如ZeroSSL:你可以在ZeroSSL的管理控制台的 Developer 中获得此凭据,所以你需要先注册一个ZeroSSL的账号。
*EAB KID:
*HMAC KEY:
确定
步骤三:验证域名所有权
等待中,请先完成第二步...
请给每个域名选择一个你合适的验证方式(推荐采用DNS验证,比较简单和通用),然后根据显示的提示完成对应的配置操作。
请每个域名选择好对应的验证方式,根据显示的提示进行对应的配置操作;必须所有域名配置完成后,再来点击下面的“开始验证”按钮进行验证,如果验证失败、或验证耗时太久,需要返回第二步重新开始操作。
开始验证
取消
重试
步骤四:下载保存证书PEM文件
等待中,请先完成第三步...
*
保存证书PEM文件:
必须保存此文件,请点击下载按钮下载,或者将证书文本内容复制保存为文件(PEM纯文本格式);文件名后缀可改成 .crt 或 .cer,这样在Windows中能直接双击打开查看。本PEM格式文件已包含你的域名证书、和完整证书链,文本中第一个CERTIFICATE为你的域名证书,后面的为证书颁发机构的中间证书和根证书,如过有需要你可以自行拆分成多个.pem文件。
下载保存
*
保存证书私钥KEY文件:
请点击下载按钮下载,或者将私钥文本内容复制保存为文件(PEM纯文本格式,.key后缀可自行修改成.pem)。如果第二步操作中你手动填写了证书私钥,此处的证书私钥和你填写的是完全一样的,可以不需要重复保存;如果你是新创建的证书私钥,则你必须下载保存此证书私钥文件。
下载保存
*
保存记录LOG文件:
建议下载保存此文件,本记录文件包含了所有数据,包括:证书PEM文本、证书私钥PEM文本、账户私钥PEM文本、所有配置参数。下次你需要续签新证书时,可以将本记录文件直接拖拽进本页面,会自动填写所有参数。
下载保存
你需要其他格式的证书文件?
大部分服务器程序支持直接使用 + 来配置开启HTTPS(比如Nginx),如果你需要 *.pfx、*.p12 格式的证书(比如用于IIS),请用下面命令将PEM证书转换成 pfx/p12 格式:
openssl pkcs12 -export -out .pfx -inkey -in
IIS证书链缺失?
对于Windows IIS服务器,你需要将证书链安装到“本地计算机”的“中间证书颁发机构”中;请将PEM证书中的所有证书拆分成单个PEM文件(后缀改成.crt或.cer),然后将系统中缺失的中间证书双击打开然后安装进去;详细参考:
http://support.microsoft.com/kb/954755
本客户端部分原理简介
得益于现代浏览器的 crypto.subtle 对加密功能标准化,不依赖其他任何js库就能在网页上实现 RSA、ECC 的加密、解密、签名、验证、和密钥对生成。在本客户端内的 X509 对象中:用 X509.CreateCSR 来生成CSR,用 X509.KeyGenerate 来创建PEM格式密钥,用 X509.KeyParse 来解析PEM格式密钥,用 X509.KeyExport 来导出PEM格式密钥;这些功能都是根据相应的标准用js代码在二进制层面上实现的,二进制数据操作封装在了 ASN1 对象中:实现了 ASN.1 标准的二进制解析和封包,使用 ASN1.ParsePEM 方法可以解析任意的PEM格式密钥或证书。以上这些都是实现ACME网页客户端的核心基础。
然后就是对接ACME实现证书的签发,和实现交互UI;对接ACME可以直接参考 RFC 8555 标准。有些证书颁发机构的ACME服务对浏览器支持不良,未提供齐全的 Access-Control-* 响应头,导致网页内无法直接调用服务接口;目前采用的解决办法非常简单粗暴,比如ZeroSSL:检测到此ACME服务存在跨域问题时,会调用 acmeReadDirGotoCORS() 方法告诉用户操作步骤(你可以点此手动调用此方法),通过在他们的页面内运行本客户端来消除跨域问题(既然打不过,那就加入他们)。