无80和443端口下申请域名SSL证书(适用于 acme.sh 和 certbot)

无80和443端口下申请域名SSL证书

最近在捣鼓家用的小型服务器,搭好之后就发现许多服务如果只是 HTTP 来访问太不安全,因此琢磨来琢磨去还是选择搞一个 SSL 证书升级到 HTTPS 更安全。

但是问题来了:以前申请的时候,都是用 acme.sh 或者 certbot 通过 nginx 配置来申请 SSL 证书,但是家用宽带会屏蔽 80 和 443 端口的流量。

为了解决这个问题,我在谷歌搜了不少资料,终于找到了不通过这两个端口申请 SSL 证书的解决方案。

SSL 证书申请的方式

这一章主要简述一下 DV(Domain Validation) 的 SSL 证书的三种申请方式。以下文段取自维基百科的翻译:

域名验证证书(DV SSL)的唯一标准是证明对域名的whois记录、DNS记录文件、电子邮件或虚拟主机账户的控制。通常情况下,对域名的控制是通过以下方式之一来确定的。

  • 对发给域名whois详情中的电子邮件联系人的电子邮件的回应
  • 对发给域名中知名管理联系人的电子邮件的回应,例如(admin@,postmaster@,等等)。
  • 发布一个DNS TXT记录
  • 发布一个由自动证书颁发系统提供的非授权码

域验证(DV)的证书与扩展验证(EV)的证书不同,因为这是签发证书的唯一要求。特别是,域名验证的证书并不保证任何特定的法律实体与该证书有联系,即使域名可能意味着一个特定的法律实体控制着该域名。

通过 DNS 申请 SSL 证书

从上面可见,要想在端口受限的情况下完成 SSL 的申请,最简单的方法就是使用 DNS 方式。

获取个人域名

在申请 SSL 证书前,必须要先获得一个域名。这一步就八仙过海,各显神通,读者自行百度解决。

acme.sh 方式

参考自 acme.sh 说明

使用 acme.sh 的 DNS 认证方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证。坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

假设 hello.mydomain.com 是待申请的域名。则发起 DNS 申请的命令为:

acme.sh  --issue  --dns -d hello.mydomain.com \
 --yes-I-know-dns-manual-mode-enough-go-ahead-please

然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名 DNS 管理面板中添加这条 txt 记录即可。不会这一步的小伙伴可以多百度一下。

等待解析完成之后, 重新生成证书:

acme.sh  --renew -d hello.mydomain.com \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please

此外,如果是常见的 DNS 服务商,例如 cloudflare、dnspod、cloudxns、godaddy 和阿里云之类的,可以通过 acme.sh 的 dnsapi 实现自动证书更新

certbot 方式

和 acme.sh 类似,certbot 也可以通过这种方式完成 DNS 的 SSL 证书申请。参考自 Using Certbot Manually for SSL certificates

安装 certbot 后,输入下面命令开始进行 DNS chanllenge:

certbot certonly –manual -d hello.mydomain.com

然后一路跟着 prompt 提示,最后也要到 DNS 服务商处增加 TXT 记录,即可获得证书。

certbot 的 DNS challenge 过程
但是不好运的是,certbot 不支持阿里云的自动更新,sad。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林地宁宁

谢谢你给宁宁打米哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值