windows在cygwin64下使用acme.sh批量签发Let's Encrypt的ssl证书,并用
|
使用前提
本脚本是在使用阿里云Windows服务器的前提,如果使用其他dns服务,请参看acme.sh的dns相关文档
配置好cygwin64、acme.sh并配置好阿里云账户,openssl最好也安装上
cygwin64配置
如果windows server 08R2启动安装程序失败,请使用cmd运行- setup-x86_64.exe --allow-unsupported-windows --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215 --no-verify
复制代码 其他老旧系统请参考cygwin64官网网页的How can I install the last Cygwin version for an old, unsupported Windows回答
acme.sh配置
openssl参考,添加-certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac 是为了应对pfx输入密钥不正确
最终路径就是项目路径
以下是batch脚本,请保存在autoacme.bat文件中PowerShell 脚本,使用前,更改执行策略
关于执行策略:
https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.4#powershell-execution-policies- Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
复制代码 将以下脚本保存为reissueIISCert.ps1文件- # 使用前先将策略设置为不严格 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
- # 保证证书有效的情况下再运行次脚本,将证书名称、证书目录、密钥放入以下数组
- # 公共证书密钥
- $pfxpassword = "dgfdgsdfg"
- # 公共证书路径
- $pfxCommandDir= "E:\cert"
- # 域名
- $domain="test.com"
- # 服务器上的证书与端口映射关系
- $data = @(
- [pscustomobject]@{subDomain = 'www';port=443}
- [pscustomobject]@{subDomain = 'buy';port=8443}
- [pscustomobject]@{subDomain = 'go';port=7443}
- )
- $certRootStore = "localmachine"
- $certStore = "My"
- # 创建证书存储
- $store = new-object System.Security.Cryptography.X509Certificates.X509Store($certStore, $certRootStore)
- $store.open("MaxAllowed")
- # 开始循环数组操作
- foreach ($element in $data) {
- $pfxPath = "$($pfxCommandDir)\$($element.subDomain).$($domain).pfx"
- Write-Host $pfxPath
- # 创建pfx对象
- try {
- $certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($pfxPath, $pfxpassword)
- # 存储证书到个人
- $store.Add($certificateObject)
- Write-Host 导入证书成功
- $newThumbprint = $certificateObject.Thumbprint
- Write-Host 获取证书信息成功
- $guid = New-Guid
- $applicationID = "{$($guid)}"
- $addr = "0.0.0.0:$($element.port)"
- Write-Host $addr $newThumbprint
- netsh http delete sslcert ipport=$addr
- netsh http add sslcert ipport=$addr certhash=$newThumbprint appid=$applicationID
- }
- catch {
- Write-Host "发生异常:$_"
- break
- }
- }
- # 关闭证书存储
- $store.close()
- # 执行完后退出
- exit
复制代码 创建任务计划程序参考
将启动程序设置为autoacme.bat即可,设置完成后,右键对应任务计划程序->属性->操作,在这一对话框中,将reissueIISCert.ps1加入到队列中。在常规页面中,勾选“不管用户是否登录都要运行”以及“使用最高权限”,保存即可
任务计划程序是按照顺序执行的。
来源:https://www.cnblogs.com/NickSmith/p/18270573
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2024-6-28 08:28:14
举报
回复
分享
|
|
|
|