From 3ad49d2f42cca402e60542915edc522b4514ce0c Mon Sep 17 00:00:00 2001 From: vincent Date: Tue, 30 Jan 2024 14:40:48 +0800 Subject: [PATCH] init --- README.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 15 ++++++++++ gen_cert.sh | 1 + hysteria.yaml | 15 ++++++++++ server.crt | 11 +++++++ server.key | 5 ++++ 6 files changed, 118 insertions(+) create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 gen_cert.sh create mode 100644 hysteria.yaml create mode 100644 server.crt create mode 100644 server.key diff --git a/README.md b/README.md new file mode 100644 index 0000000..2442500 --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# 使用说明 +项目使用自有证书搭建, 无需要准备域名. +默认使用`bing.com`域名作为伪装. + +## 快速开始 +启动项目 +```bash +docker-compose up -d +``` + +查看日志 +```bash +docker-compose logs | head -n 50 +``` + +## 客户端配置 +无域名,使用IP搭建,download-bandwidth 根据实际填写 +```yaml +地址: 服务器ip +端口: 8443 +密码: RhCLi%T&MFe5&de # 服务器端密码 +传输安全层: tls +SNI: bing.com # 伪装域名 +跳过证书验证: true +download-bandwidth=200 +``` + + +## 修改域名 +如果需要修改伪装域名 + +1. 根据新域名生成证书文件 + - 修改gen_cent.sh文件, 把`-subj "/CN=bing.com"`改为其他域名, 例如`-subj "/CN=abc.com" ` + - 然后执行`bash gen_cert.sh`重新生成证书文件`server.crt`和`server.key` + +2. 修改hysteria.yaml文件 + 修改masquerade.proxy.url + ```yml + masquerade: + type: proxy + proxy: + url: https://改为其他tls1.3的域名 + rewriteHost: true + ``` + +## 文件解析 +- 文件`gen_cert.sh` + 用来生成自签证书 + 文件内容解析如下: + ```bash + # 生成自签名的 ECDSA 证书并设置有效期为 100 年 + + # 使用 OpenSSL 的证书请求工具 + openssl req \ + -x509 \ # 生成自签名的X.509证书 + -nodes \ # 不使用加密算法保护私钥 + -newkey ec:<(openssl ecparam -name prime256v1) \ # 生成 ECDSA 私钥和公钥,使用 prime256v1 曲线 + -keyout /etc/hysteria/server.key \ # 将生成的私钥保存到指定路径 + -out /etc/hysteria/server.crt \ # 将生成的自签名证书保存到指定路径 + -subj "/CN=bing.com" \ # 设置证书的主题字段,这里是 Common Name (CN) + -days 36500 \ # 设置证书的有效期为 36500 天(约100年) + ``` + - `-subj `参数用于在 OpenSSL 命令中设置证书主题字段,其中 "/CN=example.com" 指定了通用名称 (Common Name, CN),表示证书关联的主机名。 + + - `openssl`是一个开源的加密工具包,提供了一系列用于处理安全通信的命令和库。它支持多种加密算法、数字证书和相关的功能,包括生成和签名证书、创建和验证数字签名、加解密数据等。常见用途包括创建和管理SSL/TLS证书、进行加密通信以及执行与加密相关的各种操作。 + +-`server.crt`和`server.key`是证书文件 + +- 文件`hysteria.yaml` +hysteria服务器端配置文件 + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5f132ae --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.9" +services: + hysteria: + image: tobyxdd/hysteria + container_name: hysteria + restart: always + network_mode: "host" + volumes: + - acme:/acme + - ./hysteria.yaml:/etc/hysteria.yaml + - ./server.crt:/etc/hysteria/server.crt + - ./server.key:/etc/hysteria/server.key + command: ["server", "-c", "/etc/hysteria.yaml"] +volumes: + acme: \ No newline at end of file diff --git a/gen_cert.sh b/gen_cert.sh new file mode 100644 index 0000000..816fe88 --- /dev/null +++ b/gen_cert.sh @@ -0,0 +1 @@ +openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout ./server.key -out ./server.crt -subj "/CN=bing.com" -days 36500 \ No newline at end of file diff --git a/hysteria.yaml b/hysteria.yaml new file mode 100644 index 0000000..2552bc6 --- /dev/null +++ b/hysteria.yaml @@ -0,0 +1,15 @@ +listen: :8443 + +tls: + cert: /etc/hysteria/server.crt + key: /etc/hysteria/server.key + +auth: + type: password + password: "UuYAsK^3hwB8H9%" + +masquerade: + type: proxy + proxy: + url: https://bing.com + rewriteHost: true \ No newline at end of file diff --git a/server.crt b/server.crt new file mode 100644 index 0000000..e135aed --- /dev/null +++ b/server.crt @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBfTCCASOgAwIBAgIUR65F9ix0BBWiw284NXIW5RoGvgwwCgYIKoZIzj0EAwIw +EzERMA8GA1UEAwwIYmluZy5jb20wIBcNMjQwMTMwMDQwNTIwWhgPMjEyNDAxMDYw +NDA1MjBaMBMxETAPBgNVBAMMCGJpbmcuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D +AQcDQgAEwRtxXqEGibaVkK5eVWjzag7UaCG4z48wRb6Kg8N/HQo2hxU/EivPmCB3 ++hcj2dlZNFSGojOdr21mhI6Oqe/s0aNTMFEwHQYDVR0OBBYEFCkfq4KFllbH2zEO +GeCeBXOOJccXMB8GA1UdIwQYMBaAFCkfq4KFllbH2zEOGeCeBXOOJccXMA8GA1Ud +EwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgbQoaD89WuimuPuVZJDX17kJc +br9bR0nl91eLuTrWfAYCIQC2OyHg4BWcw6W+lvRw/wH1OpIqqC7+Mk8zOgor4d0C +tg== +-----END CERTIFICATE----- diff --git a/server.key b/server.key new file mode 100644 index 0000000..39666d2 --- /dev/null +++ b/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgukBlJTuRZPhgqQA9 +ruBWkS9onZJCJ/NzyMDARwXOC8ShRANCAATBG3FeoQaJtpWQrl5VaPNqDtRoIbjP +jzBFvoqDw38dCjaHFT8SK8+YIHf6FyPZ2Vk0VIaiM52vbWaEjo6p7+zR +-----END PRIVATE KEY-----