HTTPS证书申请相关笔记

申请免费的HTTPS证书相关资料

参考资料:

HTTPS 检测

苹果ATS检测

2017年1月1日起,苹果强制所有 app 满足 HTTPS,即 iOS9 推出的 App Transport Security (ATS) 特性。
输入域名,检查您的 iOS app 是否满足 ATS 特性。

什么是ECC证书?

  • 生成、签署 ECC 证书,Nginx 部署双证书教程 – 米饭粑

    椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学,其更适合于移动互联网,有更好的安全性和更好的性能。ECC加密算法 1985年 提出,到 2005 年才在各种操作系统中获得广泛支持,2015 年开始被普遍性的部署。

    可用于 ECDHE 数字签名的算法主要有 RSA 和 ECDSA 内置 ECDSA 公钥的证书一般被称之为 ECC 证书,内置 RSA 公钥的证书就是 RSA 证书。

渠道2: Let's Encrypt

优点

  1. 开源免费
  2. 支持通配符域名证书
  3. HTTPS证书支持iOS企业版下载

缺点

  1. 证书有效期3个月

Let's Encrypt 的是否支持非80,443的其它端口来验证?

答案是: NO,不支持! 因为安全问题!

此类问题解决方案就是使用DNS验证.

参考资料:

申请工具4: acme.sh

优点

  1. 支持功能全
  2. 日志信息足够详细

缺点

  1. 安装很麻烦

常用命令

# 使用测试服务器签发证书(防止正式服务器签发错误次数太多被封锁)
# --staging
# export ACME_VERSION=2

#
通过 WebRoot 方式
acme.sh --issue -d bh.baixiangfood.com -w wwwroot --debug

#
第一次
export DP_Id="123456"
export DP_Key="asfadsfsdfasdfasdfasdfsdfasdfasdfasdf"
acme.sh --issue -d azyk.net -d '*.azyk.net' --dns dns_dp --debug
acme.sh --issue -d baixiangfood.azyk.net -d '*.baixiangfood.azyk.net' --dns dns_dp --debug

#
第一次之后
acme.sh --renew -d azyk.net --force --debug


#
导出相关证书到指定地方
acme.sh --install-cert -d azyk.net --key-file my.key --fullchain-file myfullchain.cer --debug

#
生成 .pfx 格式供 IIS 导入使用
# 因为 `fullchain.cer` = `ca.cer` + `*.azyk.net.cer`所以导入 IIS 里的时候选择 `fullchain.cer` 才能一步到位,
# 否则会提示,证书不受信任,因为可能缺少 `ca.cer` 的原因.
#openssl pkcs12 -export -out azyk.net.pfx -inkey '*.azyk.net.key' -in '*.azyk.net.cer'
openssl pkcs12 -export -out my.pfx -inkey my.key -in myfullchain.cer

如何申请证书?

参考资料:

将子域名的验证权限用别的DNS服务商处理?

参考资料:

  • Linux 下使用 acme.sh 和 NS 代管申请 Let's Encrypt 免费通配符证书 - 烧饼博客

    一种折衷的方法,将 ACME 认证域名单独托管至支持 API 的 DNS 服务商。即使 API Key 泄露,攻击者也无法篡改网站的其它 DNS 记录。
    本例采用的方法是 NS 代管一个任意子域名,然后利用 CNAME 转发 ACME 挑战子域名。
    本例假设你拥有两个域名 example.com  example.org,现在希望将 acme.example.com 转交由 DigitalOcean 域名托管服务代管,并将两个域名的 ACME 挑战子域名转发至这个子域名。

  • DNS alias mode · Neilpang/acme.sh Wiki · GitHub

    Do not remove the CNAME like : _acme-challenge.importantDomain.com after you issue the cert. It will be reused when acme.sh tries o renew the cert. The left cname record _acme-challenge.importantDomain.com doesn't harm to your domain at all. Just keep it there.

    We have another parameter: --domain-alias, it has the same meaning with --challenge-alias.
    But with --domain-alias you don't need to add _acme-challenge. prefix.

如何通过 443 端口申请证书?

如何与IIS配合以便能正确签发证书?

方法2:

  1. 打开 IIS 的对应 80 端口的网站
  2. 右键添加虚拟目录
  3. 别名设置为 .well-known
  4. 物理路径设置为 Cygwin 的 /home/YOUR_USER_NAME/wwwroot/.well-known 路径对应的 Windows下的路径

    如:C:\Cygwin\home\YOUR_USER_NAME\wwwroot\.wel-known

  5. 然后通过命令acme.sh --issue -d x.com -w wwwroot申请证书即可

方法1:

  1. 通过 mklink /d 将 物理路径设置为 Cygwin 的 /home/YOUR_USER_NAME/wwwroot/.well-known 路径对应的 Windows下的路径 链接 到 IIS 网站目录下.

DNSPod 服务提供商 泛域名 [野卡] 申请记录:

  • √申请成功: *.azyk.net

    acme.sh --issue -d '*.azyk.net' --dns dns_dp --debug --staging

  • √申请成功: *.sub1.azyk.net

    acme.sh --issue -d '*.sub1.azyk.net' --dns dns_dp --debug --staging

  • √申请成功: *.sub2.sub1.azyk.net

    acme.sh --issue -d '*.sub2.sub1.azyk.net' --dns dns_dp --debug --staging

    虽然证书能申请成功,但是在 域名解析控制台 却无法正常添加解析记录,提示:
    泛解析级数超出限制

  • ×申请失败: *.sub3.sub2.sub1.azyk.net

    acme.sh --issue -d '*.sub3.sub2.sub1.azyk.net' --dns dns_dp --debug --staging

    提示错误信息:
    Error add txt for domain:_acme-challenge.sub3.sub2.sub1.azyk.net

    测试:
    1. 设置CNAME: _acme-challenge.sub2.sub1 => _acme-challenge.azyk.net
    2. 执行命令:acme.sh --issue -d '*.sub3.sub2.sub1.azyk.net' --challenge-alias azyk.net --dns dns_dp --debug --staging
    3. 返回错误: *.sub3.sub2.sub1.azyk.net:Verify error:No TXT record found at _acme-challenge.sub3.sub2.sub1.azyk.net

    解决方案: 更换DNS服务商
    理由: DNSPod 免费版本只支持2级通配符.

参考资料:

申请证书时出现SERVFAIL looking up CAA for Secondlevel.azyk.net错误

x.azyk.net:Verify error:DNS problem: SERVFAIL looking up CAA for Secondlevel.azyk.net

参考资料:

在Cygwin里安装 acme.sh 步骤

  1. 准备好 Cygwin 环境
  2. 安装好 curl, openssl and crontab

在Windows环境安装Cygwin工具包的步骤

已有.cer和.key文件如何供IIS导入证书?

#openssl pkcs12 -export -out azyk.net.pfx -inkey '*.azyk.net.key' -in '*.azyk.net.cer'
#因为 `fullchain.cer` = `ca.cer` + `*.azyk.net.cer`所以导入 IIS 里的时候选择 `fullchain.cer` 才能一步到位,
#否则会提示,证书不受信任,因为可能缺少 `ca.cer` 的原因.
openssl pkcs12 -export -out azyk.net.pfx -inkey '*.azyk.net.key' -in 'fullchain.cer'

参考资料:

  • 如何在 IIS7 上安装 SSL 证书?

    1、在你的服务器上,解压下载的证书 zip 文件,并重命名保存为 your_domain_name.cer。
    2、 打开 IIS 管理器,开始菜单(Start)-> 管理工具(Administrative Tools)-> IIS 管理器(Internet Information Services (IIS) Manager)
    3、你可以看到连接(Connections)下的主机,点击你服务器的主机名。
    4、在中间菜单中,IIS 部分,双击 服务器证书(Server Certificates)。
    5、在操作菜单,点击 完成证书请求(Complete Request Certificate) 向导。
    6、在完成证书请求向导,指定证书认证响应(Specify Certificate Authority Response)页,选择刚刚解压的文件。
    7、填写一个名称,用于辨别该证书是哪张证书。
    8、证书安装到这里就完成了。

  • How to Make a .pfx File When Given .crt and .key Files | SherWeb

    openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

  • Using Let's Encrypt with IIS on Windows - Rick Strahl's Web Log

    This script produces a PFX file which can then be imported into IIS.
    There are also tools to install and update existing certificates into IIS but it looks there are currently some changes in the API that made this not work for me. I wasn't able to even get the tools to load.
    You can manually install the certificate with:
    certutil -importPFX "c:\admin\certs\codepaste2016-02-28--20:22" –p password

  • iis - IIS7: How to import public key and private key as two seperate files? - Server Fault

签发证书成功后产生的文件及其各自用途

例子:通配符域名生成成功后产生了以下文件:

    './.acme.sh/*.azyk.net':
'*.azyk.net.cer'
'*.azyk.net.conf'
'*.azyk.net.csr'
'*.azyk.net.csr.conf'
'*.azyk.net.key'
ca.cer
fullchain.cer

各种后缀的文件意义和用途相关参考资料:

得此灵感通过Beyond Compare工具对比 之后发现的确是 fullchain.cer = ca.cer + *.azyk.net.cer 所以导入 IIS 里的时候选择 fullchain.cer 才能一步到位,否则会提示,证书不受信任,因为可能缺少 ca.cer 的原因.

  • how to update acme.sh · Issue #187 · Neilpang/acme.sh

    我放在nginx配置文件里面的只有fullchain.cer和domain.com.key
    那么其他文件是什么作用?
    其他的文件没有作用, 为的是别的服务器,不光是nginx。 你需要什么就指定什么,别的不管。

  • 获取免费的 Let’s Encrypt 泛域名 SSL 证书 - VirCloud's Blog - Learning&Sharing

    [Sat Mar 17 16:10:54 CST 2018] The intermediate CA cert is in /root/.acme.sh/owen.ml/ca.cer
    [Sat Mar 17 16:10:54 CST 2018] And the full chain certs is there: /root/.acme.sh/owen.ml/fullchain.cer

  • Let's Encrypt 给网站加 HTTPS 完全指南

    cert.pem #server cert only
    privkey.pem #private key
    chain.pem #intermediates
    fullchain.pem #server cert + intermediates

  • [Solved] Why isn't my certificate trusted? - Server - Let's Encrypt Community Support

    The difference is, the ‘chain.pem’ file contains a cross signature from an IdenTrust root which is present in most browsers today.
    The ‘fullchain.pem’ references the ISRG root certificate, which is not yet present in most browsers as Let’s Encrypt are still in the process of applying to have it included.

    Currently both files should be based on the same chain provided by the Let’s Encrypt CA,

    So when I downloaded ‘fullchain.pem’ via FTP and renamed it to ‘fullchain.crt’ to check it, I ended up with an error “this certificate cannot be verified up to a trusted certification authority”. But downloading ‘chain.pem’ and renaming it ‘chain.crt’ showed me the cross signed intermediate.

  • 说明 · Neilpang/acme.sh Wiki

    注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件
    正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误

  • SSL中,公钥、私钥、证书的后缀名都是些啥? - 刘长元的回答 - 知乎

    CA,certificate authority。证书局,用于制作、认证证书的第三方机构,我们假设营业执照非常难制作,就像身份证一样,需要有制证公司来提供,并且提供技术帮助工商局验证执照的真伪。

  • 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等) - guogangj - 博客园

    CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于NIX系统,
    CER - 还是certificate,还是证书,常见于Windows系统,
    KEY - 通常用来存放一个公钥或者私钥,
    CSR - Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥
    PFX/P12 - predecessor of PKCS#12,对
    nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个"提取密码",你想把里面的东西读取出来的话,它就要求你提供提取密码

  • What is the difference between a .CRT and a .CER file?

    The file extensions .CRT and .CER are interchangeable.

申请工具3: 浏览器在线申请 SSL For Free Online

  1. Get HTTPS for free!
  2. SSL For Free - Free SSL Certificates in Minutes
  3. FreeSSL.org - 一个申请免费HTTPS证书的网站
  4. 域名型(DV)免费SSL证书 - SSL 证书 - 文档首页 - 腾讯云文档平台 - 腾讯云

优点

  1. 在线即可用,不需要安装任何软件

缺点

  1. 国内某些域名无法正常访问导致无法签发证书
  2. 需要全手动配置
  3. 无法自动续签

申请工具2: Certify SSL Manager

manage free https certificates for IIS
The app is free for up to 5 managed sites per server

官方地址:Certify Your Windows IIS Website - simple free certificates powered by Let's Encrypt
下载地址:Certify Your Windows IIS Website - simple free certificates powered by Let's Encrypt

优点

  1. 有UI运行界面
  2. 大部分情况一路点击即可完成,需要手动设置的很少
  3. 支持自动配置 IIS 的 MIME 类型
  4. 支持在请求证书前自我检查配置是否正常
  5. 自动续签证书实践时有效.

缺点

  1. 许多选项不太明白啥功能
  2. 证书申请失败时错误信息不够详细(无法辅助排查某些特殊情况下无法正常签发证书的问题原因)

使用步骤简述

  1. 下载最新版本
  2. 安装并运行
  3. TODO

如何自动续签证书?

程序本身有这个功能。 原理是:通过安装成系统服务的形式. 但是实际操作过程中,能够成功生效并续签.

申请工具1: Windows ACME Simple (WACS)

A simple ACME client for Windows - for use with Let's Encrypt. (Formerly known as letsencrypt-win-simple (LEWS))

官方地址:PKISharp/win-acme: win-acme - A Simple ACME Client for Windows (for use with Let's Encrypt)
下载地址:Releases · PKISharp/win-acme

优点

  1. 手动操作比较多,相对比较灵活?

缺点

  1. 命令行运行界面
  2. 需要手动输入域名,网站地址
  3. 需要手动配置 IIS 的 MIME 类型
  4. 自动续签证书实践不成功.
  5. 证书申请失败时错误信息不够详细(无法辅助排查某些特殊情况下无法正常签发证书的问题原因)

使用步骤简述

  1. 下载最新版本
  2. 解压后运行letsencrypt.exe
  3. 输入M开始手动申请
  4. TODO

如何自动续签证书?

程序本身有这个功能。 原理是:通过创建一个系统任务计划任务来运行. 但是实际操作过程中,一直未成功生效过.囧

渠道1: StartSSL

优点

  1. 证书有效期1年
  2. 老牌子

缺点

  1. HTTPS证书不支持iOS企业版下载
  2. 被国内公司玩坏了?

申请新域名证书的步骤

参考资料:

二次登录网站的步骤

  1. 双击"StartSSL登录证书.pfx" 导入 密码:xxx
  2. 登录网站:https://www.startssl.com/ - 点击“Authenticate”

如何续签登录证书?

续签时,使用原来的帐号重新注册,即可。


附件列表

     

    posted @ 2018-05-11 17:59 Asion Tang 阅读(...) 评论(...) 编辑 收藏