# SharpSocks **Repository Path**: opguess/socsharp ## Basic Information - **Project Name**: SharpSocks - **Description**: 基于C#的Socks代理软件 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-16 - **Last Updated**: 2025-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SharpSocks 2.0 > 基于非对称加密的 Socks5 代理解决方案 本项目使用 C# 和 .NET 8 实现,提供 Socks5 代理服务,采用非对称加密和密钥认证机制,支持基本的安全管理和 Web 管理界面。 ## 安全架构 - 使用 RSA-2048 和 AES-256 进行混合加密 - 支持服务端证书验证和密钥认证 - 提供口令生成、撤销、过期管理功能 - 提供 Web 管理界面和命令行工具 - 记录认证和连接日志 ## 功能简介 - 支持 SOCKS5 协议的代理转发 - 使用加密算法保障通信安全 - 支持 Windows 和 Linux 部署,Web 客户端跨平台 - 支持流量统计和事件监控 - 支持多端口 ## 快速开始 ### 环境要求 - 服务端:.NET 8 Runtime - 客户端:现代 Web 浏览器 - 系统:Windows/Linux(服务端),任意平台(客户端 Web 界面) ### 编译和部署 1. 获取源码 ```bash git clone cd Sharp ``` 2. 编译服务端 ```bash cd Server dotnet build -c Release # 或发布为独立程序 dotnet publish -c Release -r win-x64 --self-contained ``` 3. 编译客户端 Web 应用 ```bash cd ClientWeb dotnet build -c Release dotnet publish -c Release ``` ### 服务端配置 1. 编辑 `Config.json` 配置代理端口: ```json [ { "Port": 3080, "Udp": true }, { "Port": 2080, "Udp": false } ] ``` 2. 启动服务端 ```bash # Windows Server.exe # Linux dotnet Server.dll # 或独立程序 ./Server ``` 首次启动会自动生成 RSA 密钥对(`server_private.pem`, `server_public.pem`)并创建密钥管理数据库。 3. 管理密钥 ```bash # 生成新密钥 dotnet run apikey generate ClientName # 列出所有密钥 dotnet run apikey list # 撤销密钥 dotnet run apikey revoke # 验证密钥 dotnet run apikey validate ``` ### 客户端配置 1. 启动 Web 界面 ```bash cd ClientWeb dotnet run # 访问 http://localhost:5207 ``` 2. 配置服务器连接 - 获取服务器公钥:从服务端复制 `server_public.pem` 内容 - 在 Web 界面“密钥管理”页面添加服务器连接信息 - 在“服务器管理”页面添加代理服务器 3. Web 管理功能 - 仪表板:实时监控连接状态和流量 - 服务器管理:配置和管理代理服务器 - 密钥管理:管理服务器认证密钥 - 证书管理:管理服务器证书 - 系统日志:查看连接和认证日志 ## 安全认证流程 SharpSocks 2.0 实现了双重认证机制: 1. 证书验证阶段:客户端验证服务端 RSA 证书,确保连接到可信服务器 2. 密钥认证阶段:客户端提供密钥进行身份验证,服务端验证密钥有效性 3. 会话密钥交换:建立 AES-256 会话加密,后续通信加密传输 密钥管理策略: - RSA-2048 用于身份验证和密钥交换 - AES-256 用于会话数据加密 - 支持密钥过期和撤销 - 服务端公钥可公开分发 ## 注意事项 - 请妥善保管服务端私钥文件(`server_private.pem`) - 定期轮换密钥,及时撤销失效密钥 - 建议结合防火墙规则限制访问源 IP - 2.0 版本与旧版本不兼容 ## 项目结构 ``` Sharp/ ├── ClientWeb/ # Web 客户端与管理界面 │ ├── Controllers/ # Web API 控制器 │ ├── Core/ # 客户端核心逻辑 │ ├── Data/ # 数据访问 │ ├── Migrations/ # 数据库迁移 │ ├── Models/ # 数据模型 │ ├── Pages/ # Razor 页面 │ ├── Services/ # 客户端服务 │ ├── wwwroot/ # 静态资源 │ ├── appsettings.json 等配置文件 │ └── Program.cs 等入口文件 ├── Server/ # 服务端核心 │ ├── Core/ # 服务端核心模块 │ ├── ApiKeyTool.cs # 密钥管理命令行工具 │ ├── Config.json # 服务端配置 │ └── Program.cs 等入口文件 ├── Share/ # 共享组件 │ ├── Utils.cs # 加密与通用工具 │ ├── Services/ # 共享服务 │ └── ProxyTypeEnum.cs 等 ├── docs/ # 文档 ├── README.md # 项目说明 ├── SharpSocks.sln # 解决方案文件 └── 其他配置与文档文件 ``` ## 故障排除 - 连接被拒绝:检查密钥配置 - 证书验证失败:确保客户端有正确的服务器公钥 - 认证超时:检查网络连接和防火墙设置 调试建议: - 查看服务端控制台日志 - 检查客户端 Web 界面的系统日志页面 - 验证密钥状态:`dotnet run apikey validate ` --- SharpSocks 2.0 - Socks5 代理解决方案