Search: #证书

  1. 自建节点证书相关说明更新▎覆盖用于验证证书的域名,但不会改变 SNI免流等场景下, SNI 改为混淆, 不关验证, 仍然验证证书的域名 Xray: verifyPeerCertByName, URI 上叫 vcn mihomo: name-cert-verify Surge: server-cert-verify-name Sub-Store 中可按上述输入写字段, 或使用脚本操作 $server['name-cert-verify'] = 'b.com' 原消息 服务器合集 合集 恰饭推荐 群组 联系推广 #VPS #服务器 #节点 #自建 #证书 #SNI #hostname #TLS #SHA256 #自签 #指纹 #SSL

    自建节点证书相关说明更新

    覆盖用于验证证书的域名,但不会改变 SNI

    免流等场景下, SNI 改为混淆, 不关验证, 仍然验证证书的域名

    Xray: verifyPeerCertByName, URI 上叫 vcn
    mihomo: name-cert-verify
    Surge: server-cert-verify-name

    Sub-Store 中可按上述输入写字段, 或使用脚本操作 $server['name-cert-verify'] = 'b.com'

    原消息

    服务器合集 合集 恰饭推荐 群组 联系推广

    #VPS #服务器 #节点 #自建 #证书 #SNI #hostname #TLS #SHA256 #自签 #指纹 #SSL

    • ❤️1
  2. Sub-Store 自动设置服务端证书 SHA-256 指纹仅 Node.js 版支持这里示范的是直接从服务端取, 支持所有目标(包括 sing-box 的 certificate_public_key_sha256) 原消息相关: 自建节点证书相关说明 服务器合集 Sub-Store 合集 合集 恰饭推荐 群组 联系推广 #节点 #证书 #SNI #TLS #SHA256 #指纹 #SSL #sing-box #mihomo #surge

    Sub-Store 自动设置服务端证书 SHA-256 指纹

    仅 Node.js 版支持
    这里示范的是直接从服务端取, 支持所有目标(包括 sing-box 的 certificate_public_key_sha256)

    原消息

    相关: 自建节点证书相关说明

    服务器合集 Sub-Store 合集 合集 恰饭推荐 群组 联系推广

    #节点 #证书 #SNI #TLS #SHA256 #指纹 #SSL #sing-box #mihomo #surge

  3. Caddy 配置保留带下划线的请求头如果使用 Nginx 反代 Sub2API 需要保留带下划线的请求头(如 session_id、conversation_id、thread_id),否则多账号环境下的粘性会话(Sticky Session)会失效

    Caddy 配置保留带下划线的请求头

    如果使用 Nginx 反代 Sub2API 需要保留带下划线的请求头(如 session_idconversation_idthread_id),否则多账号环境下的粘性会话(Sticky Session)会失效。
    Nginx
    http {
        underscores_in_headers on;
    }

    Caddy(需最新 master)
    xcaddy build master --output /usr/bin/caddy

    servers :443 {
        expected_underscore_headers session_id conversation_id thread_id
    }


    Sub2API:https://github.com/Wei-Shaw/sub2api/issues/2784
    Caddy:https://github.com/caddyserver/caddy/issues/7808

    服务器合集 合集 群组 恰饭 联系推广

    #redis #caddy #服务器 #证书 #tls #数据库

    • ❤️1
  4. Caddy 使用 Redis 共享 storage共享 storage 的实例会自动共享资源并协调证书管理▎mise官方文档curl

    Caddy 使用 Redis 共享 storage

    共享 storage 的实例会自动共享资源并协调证书管理

    ▎mise

    官方文档

    curl https://mise.run | sh

    echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc

    fish:
    echo '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish

    重启你的 shell 会话, 安装 go
    mise use -g go


    ▎caddy

    caddy 安装: 官方文档

    xcaddy 安装:
    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

    pberkel/caddy-storage-redis 安装:
    补充一点 如果想用最新的特性 可以用 xcaddy build master 但是可能也有新鲜的 bug 🐶
    xcaddy build latest --with github.com/pberkel/caddy-storage-redis --output /usr/bin/caddy

    pberkel/caddy-storage-redis 文档

    注册一个 upstash.com 的免费 Redis 或准备一个自己的

    caddy 配置(省略其他的部分)
    /etc/caddy/Caddyfile

    encryption_key 开启加密
    compression 开启压缩
    {
    storage redis {
    address xxxxxxxxxx.upstash.io:6379
    username default
    password xxxxxxxxxx
    encryption_key MwhAhPKhr687n94Jd9TiPRcwHaVReLsv
    compression true
    tls_enabled true
    }
    }

    ▎相关阅读

    从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)

    服务器合集 合集 群组 恰饭 联系推广

    #redis #caddy #服务器 #证书 #tls #数据库

    • ❤️3
  5. Certd: 全自动证书管理之前介绍过一个 Certimate...我都用过 如果你要问我更愿意用哪个 我觉得 Certd 更好一点某些逻辑有点怪 但是自由度很高自带的 webhook 里居然只有 get/post/put 没有 patch...还好能用 js 脚本 非常哇塞流水线很完善部分功能收费我永远喜欢 acme.sh • 全自动完成 DNS‑01、HTTP‑01 等多种验证并申请免费通配符证书 • 支持 110+ 部署插件,覆盖 Nginx、阿里云、腾讯云、K8S、宝塔等 • 私有化部署,支持 SQLite、PostgreSQL、MySQL,提供 2FA、授权加密等安全特性

    Certd: 全自动证书管理

    之前介绍过一个 Certimate...我都用过 如果你要问我更愿意用哪个 我觉得 Certd 更好一点

    某些逻辑有点怪 但是自由度很高
    自带的 webhook 里居然只有 get/post/put 没有 patch...
    还好能用 js 脚本 非常哇塞
    流水线很完善
    部分功能收费

    我永远喜欢 acme.sh

    • 全自动完成 DNS‑01、HTTP‑01 等多种验证并申请免费通配符证书
    • 支持 110+ 部署插件,覆盖 Nginx、阿里云、腾讯云、K8S、宝塔等
    • 私有化部署,支持 SQLite、PostgreSQL、MySQL,提供 2FA、授权加密等安全特性

    https://github.com/certd/certd

    #证书管理 #自动化 #开源 #私有部署 #Docker #GitHub #Linux #API

    • ❤️5
    • 🤡1
  6. 自建 SideStore Anisette 服务器群友反馈说官方列表的都连接不畅 StosVPN/LocalDevVPN 开着 还是直连的服务器所以用 clash mi/sing-box/everywhere/anywhere/shadowrocket 走代理且支持 StosVPN/LocalDevVPN 的功能( loopback-address 10.7.0.1)如果你换成 sing-box 的话就完美了 参考这个亲测 Clash Mi(免费) 和 Everywhere 也可以 配置里加上 这个👉🏻 快捷指令自动化每天定时无感刷新可以看手速 github上看了下目前这个方法可行,就是比较吃手速没必要自建了 还是用上面的方法稳—- 分割线—-当然也可以自建一个 自己稳稳用Anisette 自建服务器项目:

    自建 SideStore Anisette 服务器

    群友反馈说官方列表的都连接不畅 StosVPN/LocalDevVPN 开着 还是直连的服务器
    所以用 clash mi/sing-box/everywhere/anywhere/shadowrocket 走代理且支持 StosVPN/LocalDevVPN 的功能( loopback-address 10.7.0.1)
    如果你换成 sing-box 的话就完美了 参考这个
    亲测 Clash Mi(免费) 和 Everywhere 也可以 配置里加上 这个
    👉🏻 快捷指令自动化每天定时无感刷新

    可以看手速 github上看了下目前这个方法可行,就是比较吃手速

    没必要自建了 还是用上面的方法稳

    —- 分割线—-

    当然也可以自建一个 自己稳稳用

    Anisette 自建服务器项目: https://github.com/Dadoum/anisette-v3-server

    docker volume create anisette-v3_data
    然后 docker compose
    services:
      anisette-v3-server:
        restart: always
        container_name: anisette-v3
        ports:
          - 127.0.0.1:6969:6969
        volumes:
          - anisette-v3_data:/home/Alcoholic/.config/anisette-v3/lib/
        image: dadoum/anisette-v3-server
    volumes:
      anisette-v3_data:
        external: true
        name: anisette-v3_data

    这里我只监听了 127.0.0.1:6969
    然后域名 https://a.com 反代 6969
    准备一个 json 文件
    {
      "servers": [
        {
          "name": "a",
          "address": "https://a.com"
        }
      ]
    }

    然后 SideStore App Settings 里的 Anisette Servers 里 输入框里填 json 文件的链接, 点 Refresh Servers, 然后选 a 这项

    官方文档: https://docs.sidestore.io/docs/advanced/anisette

    服务器合集 频道资源合集 恰饭推荐 群组

    #VPS #服务器 #自建 #证书 #SideStore #Anisette #自签 #Docker #iOS #Apple

    • ❤️3
  7. Sub-Store 自动设置服务端证书 SHA-256 指纹仅 Node.js 版支持优先使用 sni, 其次节点服务端其他需求可以让 AI 改改. 比如哪些节点需要加之类的.这里示范的是直接从服务端取, 支持所有目标(包括 sing-box 的 certificate_public_key_sha256)

    Sub-Store 自动设置服务端证书 SHA-256 指纹

    仅 Node.js 版支持

    优先使用 sni, 其次节点服务端
    其他需求可以让 AI 改改. 比如哪些节点需要加之类的.
    这里示范的是直接从服务端取, 支持所有目标(包括 sing-box 的 certificate_public_key_sha256)

    const tls = require("tls");
    const crypto = require("crypto");

    function getCertificateInfo(host, port = 443) {
    return new Promise((resolve) => {
    const socket = tls.connect(
    {
    host,
    port,
    servername: host,
    rejectUnauthorized: false,
    },
    () => {
    try {
    const cert = socket.getPeerCertificate(true);

    if (!cert || !cert.raw) {
    socket.end();
    return resolve({
    fingerprint: "",
    publicKeySha256: "",
    });
    }

    const x509 = new crypto.X509Certificate(cert.raw);

    // SHA256 证书指纹
    const fingerprint = cert.fingerprint256 || "";

    // SHA256 公钥(SPKI)
    const publicKeyDer = x509.publicKey.export({
    type: "spki",
    format: "der",
    });

    const publicKeySha256 = crypto
    .createHash("sha256")
    .update(publicKeyDer)
    .digest("base64");

    socket.end();

    resolve({
    fingerprint,
    publicKeySha256,
    });
    } catch {
    socket.end();
    resolve({
    fingerprint: "",
    publicKeySha256: "",
    });
    }
    }
    );

    socket.on("error", () => {
    resolve({
    fingerprint: "",
    publicKeySha256: "",
    });
    });
    });
    }

    async function operator(proxies, targetPlatform, context) {
    console.log(`[证书] INFO: 开始处理 ${proxies.length} 个节点`);

    for await (const proxy of proxies) {
    const host = proxy.sni || proxy.server;

    if (!host || ProxyUtils.isIP(host)) {
    console.log(
    `[证书] WARN: [${proxy.name}] 跳过,目标为 IP 或为空 (${host || "-"})`
    );
    continue;
    }

    console.log(
    `[证书] INFO: [${proxy.name}] 正在获取 ${host} 的证书信息`
    );

    const cert = await getCertificateInfo(host);

    proxy.fingerprint = cert.fingerprint;

    if (cert.publicKeySha256) {
    proxy._certificate_public_key_sha256 = [cert.publicKeySha256];
    }

    if (cert.fingerprint) {
    console.log(
    `[证书] LOG: [${proxy.name}] fingerprint=${cert.fingerprint}, public_key_sha256=${cert.publicKeySha256}`
    );
    } else {
    console.log(`[证书] WARN: [${proxy.name}] 获取证书失败`);
    }
    }

    console.log(`[证书] INFO: 全部节点处理完成`);

    return proxies;
    }


    相关: 自建节点证书相关说明

    服务器合集 Sub-Store 合集 合集 恰饭推荐 群组 联系推广

    #节点 #证书 #SNI #TLS #SHA256 #指纹 #SSL #sing-box #mihomo #surge

    • ❤️12
  8. 自建节点证书相关说明抛砖引玉 留个备忘▎服务端验证客户端 SNI, 几个例子:Trojan-Go : verify_hostname 表示服务端是否校验客户端提供的SNI与服务端设置的一致性 文档Xray : rejectUnknownSni 服务端接收到的 SNI 与证书域名不匹配即拒绝 TLS 握手 文档sing-box: 问了下薄荷佬, 官版没有,fork 有 fork 有▎客户端验证服务端证书, 几个例子: Stash : server-cert-fingerprint TLS 握手时验证服务器证书 SHA256 指纹 文档 Surge: server-cert-fingerprint-sha256 文档skip-cert-verify=true :Surge will not verify the server's certificate.sni=off :turn off SNI completely mihomo: sni 为 IP 时, 也不发 sni▎覆盖用于验证证书的域名,但不会改变 SNI免流等场景下, SNI 改为混淆, 不关验证, 仍然验证证书的域名 Xray: verifyPeerCertByName, URI 上叫 vcn mihomo: name-cert-verify Surge: server-cert-verify-name sing-box(风佬版) certificate_server_name QX tls-verification Sub-Store 中(mihomo/Surge/QX)可按上述输入写字段, 或使用脚本操作 $server['name-cert-verify'] = 'b.com'▎备忘1. 在当前目录生成 10 年的 bing.com 自签证书:openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout private.key -out certificate.pem -subj "/CN=bing.com" -days 365002. 获取服务器证书 SHA256 指纹:openssl x509 -noout -fingerprint -sha256 -inform pem -in certificate.pem对于远程服务器 openssl s_client -connect foo.com:443 -servername foo.com </dev/null 2>/dev/null | openssl x509 -noout -fingerprint -sha256 | cut -d= -f2▎如果想自动从服务端读取并设置 Sub-Store 自动设置服务端证书 SHA-256 指纹▎手动设置Sub-Store 中直接在输入里写对应的字段, 或使用脚本操作设置内部字段 tls-fingerprint 可自动转其他客户端, 但是 sing-box 的不一样, 没法直接转, 所以开放了字段让你自己设例如使用单行 JSON 的方式, 把俩字段都写上:{ "name": "节点名", "type": "anytls", "server": "服务器", "port": 443, "password": "xYbpwdF9vIELWoLmdC", "udp": true, "sni": "a.foo.com", "fingerprint": "SHA256 指纹", "_certificate_public_key_sha256": [ "SHA-256 哈希" ] } sing-box 中的 certificate_public_key_sha256 ,使用以下命令生成openssl x509 -in certificate.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64对于远程服务器 echo | openssl s_client -servername foo.com -connect foo.com:443 2>/dev/null | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 Sub-Store 中需要使用脚本操作 $server._certificate_public_key_sha256 = [ "428F7quaQJvBhEr5TclcjPpsl1ryyNQo7oLBGhhC3UU=" ]参考 Lucy 整理好的 服务器合集 Sub-Store 合集 合集 恰饭推荐 群组 联系推广 #VPS #服务器 #节点 #自建 #证书 #SNI #hostname #TLS #SHA256 #自签 #指纹 #SSL

    自建节点证书相关说明

    抛砖引玉 留个备忘

    ▎服务端

    验证客户端 SNI, 几个例子:

    Trojan-Go : verify_hostname 表示服务端是否校验客户端提供的SNI与服务端设置的一致性 文档

    Xray : rejectUnknownSni 服务端接收到的 SNI 与证书域名不匹配即拒绝 TLS 握手 文档

    sing-box: 问了下薄荷佬, 官版没有,fork 有 fork 有

    ▎客户端

    验证服务端证书, 几个例子:

    Stash : server-cert-fingerprint TLS 握手时验证服务器证书 SHA256 指纹 文档

    Surge: server-cert-fingerprint-sha256 文档

    skip-cert-verify=true :
    Surge will not verify the server's certificate.

    sni=off :
    turn off SNI completely

    mihomo: sni 为 IP 时, 也不发 sni

    覆盖用于验证证书的域名,但不会改变 SNI

    免流等场景下, SNI 改为混淆, 不关验证, 仍然验证证书的域名

    Xray: verifyPeerCertByName, URI 上叫 vcn
    mihomo: name-cert-verify
    Surge: server-cert-verify-name
    sing-box(风佬版) certificate_server_name
    QX tls-verification

    Sub-Store 中(mihomo/Surge/QX)可按上述输入写字段, 或使用脚本操作 $server['name-cert-verify'] = 'b.com'

    ▎备忘

    1. 在当前目录生成 10 年的 bing.com 自签证书:

    openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout private.key -out certificate.pem -subj "/CN=bing.com" -days 36500

    2. 获取服务器证书 SHA256 指纹:

    openssl x509 -noout -fingerprint -sha256 -inform pem -in certificate.pem

    对于远程服务器 openssl s_client -connect foo.com:443 -servername foo.com </dev/null 2>/dev/null | openssl x509 -noout -fingerprint -sha256 | cut -d= -f2

    ▎如果想自动从服务端读取并设置

    Sub-Store 自动设置服务端证书 SHA-256 指纹

    ▎手动设置

    Sub-Store 中直接在输入里写对应的字段, 或使用脚本操作设置内部字段 tls-fingerprint 可自动转其他客户端, 但是 sing-box 的不一样, 没法直接转, 所以开放了字段让你自己设

    例如使用单行 JSON 的方式, 把俩字段都写上:
    { "name": "节点名", "type": "anytls", "server": "服务器", "port": 443, "password": "xYbpwdF9vIELWoLmdC", "udp": true, "sni": "a.foo.com", "fingerprint": "SHA256 指纹", "_certificate_public_key_sha256": [ "SHA-256 哈希" ] } 


    sing-box 中的 certificate_public_key_sha256 ,使用以下命令生成
    openssl x509 -in certificate.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

    对于远程服务器 echo | openssl s_client -servername foo.com -connect foo.com:443 2>/dev/null | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

    Sub-Store 中需要使用脚本操作 $server._certificate_public_key_sha256 = [ "428F7quaQJvBhEr5TclcjPpsl1ryyNQo7oLBGhhC3UU=" ]

    参考 Lucy 整理好的

    服务器合集 Sub-Store 合集 合集 恰饭推荐 群组 联系推广

    #VPS #服务器 #节点 #自建 #证书 #SNI #hostname #TLS #SHA256 #自签 #指纹 #SSL

    • ❤️3