2021年3月

网上很多错误,然后又复制粘贴的错误信息,结果不正确的比正确的还多,这里做一个整理

请您从https://cygwin.com 下载setup-x86.exe或setup-x86_64.exe文件

首先自用电脑安装cygwin64 ,默认下一步,网站列表选[推荐选择] 华为的服务器 不要像百度搜索的选网易,这坑货文件不完整的.


在选择包列表,选择curl、cron、bzip2、wget、gcc-core、gcc-g++、make、openssh、lynx,然后下一步
curl wget是必选的
openssl 是可选(建议独立安装吧)

#没选到?可以试试静默安装 把安装文件拖进命令窗口 加上参数
setup-x86_64.exe --packages curl,wget,openssl --upgrade-also --site https://repo.huaweicloud.com/cygwin/

添加path环境变量 C:\cygwin64\bin;C:\cygwin64\usr\local\bin


运行cygwin64

安装acme
wget -O - https://get.acme.sh | sh
(或者curl https://get.acme.sh | sh)

新建文件 C:\cygwin64\home\[你的电脑用户名]\domain.sh

#sh acme.sh --upgrade
#更新acme
# 替换成从阿里云控制台的API 参数
export Ali_Key="###"
export Ali_Secret="####"
# 换成自己的域名
sh acme.sh --issue --dns dns_ali -d [你的域名] -d *.[你的域名]
#API参数 参考https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

好了,现在已经完成申请证书的步骤.
接下来续订和生成pfx
新建文件autoacme.bat

chdir c:\cygwin64\bin
bash --login -i -c 'sh acme.sh --upgrade'
#更新acme
bash --login -i -c 'sh acme.sh --issue --dns dns_ali -d [你的域名] -d *.[你的域名]'
#更新证书
openssl pkcs12 -export -out C:\Users\[你的电脑用户名]\Desktop\nenge.pfx -inkey C:\cygwin64\home\[你的电脑用户名]\.acme.sh\[你的域名]\[你的域名].key -in C:\cygwin64\home\[你的电脑用户名]\.acme.sh\[你的域名]\[你的域名].cer -certfile C:\cygwin64\home\[你的电脑用户名]\.acme.sh\[你的域名]\ca.cer -passout pass:123456
#生成pfx

我的openssl是外部安装的如果你是cygwin64内安装则改为

bash --login -i -c 'openssl'
pkcs12 -export -out C:\Users\[你的电脑用户名]\Desktop\nenge.pfx -inkey C:\cygwin64\home\[你的电脑用户名]\.acme.sh\你的域名\[你的域名].key -in C:\cygwin64\home\[你的电脑用户名]\.acme.sh\[你的域名]\[你的域名].cer -certfile C:\cygwin64\home\[你的电脑用户名]\.acme.sh\[你的域名]\ca.cer -passout pass:123456

新建计划任务,设定三个月提醒你续订证书,或者不用计划任务,自己两个月左右更新一次即可.没必要天天更新.

[你的域名] => 如 nenge.net
[你的电脑用户名] => 如 administrator
证书密码为123456

power sell替换IIS证书

$h = "nenge.net"
$p = ConvertTo-SecureString "123456" -AsPlainText -Force
$pfx = "c:\nenge.net.pfx"
Get-ChildItem "cert:\LocalMachine\My" | where-object { $_.Subject -like "*$h*" }  | Remove-Item
Import-PfxCertificate -FilePath $pfx -CertStoreLocation "Cert:\LocalMachine\My" -Password $p