0%

v2ray 配置 TLS

配置 v2ray TLS 工作模式

证书申请见 Let's Encrypt 申请 SSL 证书

安装证书和密钥

$ ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/v2ray/v2ray.crt --keypath /etc/v2ray/v2ray.key --ecc
$ ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/v2ray/v2ray.crt --keypath /etc/v2ray/v2ray.key

TLS

TLS

修改服务器

  "inbounds": [
    {
      "port": 443, // 建议使用 443 端口
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls", // security 要设置为 tls 才会启用 TLS
        "tlsSettings": {
          "certificates": [
            {
              "certificateFile": "/etc/v2ray/v2ray.crt", // 证书文件
              "keyFile": "/etc/v2ray/v2ray.key" // 密钥文件
            }
          ]
        }
      }
    }
  ]
  • certificateFile 证书文件绝对路径
  • keyFile 密钥文件绝对路径

客户端输入

  • 域名
  • 端口
  • 传输协议:TCP
  • 底层传输安全:TLS

Qualys SSL Labs’s SSL Server Test

使用 Qualys SSL Labs’s SSL Server Test 要求使用 443 端口,意味着你服务器配置的 inbound.port 应当是 443

WebSocket + TLS

WebSocket 单独配置教程

修改服务端

{
  "port": 443,
  "protocol": "vmess",
  "settings": {
    "clients": [{
      "id": "自行生成 UUID",
      "alterId": 64
     }]
  },
  "streamSettings": {
    "network":"ws",
    "security": "tls",
    "wsSettings":{
      "path":"/",
      "headers":{}
    },
    "tlsSettings": {
      "certificates": [{
        "certificateFile": "公钥文件绝对路径,如:/path/to/xxx.com.crt",
        "keyFile": "私钥文件绝对路径,如:/path/to/xxx.com.key"
      }]
    }
  }
}

增加 wsSettings,修改 networkws

客户端输入

  • 域名
  • 端口
  • 传输协议:ws
  • path:/
  • 底层传输安全:TLS

HTTP/2 + TLS

HTTP/2 单独配置

服务端

{
  "port": 443,
  "protocol": "vmess",
  "settings": {
    "clients": [{
      "id": "自行生成 UUID",
      "alterId": 64
     }]
  },
  "streamSettings": {
    "network":"http",
    "security": "tls",
    "httpSettings":{
      "path": "在这里填写网页路径,以 / 开头,例如 /abcde/xyz"
    },
    "tlsSettings": {
      "certificates": [{
        "certificateFile": "公钥文件绝对路径,如:/path/to/xxx.com.crt",
        "keyFile": "私钥文件绝对路径,如:/path/to/xxx.com.key"
      }]
    }
  }
}

增加 httpSettings,修改 networkhttp

客户端输入

  • 域名
  • 端口
  • 传输协议:h2
  • path:/
  • 底层传输安全:TLS

WebSocket + TLS + Web

WebSocket+TLS+Web

  • 使用 Nginx / Caddy / Apache 是因为 VPS 已经有 Nginx / Caddy / Apache 可以将 V2Ray 稍作隐藏
  • 使用 WebSocket 是因为搭配 Nginx / Caddy / Apache 只能用 WebSocket
  • 使用 TLS 是因为可以流量加密,看起来更像 HTTPS

一键安装脚本

未使用一键安装脚本,通过 acme.sh 手动配置

修改服务端,删除 TLS 配置

  "inbounds": [
    {
      "port": 10000,
      "listen":"127.0.0.1",// 只监听 127.0.0.1,避免除本机外的机器探测到开放了 10000 端口
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/ray"
        }
      }
    }
  ],

Nginx 配置

server {
  listen  443 ssl;
  ssl on;
  ssl_certificate       /etc/v2ray/v2ray.crt;
  ssl_certificate_key   /etc/v2ray/v2ray.key;
  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           HIGH:!aNULL:!MD5;
  server_name           mydomain.me;
        location /ray { # 与 V2Ray 配置中的 path 保持一致
        proxy_redirect off;
        proxy_pass http://127.0.0.1:10000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        # Show realip in v2ray access.log
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

客户端输入

  • 域名
  • 端口 443
  • 传输协议:ws
  • path:/ray
  • 底层传输安全:TLS

Ref

  1. v2ray 配置 ws + tls 或 http2 + tls 教程
  2. 高级篇