社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

nginx-proxy-manager在线申请证书

各种折腾 • 1 年前 • 360 次点击  

本文可以作为 『 反向代理服务器nginx-proxy-manager 』的续篇。

在写『 反向代理服务器nginx-proxy-manager 』时,证书部分老苏又偷了一次懒,只说了导入已有证书,今天我们把它补全一下,来说说在线 SSL 证书申请

老苏曾经说过,每次偷懒,最后都要花更多的时间来填坑 😂

NPM(Nginx Proxy Manager) 支持从 Let’s Encrypt 获得证书,但需要验证你对证书中域名的控制权,也就是说你要能证明,这个域名是属于你的。

验证方式

NPMLet’s Encrypt  证书申请有两种验证方式:一种是基于 HTTP 的验证方式,另一种是基于 DNS 的验证方式。

HTTP-01 验证

关于 HTTP-01 验证的详细描述可以看官方文档:https://letsencrypt.org/zh-cn/docs/challenge-types/#http-01-%E9%AA%8C%E8%AF%81

这种方式最简单,不需要任何关于域名配置的额外知识,但是必须使用 80 端口,绝大部分人可能用不了,所以这里就不说了。

DNS-01 验证

关于 DNS-01 验证的详细描述可以看官方文档:https://letsencrypt.org/zh-cn/docs/challenge-types/#dns-01-%E9%AA%8C%E8%AF%81

此验证方式要求您在该域名下的 TXT 记录中放置特定值来证明您控制域名的 DNS 系统,这需要您的 DNS 提供商提供 API

准备工作

这里我们假设:

  • 你有域名;
  • 而且已经正确的做了 DNS 泛解析,也就是使用通配符 * 来匹配所有的子域名;
  • 域名已可以正常使用;

DNS 提供商(DNS Provider)不同,会影响 Credentials File Content

你如果选择 Aliyun

和选择 DNSPodCredentials File Content 部分的参数是不一样的

下面老苏以自己使用的 DNSPod 来举例,如果你用的和老苏不同,还需要根据自己的 DNS Provider 来改变,原理应该是差不多的

申请 API

打开页面 https://console.dnspod.cn/account/token/token,找到 DNSPod Token ,然后点 创建秘钥

起个名字,便于识别

秘钥只显示一次,记得保存好

配置 NPM

找到 Let’s Encrypt 按钮

默认是 HTTP 验证,需要启用 Use a DNS Challenge 才是 DNS 验证

参数说明:

  • Domain Names :这里申请的是泛域名,所以用了 *.laosu.ml,这样不用为每个 Proxy Host 去申请证书;
  • Email Address for Let's Encrypt:如果你之前申请过 Let's Encrypt 的证书,这里要跟之前的邮件一致;这个邮件地址可以改,但是似乎改起来比较麻烦;
  • Use a DNS Challenge:必需要启用,才能使用 DNS 验证模式;
  • DNS Provider:老苏用的是 DNSPod
  • Credentials File Content
    • dns_dnspod_email = "email@example.com",这里的邮件地址是你绑定 DNSPod 的邮箱,可以从 DNSPod 中的个人账号中查到;
    • dns_dnspod_api_token = "id,key",前面申请的 IDToken,需要用这两个字段来组合成一个完整的 Token,组合方式为:"ID,Token"(用英文半角逗号分割),比如 ID 为:334490ToKen 为:eb5976c68aba5b14a0558b77c17c39ba。即完整的 Token 为:334490,eb5976c68aba5b14a0558b77c17c39ba 。得到完整的 Token 之后,替换掉 dns_dnspod_api_token = "id,key" 后面的部分
  • Propagation Seconds:留空即可;
  • I Agree to the Let's Encrypt Terms of Service:必须要同意;

save 保存

最后一行可以看到 SSL 证书已经申请完成,有效期3个月,到期会自动续期。

你也可以直接手动 Renew Now

参考文档

验证方式 - Let's Encrypt - 免费的SSL/TLS证书
地址:https://letsencrypt.org/zh-cn/docs/challenge-types/

密钥管理 - DNSPod 服务与支持
地址:https://docs.dnspod.cn/account/dnspod-token/

DNS 解析 DNSPod 泛解析说明-操作指南-文档中心-腾讯云
地址:https://cloud.tencent.com/document/product/302/9073

@所有人:写文不易,如果你都看到了这里,请点个在看,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/146889
 
360 次点击