This commit is contained in:
2025-03-14 18:50:49 +00:00
commit 1a53a9a8f3
90 changed files with 13116 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
# PowerShell 脚本:生成自签名证书
# 处理命令行参数
param(
[Parameter(HelpMessage="证书有效期(天数)")]
[int]$days = 365,
[Parameter(HelpMessage="证书主题")]
[string]$subject = "CN=localhost,OU=Test,O=GoProxy,L=Shanghai,S=Shanghai,C=CN",
[Parameter(HelpMessage="公用名(CN)")]
[string]$cn = "",
[Parameter(HelpMessage="显示帮助信息")]
[switch]$help
)
# 帮助信息
function Show-Help {
Write-Host "生成自签名证书"
Write-Host
Write-Host "用法: .\generate_cert.ps1 [选项]"
Write-Host
Write-Host "选项:"
Write-Host " -help 显示此帮助信息"
Write-Host " -days DAYS 证书有效期(天数),默认: 365"
Write-Host " -subject SUB 证书主题,默认: $subject"
Write-Host " -cn CN 公用名(CN)将替换主题中的CN默认: localhost"
Write-Host
Write-Host "示例:"
Write-Host " .\generate_cert.ps1 -days 730 -cn example.com"
Write-Host
}
# 如果请求帮助,显示帮助信息并退出
if ($help) {
Show-Help
exit 0
}
# 如果指定了CN替换主题中的CN部分
if ($cn -ne "") {
$subject = $subject -replace "CN=[^,]*", "CN=$cn"
}
Write-Host "生成自签名证书..."
Write-Host "有效期: $days"
Write-Host "主题: $subject"
# 检查OpenSSL是否可用
$openssl = Get-Command "openssl" -ErrorAction SilentlyContinue
if (-not $openssl) {
Write-Host "错误: 未找到OpenSSL命令。请安装OpenSSL并确保它在PATH环境变量中。" -ForegroundColor Red
Write-Host "您可以从以下地址下载OpenSSL for Windows: https://slproweb.com/products/Win32OpenSSL.html" -ForegroundColor Yellow
exit 1
}
try {
# 生成私钥
Write-Host "正在生成私钥..." -ForegroundColor Cyan
& openssl genrsa -out server.key 2048
# 生成证书请求
Write-Host "正在生成证书请求..." -ForegroundColor Cyan
& openssl req -new -key server.key -out server.csr -subj $subject.Replace(",", "/")
# 生成自签名证书
Write-Host "正在生成自签名证书..." -ForegroundColor Cyan
& openssl x509 -req -days $days -in server.csr -signkey server.key -out server.crt
# 删除证书请求文件
Remove-Item server.csr -Force
Write-Host "完成!已生成以下文件:" -ForegroundColor Green
Write-Host " - server.key: 私钥" -ForegroundColor Green
Write-Host " - server.crt: 证书" -ForegroundColor Green
Write-Host
Write-Host "您可以使用这些文件启动HTTPS代理:" -ForegroundColor Cyan
Write-Host "go run cmd/custom_dns_https_proxy/main.go -cert server.crt -key server.key" -ForegroundColor Cyan
}
catch {
Write-Host "错误: 生成证书时发生错误: $_" -ForegroundColor Red
exit 1
}

View File

@@ -0,0 +1,81 @@
#!/bin/bash
# 退出时如果有任何命令失败
set -e
# 默认值
DAYS=365
SUBJECT="/C=CN/ST=Shanghai/L=Shanghai/O=GoProxy/OU=Test/CN=localhost"
# 帮助信息
function show_help {
echo "生成自签名证书"
echo
echo "用法: $0 [选项]"
echo
echo "选项:"
echo " -h, --help 显示此帮助信息"
echo " -d, --days DAYS 证书有效期(天数),默认: 365"
echo " -s, --subject SUB 证书主题,默认: $SUBJECT"
echo " -c, --cn CN 公用名(CN)将替换主题中的CN默认: localhost"
echo
echo "示例:"
echo " $0 --days 730 --cn example.com"
echo
}
# 处理命令行参数
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-h|--help)
show_help
exit 0
;;
-d|--days)
DAYS="$2"
shift
shift
;;
-s|--subject)
SUBJECT="$2"
shift
shift
;;
-c|--cn)
# 替换主题中的CN部分
SUBJECT=$(echo $SUBJECT | sed "s/CN=[^\/]*/CN=$2/")
shift
shift
;;
*)
echo "未知选项: $1"
show_help
exit 1
;;
esac
done
echo "生成自签名证书..."
echo "有效期: $DAYS"
echo "主题: $SUBJECT"
# 生成私钥
openssl genrsa -out server.key 2048
# 生成证书请求
openssl req -new -key server.key -out server.csr -subj "$SUBJECT"
# 生成自签名证书
openssl x509 -req -days $DAYS -in server.csr -signkey server.key -out server.crt
# 删除证书请求文件
rm server.csr
echo "完成!已生成以下文件:"
echo " - server.key: 私钥"
echo " - server.crt: 证书"
echo
echo "启动HTTPS代理"
go run ../custom_dns_https_proxy/main.go -cert server.crt -key server.key

View File

@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDVzCCAj8CFBKBjcPxJ7o8UnWKrYMpI6XWa9crMA0GCSqGSIb3DQEBCwUAMGgx
CzAJBgNVBAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTERMA8GA1UEBwwIU2hhbmdo
YWkxEDAOBgNVBAoMB0dvUHJveHkxDTALBgNVBAsMBFRlc3QxEjAQBgNVBAMMCWxv
Y2FsaG9zdDAeFw0yNTAzMTQxMzA0NDlaFw0yNjAzMTQxMzA0NDlaMGgxCzAJBgNV
BAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTERMA8GA1UEBwwIU2hhbmdoYWkxEDAO
BgNVBAoMB0dvUHJveHkxDTALBgNVBAsMBFRlc3QxEjAQBgNVBAMMCWxvY2FsaG9z
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMZWDfiB54iz+hUpUXfC
V2OH674a6EEJTqQ6xZ3b9aKC+IUoerzyj8o/cxNvb6AekxiMlxMbAVK+CARqvqzE
/6w+SZPB8TZGwLM1yPyDaz1+D05n/Am3slccDby/pkPG/igt1q/RVkizw35Mn9ct
gz5niufM78gRQTMr1/8CfgNyfiDa5mZ02fIahUZLBjCotF2jtfN0hX1gagD06wlc
9RL36Ms2hxK+A1J6VUMhXdH4u0PdksiRwtQMFW8A4M3fCTJp1a1H1Oj1gub9AXcL
UOwFZMrZ6LJFNBDQNRU/e104Fqq0XpfnXEq4SC/AW/wkLuCcRtoOGIg7XQ0Np3dv
sj8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAqCp6RcBW6Q2PlbUeqOl4X9KQffRO
N+ATvcve0hF3+Jr5tPYDvLwtHtyU1yYKyrM8RmqMcOHxXEmuxhlYaR0P4yUwTPOr
l9ZwskIkoTd0nVVlS9nGQMtEc0n+AmWGICE9gqOF66Gup0OPY3OYGdvlqE8NBH43
95jSB0grAMudd2TW71Ef+PvieOY7ksJwGiP9tusJqq51Bh9gyhUAk9xxeKbeP0Zp
9dy8/kbTW9B5hyLYNYOKhBztKu665cQ1cNL4AA0Y5svBRWlymTqB2HKMIKTGJzDO
6Jh6wXWr7Fx/aDROHqY2vOQ25i0FGJCu8/7TUcveCllyjHtJHhljkXht4g==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxlYN+IHniLP6FSlRd8JXY4frvhroQQlOpDrFndv1ooL4hSh6
vPKPyj9zE29voB6TGIyXExsBUr4IBGq+rMT/rD5Jk8HxNkbAszXI/INrPX4PTmf8
CbeyVxwNvL+mQ8b+KC3Wr9FWSLPDfkyf1y2DPmeK58zvyBFBMyvX/wJ+A3J+INrm
ZnTZ8hqFRksGMKi0XaO183SFfWBqAPTrCVz1EvfoyzaHEr4DUnpVQyFd0fi7Q92S
yJHC1AwVbwDgzd8JMmnVrUfU6PWC5v0BdwtQ7AVkytnoskU0ENA1FT97XTgWqrRe
l+dcSrhIL8Bb/CQu4JxG2g4YiDtdDQ2nd2+yPwIDAQABAoIBAFLFGvN4kv2TzmwC
YENQUVPyJ0mgxQhPMAiNlmb4opv9eGVprT8pIyTOMeIMgVMbL1vxYCLTBExZjdL6
ETTcya5CGEaXi2iRQl4HtibbWWfCMfUQpDgR91UvGfSJLoPeibaO2qdo/0875fvR
UmtkTP9ACtINzot51/HY/D0p9xjMdLTa2bzj3fzPSLGROy0OGbam0yWwkSVyL6kF
xfyVWIG8Vw40L7XTxS8vnM1mSU17qqztrVsbB29eLbby3Vv7vHZ6xWWbv/jW0Hm4
9Zl6GU4G4jB6/zafylqnMvUlLzPHRR3k5fxzgloyTmfJegj73ksTsAaM0qD6S2jQ
QFil1WECgYEA75qX674QEp5J/C24jCef7vG/x2EvX9II9CXUnERUXmvFx2UFFzcM
QAhewLwTywe8WG5BNyde/xv/IRfgOuMtDXB6aQJlibin0CRPlQ/IzEdLt9R5FBSB
t3i2ffdJhYObusiTFfzoSV8jyVNyLSvsZXfKa/ckfb7txCe7AaChaxkCgYEA0+iH
UkVsVVoXu8OLmXH8q7FWbVciqBMiGOEyZpjluJoCQVmCAogTYTR1qY9HnlLnVprA
OS1Q6vjAZaTK6AKcCgBuRjswHi35jpZ77u+Vdd85dVTnlQIdHDyUxHYdAfP7tjKl
VnIifDS2zeDH2QORjqzP4QsKd2gnpciguCOdCxcCgYBVvLDeF22y69c3mLiv1kIB
g5oHYzxLgmHX022n2T+DZfcoqXpP20/T3erh9qryfLslvZYygTEaAk+h7OQ8zivB
4ly7FLN2u4+5CDU99p74kg6DIlGNIOVl3JkYrBMv5m8kQD95n70S/CtXEDgL9+qo
SFwzlAUHxflYtorRQ0RfiQKBgEcja7JJzgmFOix1g/raUlmNKheAxgioi6zQhOv+
bjgfs5weoU+aQO9D/jATApb6++COCPPo655GLcixntBud9W/uUVof0nSY1Hj4O0g
jwtICfECtM/IKt+c0tB1Wl2ae6j5rZmsrTkHNUs+J7kJwqakCxFgdH4LgCveg13t
zr23AoGBALA9C/3NIC4TKD2jm0NFBttODyf8gbAT1/7akdiH5BttSbrPg8l4kYwL
kvs1TxU0O6cpOHcqG8CEYnTAi4LEocRCQtsD3xMqANqjNLMNvdsV/cQvT6qqoUre
IyGgq9+W0NSeeHwtA+qASUaAorIpnplNOkkhyu78pvEtxUFPCZ1c
-----END RSA PRIVATE KEY-----