init
This commit is contained in:
84
examples/scripts/generate_cert.ps1
Normal file
84
examples/scripts/generate_cert.ps1
Normal 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
|
||||
}
|
81
examples/scripts/generate_cert.sh
Normal file
81
examples/scripts/generate_cert.sh
Normal 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
|
20
examples/scripts/server.crt
Normal file
20
examples/scripts/server.crt
Normal 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-----
|
27
examples/scripts/server.key
Normal file
27
examples/scripts/server.key
Normal 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-----
|
Reference in New Issue
Block a user