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
}