SafeLine icon indicating copy to clipboard operation
SafeLine copied to clipboard

[Suggestion] DNS-01 challenge in 'Get free cert' / 申请泛域名免费证书 / 用 dns 验证方式申请免费证书

Open xu5343 opened this issue 1 year ago • 33 comments

背景与遇到的问题

希望可以增加泛解析域名证书功能和dns验证方式,不然太不方便,在被的地方签完在上传,这有点多余,希望可以支持

建议的解决方案

No response

xu5343 avatar Jan 02 '24 01:01 xu5343

“在被的地方”是啥意思

yrluke avatar Jan 02 '24 06:01 yrluke

是指申请免费证书这个功能,还是上传证书,证书管理模块下含多个功能,不太清楚指的是那个

yrluke avatar Jan 02 '24 06:01 yrluke

是指申请免费证书这个功能,还是上传证书,证书管理模块下含多个功能,不太清楚指的是那个

他应该是打的错别字,在主机上签完再上传是挺麻烦的,let's encrypt支持泛解析,但只能通过DNS认证获得

cmradix avatar Jan 13 '24 06:01 cmradix

我真的很需要dns-01认证,可以看看https://nginxproxymanager.com,其中就有dns验证,可以借鉴一下。Certbot的插件也很丰富,并且很容易添加支持

AlexMa2011 avatar Feb 23 '24 12:02 AlexMa2011

希望增加dns解析,增加了dns了就能增加泛域名,某些场景下没有开放80端口,但是需要签发ssl证书,acne.sh 本身支持功能的,https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

要是需要sh脚本,可能下载这个的脚本分析下,https://lnmp.org/faq/letsencrypt-wildcard-ssl.html都是成熟的

peng2289 avatar Mar 13 '24 02:03 peng2289

强烈支持增加!http01的方式申请证书成功率太低了,用dns的方式成功率高

podywu avatar Apr 07 '24 15:04 podywu

同样有 DNS 申请证书的需求,家庭宽带封锁了 80 端口无法通过 HTTP 文件验证的方式申请证书,虽然不是付费用户但还是厚脸皮请求支持😊😊😊

simin-in-tw avatar Apr 08 '24 20:04 simin-in-tw

有需求+1,多个站点没用80/443端口,需要dns-01校验

JasonFeng02 avatar Apr 13 '24 02:04 JasonFeng02

强烈需要DNS验证模式

hargen11 avatar Apr 20 '24 08:04 hargen11

强烈需要DNS验证模式

igangtaan avatar Apr 24 '24 01:04 igangtaan

+++++1

cddqssc avatar Apr 26 '24 03:04 cddqssc

同样的需求,无论是dns验证还是云服务商api验证都可以,只要可以实现泛域名申请就可以,挨个申请真的很麻烦

ifwwww avatar Apr 28 '24 14:04 ifwwww

dns验证的话很必须,毕竟http验证对于一些环境很不方便,例如国内拦截http流量或者强制https等环境。

如果可以的话可以支持更多的申请平台,如zerossl等。

cli-r avatar May 05 '24 08:05 cli-r

一直在使用Nginx Proxy Manager的SSL证书,用Tencent Cloud的DNS认证,自动续签,希望加上这功能

capfhz avatar May 14 '24 00:05 capfhz

由于 issue 列表无法判断评论内容,回复 “+1” 其实并不能体现 issue 的受欢迎程度,反而容易把讨论内容刷掉,变成单纯的水内容。建议大家点击 issue 的 👍 来表示支持,感谢。

Lorna0 avatar May 23 '24 10:05 Lorna0

对于我这边的情况,是单独有个实例去使用acme.sh申请证书并使用一些脚本自动部署到相应服务上的。希望雷池能开一个这个接口能支持脚本自动上传和更新证书

linzyjx avatar Jun 02 '24 06:06 linzyjx

希望能加入

xy3xy3 avatar Jun 04 '24 15:06 xy3xy3

这个功能非常需要,希望官方能支持,感谢各位大佬

dislazy avatar Jun 13 '24 06:06 dislazy

建议参考1Panel这种方式去实现, 这个体验下来最丝滑 1

888go avatar Jul 02 '24 09:07 888go

可以自动续签

888go avatar Jul 02 '24 09:07 888go

可以自动续签

1panel又不能往WAF写证书,签了还得手工换

cmradix avatar Jul 02 '24 09:07 cmradix

可以自动续签

1panel又不能往WAF写证书,签了还得手工换

我指的是建议雷池参考1panel这种去实现, 比较方便,

888go avatar Jul 02 '24 09:07 888go

那你们现在都是怎么续签ssl, 雷池前面再加个反向代理吗?

888go avatar Jul 02 '24 10:07 888go

那你们现在都是怎么续签ssl,雷池前面再加个反向代理吗?

不用,直接换其他反代工具

ifwwww avatar Jul 02 '24 10:07 ifwwww

确实需要这个功能,现在才发现证书厂商的免费证书就都只有3个月了。

NaZawsze avatar Jul 08 '24 06:07 NaZawsze

什么时候有啊

AlexMa2011 avatar Aug 02 '24 07:08 AlexMa2011

在官方不提供api支持的情况下(see #196 ),可以使用类似这样的python脚本来自动上传证书,结合acme或者lego申请到的证书,配个cronjob,每天renew一下,应该可以缓解不少人的痛点 :p

#!/usr/bin/env python3
import json
import requests


ENDPOINT="https://YOUR_ADDRESS:9443"  # FIXME
ADMIN_PASSWORD="YOUPASSWORD"  # FIXME
CERT_ID=YOUR_ID # int # FIXME
CRT_FILE="/path/to/your.crt" # FIXME
KEY_FILE="/path/to/your.key" # FIXME

def get_csrf_token():
    json_data = requests.get(f'{ENDPOINT}/api/open/auth/csrf').json()
    return json_data['data']['csrf_token']


def get_jwt_token():
    csrf_token = get_csrf_token()

    data = {
      "username": "admin",
      "password": ADMIN_PASSWORD,
      "csrf_token": csrf_token,
    }
    json_data = requests.post(f'{ENDPOINT}/api/open/auth/login', json=data).json()
    return json_data['data']['jwt']


def upload_cert(crt, key):
    jwt_token = get_jwt_token()
    data = {
      "manual": {
        "crt": crt,
        "key": key,
      },
      "type": 2,
      "id": CERT_ID,
    }
    headers = {
      "Authorization": f'Bearer {jwt_token}',
    }
    requests.post(f'{ENDPOINT}/api/open/cert', json=data, headers=headers)


if __name__ == "__main__":
    with open(CRT_FILE, 'r') as crt, open(KEY_FILE, 'r') as key:
        upload_cert(crt.read(), key.read())

smartwang avatar Aug 09 '24 07:08 smartwang

建议参考1Panel这种方式去实现, 这个体验下来最丝滑 1

这个我倒是觉得无所谓的,1panel就支持这个,我的解决方案是用1panel申请和自动更新,然后执行脚本命令,将更新后的证书同步给雷池所用的证书,感觉也还好,这个容易解决,我就是一直头疼API调用不知道怎么用,官方也不提供相关的文档,简单的几个字介绍,完全找不到方向

clion007 avatar Sep 25 '24 11:09 clion007

可以自动续签

1panel又不能往WAF写证书,签了还得手工换

可以的,1panel的自动更新后支持执行一个脚本,可以在脚本里面将更新后的证书同步给WAF

clion007 avatar Sep 25 '24 11:09 clion007