Search: #SNI

  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. Sub-Store 小课堂: Egern Trojan 节点补全 SNI目前 Egern Trojan SNI 字段是必填的暂时可以先这样节点操作补全一下if($server.type === 'trojan' && !$server.sni) {

    Sub-Store 小课堂: Egern Trojan 节点补全 SNI

    目前 Egern Trojan SNI 字段是必填的

    暂时可以先这样节点操作补全一下

    if($server.type === 'trojan' && !$server.sni) {
      $server.sni = $server.server
    }


    ℹ️ 相关内容

    📌 Sub-Store 相关教程/脚本整合

    👏 欢迎评论 & 转发(请保留来源)

    加入 折腾啥 📢 频道 | 👥 群组

    ※ 机场推荐 大流量电话卡 支付宝红包

    可点击查看 👉 恰饭推荐

    🙏 本频道 99.99% 的内容均为原创 感谢老板们的支持

    #SubStore #Sub-Store #小课堂 #tips #Egern #Trojan #SNI #节点 #协议 #脚本

    • ❤️1
    • 👍1
  4. 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
  5. 自建节点证书相关说明抛砖引玉 留个备忘▎服务端验证客户端 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
  6. GOST SNI 分流基于 Caddy 的 SNI 分流可参考 从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)▎安装官方一键安装脚本

    GOST SNI 分流

    基于 Caddy 的 SNI 分流可参考 从 0 搭建一个 AnyTLS 节点(Caddy 分流, 自动维护证书)

    ▎安装

    官方一键安装脚本 https://github.com/go-gost/gost

    ▎配置

    /etc/gost/gost.yaml
    a.foo.com -> 127.0.0.1:2053
    其他 127.0.0.1:8443
    services:
      - name: sni-router-443
        addr: ":443"
        handler: {type: tcp, metadata: {sniffing: true}}
        listener: {type: tcp}
        forwarder:
          nodes:
            - {name: caddy, addr: 127.0.0.1:2053, matcher: {rule: 'Host(`a.foo.com`)'}}
            - {name: fallback, addr: 127.0.0.1:8443}
    
    log: {level: warn, format: text, output: stdout}


    ▎配置服务

    编辑 /etc/systemd/system/gost.service:
    
    [Unit]
    Description=GOST SNI router
    Documentation=https://gost.run/
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    User=gost
    Group=gost
    AmbientCapabilities=CAP_NET_BIND_SERVICE
    CapabilityBoundingSet=CAP_NET_BIND_SERVICE
    NoNewPrivileges=true
    ExecStart=/usr/local/bin/gost -C /etc/gost/gost.yaml
    Restart=on-failure
    RestartSec=3s
    LimitNOFILE=1048576
    
    [Install]
    WantedBy=multi-user.target


    ▎启用服务
    
    systemctl daemon-reload
    
    systemctl enable --now gost


    相关: GOST 端口转发教程

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

    #GOST #分流 #SNI #教程 #服务器 #VPS #端口

    • 🔥8
    • 👍2
    • 😁2