![]() |
1
Guazi2 2 天前 ![]() lucky or nginx proxy manager
|
![]() |
2
qbmiller 2 天前
cloudfare 是不是免费代理? 我的域名阿里云买的,但解析地址迁移到 cf ,然后就能用了。也不用每几个月一刷新了
|
4
2MO 2 天前
51 我刚用 https://www.rainyun.com/shop_ 云应用的免费额度搭了个 https://github.com/mouday/domain-admin ,希望稳定
|
5
asdqaz 2 天前
请求一次签一次对他压力太大了。
|
![]() |
6
NewYear 2 天前
个人觉得这是好事。
因为这会强制推动 SSL 证书完全自动化申请、续期。 |
7
guo4224 2 天前 via iPhone
那么多 hook 点,写几个脚本的事
|
![]() |
8
Love4Taylor 2 天前 via iPhone
说到这个,不知道 IP 证书会怎么样
|
![]() |
9
shannon404 2 天前
|
![]() |
10
InDom 2 天前
|
11
AhFei 2 天前
一直在用 acme.sh 自动更新证书 + Nginx 反代,没有特殊需求的情况下操作也挺简单的: https://yanh.tech/2024/08/applying-certificates-with-acme-sh/
|
![]() |
13
snylonue 2 天前
nixos 提供的 acme
|
![]() |
14
irrigate2554 2 天前 ![]() caddy
|
15
lovelylain 2 天前 via Android
acme.sh 更新证书后,ssh 上传到目标机
|
![]() |
16
ijyuqi 2 天前
|
![]() |
18
zhj9709 2 天前
我一直用 nginx proxy manager
|
19
TrembleBeforeMe 2 天前
certd 更新 cdn 域名证书
|
![]() |
20
hellolinuxer 2 天前
等到 47 天后的时候,我应该已经不用操心了哇
另外:最近把所有免费的全部改成付费的了 |
21
hefish 2 天前
|
![]() |
22
hellolinuxer 2 天前
@hefish 我的意思是现在不操心免不免费了,能省事就省事(暂时还能够买 1 年期证书),后续平台都会解决的,自托管的也会有更成熟的解决方案
|
![]() |
23
ysc3839 2 天前 ![]() 我选择使用 lego https://go-acme.github.io/lego/ 自动更新证书
同时个人不建议使用 acme.sh 。 很多人使用 acme.sh 是觉得 shell 脚本安装简单,没有外部依赖。实际上 shell 脚本因为自身功能太弱,很多功能都要依赖外部工具实现,如提取字符串需要依赖外部的 grep 。加上 shell 脚本是动态解释运行的,如果缺失了某个依赖的程序,只有实际运行到才会报错,很容易遇到执行了一半出错的情况。 我以前在特殊的路由器系统上运行 acme.sh ,就遇到了很多依赖缺失的情况。虽然说脚本可以在启动时进行检测,但是这也是要人工添加的,难免会有疏漏。 其次 shell 脚本没有解析 JSON 的能力,外部解析 JSON 的工具如 jq 等又要额外安装,所以很多情况下会直接用 grep 正则表达式提取 JSON 中的数据,这么做有提取出错的风险。 最后 shell 脚本很容易把变量等数据当成代码执行,出现远程代码执行漏洞的风险较高,同时 acme.sh 曾经确实出现过远程代码执行漏洞。 选择使用 lego ,是因为它基于 Golang ,真正实现了单文件无外部依赖。不足之处是不支持自动添加定时任务,只能手动配置。 |
![]() |
24
lnkn 2 天前
插眼关注下大佬们的方案
|
![]() |
25
coldle 2 天前 via Android
#23
+1, 这种活交给无依赖的单文件二进制干非常安逸 |
![]() |
26
iceecream 2 天前
突然想到一个问题,这种证书过期之后会被吊销。但是随着这种短期证书越来越多,证书的 CRL 列表会越来越大。这种证书 CA 是怎么来来保证查询吊销列表顺畅的。
|
![]() |
27
docx 2 天前 via iPhone
acme 是小事,主要是第三方平台要全部同步过去。比如同时用了几家 CDN ,要把 acme 签好的证书上传给他们并更新生效,暂时还没有太好的办法。
|
![]() |
31
realpg 1 天前
cursor 两次对话 50 分钟 完成 acme.sh 自动化签证书后 post-cert-script 自动上传阿里云腾讯云
并对阿里云腾讯云的所有 CDN 域名智能应用新证书 对阿里云腾讯云的所有负载均衡器智能应用新证书 |
33
jiuhuicinv 1 天前
换 http 。不伺候了
|
34
Hanada 1 天前 via Android
@jiuhuicinv 现在 chrome 已经开始在访问 http 网站时提醒不安全了(是直接弹窗提醒,你点击确认之后才能继续浏览那种)。保不齐到时候真的会访问 http 直接给你来个红色页面,把 http 网站打成像诈骗网站一样的级别
|
36
jiuhuicinv 1 天前
@Hanada 反正写的自用接口不再关心 SSL 了(有部署证书但不强制 https 请求)。浏览器和网站的问题到时候再说吧,相信后人的智慧
|
![]() |
37
GoodRui 1 天前 via Android
怎么没人提 certimate ?
难道是太新太过先进了,知道的人太少吗? |
![]() |
38
xiangyuecn 1 天前 ![]() 原则上,SSL 配置这玩意默认不应该让开发者去操心,比如默认由 Nginx 之类的全自动实现。
就和在坐的各位一样,绝大部分 web 服务器压根不关心 https 是怎样的,只关心用户能不能正常访问,管你妈的是 https 还是啥玩意😂 |
39
dnsjia 1 天前
|
![]() |
40
lekai63 1 天前 via iPhone
勇证书一般有 web 服务提供吧,用到 nginx 吧
以前我用 1 楼说的 nginx proxy manager 现在我用 nginx-ui (资源占用稍微小点) 当然 都不如只跑 nginx 站用小 |
41
Rache1 1 天前 ![]() @xiangyuecn #38
![]() |
43
Panameragt 1 天前
太对全自动的方案了 ,比如一楼
|
![]() |
46
holoto 1 天前
域名挂到 cf 解析。用 cloudflared tunnel 替换 nginx 或者 apache 。
|
![]() |
50
summer2019 1 天前 via iPhone
@GoodRui 折腾过,折腾一个下午一直卡在 dns 提供商那一步,一直请求失败。实在折腾累了,遂放弃
|
![]() |
51
beyondstars 1 天前
自建服务(or 内部服务)用自签证书,公开服务用任何基于 acme 的自动化方案。
|
![]() |
52
luofeiff6666 1 天前
nginx proxy manager
|
53
Greendays 1 天前
如果是部署在第三方服务器上托管的业务,那可有罪受了。
|
![]() |
54
shiny 1 天前
我自己写了一个,其实也没很难 https://github.com/shiny/handyacme
|
55
Damn 1 天前 via iPhone
|
56
bigbigeggs 1 天前
|
57
crackidz 1 天前
ACME 3 个月自动续期一下就好了
|
58
ENE 1 天前
因为我是 docker 运行 nginx 的,所以用 acme.sh 自动更新的,你可看看这个教程[使用 docker acme 申请、续订泛域名证书,并自动重载[docker nginx]( https://sleele.com/2021/04/15/docker-acme-with-docker-nginx/)
|
![]() |
59
memcache 1 天前
nginx proxy mananger 能自动续签
|
![]() |
60
GoodRui 1 天前 via Android
@summer2019 这个都是傻瓜式的点点点有什么难的吗...dns 提供商配置那里,如果你用阿里云或者腾讯云的话,就只需要输入个 access id 和 key 不就行了...别的都不用管啊
|
61
vytvex 1 天前 via Android
有些不太明白能解釋一下嗎? Cloudflare origin 證書能用 5 年,為甚麼要在意對外的 ssl cert?
|
62
eslizn 1 天前
traefik + ingress annotation 很 easy 的解决方案了
|
63
EnderAvaritia 1 天前
acme 和 win-acme ,自己去 git 搜
之后用 nginx 统一代理转发 |
64
v2er119 22 小时 41 分钟前
AI 写脚本,监控+提醒+certbot 自动申请
https://maifeipin.com/archives/zi-dong-bu-shu-xi-tong-jian-kong-jiao-ben 只需替换你的邮箱和 tencentcloud.ini (对应的域名 API key ) 就行了 ··· #!/bin/bash THRESHOLD=7 CREDENTIALS="/etc/letsencrypt/tencentcloud.ini" EMAIL="[email protected]" EMAIL_ARG="--email $EMAIL" # EMAIL_ARG="--register-unsafely-without-email" nginx_conf_dirs=( "/etc/nginx/nginx.conf" "/etc/nginx/conf.d/" "/etc/nginx/sites-enabled/" "/etc/nginx/sites-available/" "/usr/local/nginx/conf/" ) nginx_cert_files=$(mktemp) for conf_dir in "${nginx_conf_dirs[@]}"; do if [ -d "$conf_dir" ]; then find "$conf_dir" -type f -name "*.conf" 2>/dev/null | while read -r file; do grep -E '^\s*ssl_certificate\s+' "$file" | awk '{print $2}' | sed "s/['\";]//g" >> "$nginx_cert_files" done elif [ -f "$conf_dir" ]; then grep -E '^\s*ssl_certificate\s+' "$conf_dir" | awk '{print $2}' | sed "s/['\";]//g" >> "$nginx_cert_files" fi done sort -u "$nginx_cert_files" -o "$nginx_cert_files" while read -r cert_path; do if [ -z "$cert_path" ]; then continue; fi if [ ! -f "$cert_path" ]; then echo "证书文件: $cert_path (未找到!)" echo "-----------------------------" continue fi expiry_date=$(openssl x509 -noout -enddate -in "$cert_path" 2>/dev/null | cut -d= -f2) expiry_epoch=$(date -d "$expiry_date" +%s) now_epoch=$(date +%s) days_left=$(( (expiry_epoch - now_epoch) / 86400 )) all_domains=$(openssl x509 -noout -text -in "$cert_path" 2>/dev/null | grep "DNS:" | sed 's/.*DNS://;s/, /\n/g' | tr '\n' ' ') if [ $days_left -le $THRESHOLD ]; then main_domain=$(echo "$all_domains" | awk '{print $1}') echo "证书文件: $cert_path" echo " 包含域名: $all_domains" echo " 过期时间: $expiry_date (剩余 $days_left 天)" echo " 证书即将过期或已过期,自动续期..." certbot certonly \ -a dns-tencentcloud \ --dns-tencentcloud-credentials "$CREDENTIALS" \ -d $all_domains \ $EMAIL_ARG \ --non-interactive --agree-tos \ --keep-until-expiring if [ $? -eq 0 ]; then echo " 证书续期成功" # 自动覆盖 Nginx 实际用的证书 src_cert="/etc/letsencrypt/live/$main_domain/fullchain.pem" src_key="/etc/letsencrypt/live/$main_domain/privkey.pem" if [ -f "$src_cert" ] && [ -f "$src_key" ]; then # 只在 Nginx 用的路径和 Let’s Encrypt 路径不一致时覆盖 if [ "$cert_path" != "$src_cert" ]; then cp -f "$src_cert" "$cert_path" echo " 已覆盖 Nginx 用的证书: $cert_path" fi # 查找 key 路径 key_path=$(grep -E '^\s*ssl_certificate_key\s+' /etc/nginx/nginx.conf /etc/nginx/conf.d/*.conf /etc/nginx/sites-enabled/* /etc/nginx/sites-available/* /usr/local/nginx/conf/*.conf 2>/dev/null | grep "$main_domain" | awk '{print $2}' | sed "s/['\";]//g" | head -n1) if [ -n "$key_path" ] && [ "$key_path" != "$src_key" ]; then cp -f "$src_key" "$key_path" echo " 已覆盖 Nginx 用的私钥: $key_path" fi fi systemctl reload nginx else echo " 证书续期失败" fi else echo "证书文件: $cert_path" echo " 包含域名: $all_domains" echo " 过期时间: $expiry_date (剩余 $days_left 天)" fi echo "-----------------------------" done < "$nginx_cert_files" rm -f "$nginx_cert_files" ··· |
![]() |
65
irainsoft 22 小时 4 分钟前
@vytvex #61 你自己都明白了是 origin ssl ,这是 Cloudflare 边缘节点和你源站服务器之间的通信,其实就是一个内部信任的自签证书而已。如果你拿这个证书去做面向用户的 SSL ,那用户侧看到的就是不受信任的根证书错误( SSL 红屏错误)。如果真的不在意这个,不如自己拿 openssl 签一个 100 年的了。
|
66
Alliot 21 小时 19 分钟前
certbot 加上 deploy-hook 自己实现。
一个证书管理没必要引入太多依赖。 |
68
azarasi 19 小时 26 分钟前
crontab+certbot 不行吗?
|
![]() |
69
imlonghao 18 小时 30 分钟前
@Damn 有的兄弟 `CNAME support by default` https://go-acme.github.io/lego/index.html
|
![]() |
71
coolfan 16 小时 55 分钟前 via Android
在用 certd ,狠下心所有服务器配置一遍。(其实也就第一个服务器配置久一点,后面几个都是复制黏贴)
|
![]() |
72
bronyakaka 16 小时 8 分钟前
certbot 很稳,别碰 caddy
|
![]() |
73
summer2019 12 小时 51 分钟前
|