温馨提示:如果上次申请过证书,可以拖拽已下载保存的记录LOG文件到本页面,将自动填充上次的配置信息。
*
证书中要包含的域名:
一个证书可以包含多个域名(支持通配符),比如填写:
a.com,*.a.com,b.com,*.b.com;第一个域名将作为证书的通用名称(Common
Name);带通配符的域名只支持DNS验证,其他域名支持上传文件验证;注意:填了
www.a.com时,一般需要额外填上a.com。
EAB凭据:
当前ACME服务要求提供外部账号绑定凭据(External Account
Binding),比如ZeroSSL:你可以在ZeroSSL的管理控制台的 Developer 中获得此凭据,所以你需要先注册一个ZeroSSL的账号。
确定
请给每个域名选择一个你合适的验证方式(推荐采用DNS验证,比较简单和通用),然后根据显示的提示完成对应的配置操作。
请每个域名选择好对应的验证方式,根据显示的提示进行对应的配置操作;必须所有域名配置完成后,再来点击下面的“开始验证”按钮进行验证,如果验证失败,需要返回第二步重新开始操作。
开始验证
取消
重试
你需要其他格式的证书文件?
大部分服务器程序支持直接使用 +
来配置开启HTTPS(比如Nginx),如果你需要 *.pfx、*.p12
格式的证书(比如用于IIS),请用下面命令将PEM证书转换成 pfx/p12 格式:
openssl pkcs12 -export -out .pfx -inkey -in
技术及申明
得益于现代浏览器的 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接口签名,支持RSA(2048位+)、ECC(曲线)私钥。以上这些都是实现ACME网页客户端的核心基础。
然后就是对接ACME实现证书的签发,和实现交互UI;对接ACME可以直接参考 RFC 8555
标准。有些证书颁发机构的ACME服务对浏览器支持不良,未提供齐全的 Access-Control-*
响应头,导致网页内无法直接调用服务接口;目前采用的解决办法非常简单粗暴,比如ZeroSSL:检测到此ACME服务存在跨域问题时,会调用 acmeReadDirGotoCORS() 方法告诉用户操作步骤(你可以点此手动调用此方法),通过在他们的页面内运行本客户端来消除跨域问题。本程序来自开源社区,全部的申请由前端浏览器完成,本站不会存储任何数据。