步骤二:证书配置
温馨提示:如果上次申请过证书,可以拖拽已下载保存的记录LOG文件到本页面,将自动填充上次的配置信息。
*
证书中要包含的域名:
一个证书可以包含多个域名(支持通配符),比如填写:a.com, *.a.com, b.com, *.b.com;第一个域名将作为证书的通用名称(Common Name);带通配符的域名只支持DNS验证,其他域名支持上传文件验证;注意:填了www.a.com时,一般需要额外填上a.com。
*
ACME账户的联系邮箱:
此邮箱地址用于证书颁发机构给你发送邮件,比如:证书过期前的续期通知提醒。
EAB凭据:
当前ACME服务要求提供外部账号绑定凭据(External Account Binding),比如ZeroSSL:你可以在ZeroSSL的管理控制台的 Developer 中获得此凭据,所以你需要先注册一个ZeroSSL的账号。
确定
OK
步骤三:验证域名所有权
请给每个域名选择一个你合适的验证方式(推荐采用DNS验证,比较简单和通用),然后根据显示的提示完成对应的配置操作。
请每个域名选择好对应的验证方式,根据显示的提示进行对应的配置操作;必须所有域名配置完成后,再来点击下面的“开始验证”按钮进行验证,如果验证失败,需要返回第二步重新开始操作。
开始验证
取消
重试
你需要其他格式的证书文件?
大部分服务器程序支持直接使用 + 来配置开启HTTPS(比如Nginx),如果你需要 *.pfx、*.p12 格式的证书(比如用于IIS),请用下面命令将PEM证书转换成 pfx/p12 格式:
openssl pkcs12 -export -out .pfx -inkey -in
IIS证书链缺失?
IIS certificate chain missing?
本客户端部分原理简介
Introduction to the principle of this client
得益于现代浏览器的 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() 方法告诉用户操作步骤(你可以点此手动调用此方法),通过在他们的页面内运行本客户端来消除跨域问题(既然打不过,那就加入他们)。