利用wacs.exe给网站申请SSL免费证书和自动续期SSL证书

迅恒数据中心
本教程只要是介绍Windows环境中利用wacs.exe给网站申请SSL免费证书和自动续期SSL证书
在Windows中2种环境部署SSL证书 一是IIS网站环境 二是Nginx环境
目前最新的wacs.exe下载[解压即用]:https://piis.lanzoul.com/ixBxf3oskn5e
一 :我们先说说Nginx环境下给网站申请SSL免费证书:
本节介绍的是使用 SelfHosting 验证(内存监听验证)申请证书不是使用filesystem(文件验证)
如果Nginx环境中使用filesystem(文件验证)申请SSL免费证书请看后面的四:Nginx环境使用filesystem(文件验证)申请SSL免费证书
Nginx环境cdn反向代理的网站使用filesystem(文件验证)方法更方便,因为全部网站目录都是相同,也不用去改造Nginx网站配置文件和解决端口冲突,
1.1网站配置改造
server {
    listen 80;
    server_name piis.top www.piis.top;

    # 关键:把验证请求转发给 wacs.exe 的 8080 端口
    location /.well-known/acme-challenge/ {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }


    # 其他请求自动跳HTTPS(不影响证书申请)
    location / {
        return 301 https://$host$request_uri;
    }
}
server
{
    listen 443 ssl;
    #网站域名,请修改server_name对应的值,多域名用空格隔开!!!!!!!!!!!
    server_name piis.top www.piis.top;
    index index.php index.html index.htm default.php default.htm default.html;
    root C:/nginx/html;
    error_page 403 /50x.html;
    error_page 404 /50x.html;
    error_page 502 /50x.html;

    #SSL的pem和key的路径(./ssl/=C:\nginx\ssl\)请修改为!!!!!!!
    ssl_certificate    ./ssl/piis.top-chain.pem;
    ssl_certificate_key    ./ssl/piis.top-key.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    #防止有人用http://域名:443访问
    error_page 497  https://$host$request_uri; 
    
    location /
    {
    ……
    {
{
因为证书颁发机构验证时是连接80端口,而服务器的80端口被Nginx占用,就会使得证书申请失败
经过以上改造 服务器不会出现80端口冲突问题 也不影响网站正常运行和证书验证
1.2 防火墙开放8080端口
因为我们后面是用8080端口启动wacs.exe提供验证
1.3.1 命令行自动申请证书===推荐方法
wacs.exe我这里是安装到C:\win-acme目录中
命令行C:\win-acme目录并申请证书:
cd /d C:\win-acme
wacs.exe --target manual --host "piis.top,www.piis.top" --validationport 8080 --store pemfiles --pemfilespath "C:\nginx\ssl" --installation none  --accepttos --emailaddress "fuwuqizuyong@piis.cn"
说明:piis.top,www.piis.top请替换为你自己的域名,多域名用英文逗号隔开
             C:\nginx\ssl为证书存放路径
             8080为wacs.exe的SSL验证端口 也可以改为你想设置的端口 如果改了端口也需要改1.1和1.2中的端口
运行命令后会在 C:\nginx\ssl中自动生成4个piis.top-**.pem文件
我们只需要用到***-chain.pem和***-key.pem
1.3.2 手动交互式申请证书----不推荐,这里列出来只是为了记录方法,请用1.3命令行形式更方便
另外1.3.1和1.3.2只用操作一种就可以了 不用2个方法都操作
cd /d C:\win-acme
wacs.exe --validationport 8080
进入交互式向导,按下面操作:
输入 M 回车 创建新证书
 ===续期证书选 R → 立即执行续期
立刻检查所有证书是否快到期
到期自动续期
平时不用管,任务计划会自动跑
输入 2 回车 Manual input手动
输入域名:gzsjzx.com,www.gzsjzx.com回车
回车
输入 4 回车  Single certificate单证书,一张证书包含piis.top和www.piis.top
输入 2 回车 [http] Serve verification files from memory
输入 2 回车  RSA key,Nginx 全兼容,兼容性最好,不出各种奇葩适配问题
输入 2 回车 PEM encoded files 就是专门给 Nginx 用的格式,必须选这个
输入 C:\Nginx\ssl  回车
输入 1 回车   None 私钥不设密码,Nginx 直接能用,不用后续额外配置
输入 5 回车   No (additional) store steps不再额外其他存储方式
输入 3 回车   No (additional) installation steps,不需要 IIS 绑定、也不用运行脚本,直接结束配置
输入 n 回车   Create certificate failed, retry? (y/n*)  不用打开协议文件,直接跳过
输入 y 回车   Do you agree with the terms? (y*/n)  需要先关闭80端口
输入邮箱fuwuqizuyong@piis.cn回车

二:给IIS网站申请免费证书
IIS是用filesystem文件验证 所以不需要做端口转发
给特定域名申请证书:
cd /d C:\win-acme
wacs.exe --source iis --host "seeisp.cn,www.seeisp.cn" --validation filesystem --installation iis --accepttos --emailaddress "fuwuqizuyong@piis.cn"
全部IIS的网站申请证书:
cd /d C:\win-acme
wacs.exe --source iis --validation filesystem --installation iis --accepttos --emailaddress "fuwuqizuyong@piis.cn"
IIS增强使用:
cd /d C:\win-acme
wacs.exe --source iis --validation filesystem --installation iis --store pemfiles --pemfilespath "C:\nginx\ssl" --accepttos --emailaddress "fuwuqizuyong@piis.cn"
说明后面加--store pemfiles --pemfilespath "C:\nginx\ssl"作用是:额外再导出一份 Nginx 用的明文 PEM 证书

三:证书批量续期
证书续签命令:
wacs.exe --renew
证书颁发机构也是通过连接80端口进行域名验证

证书自动续签是读取C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org中的*.renewal.json
每个证书对应一个 *.renewal.json 文件
如果部分网站域名已经不使用直接删除或修改对应的 *.renewal.json文件就可以了

或者建立一个计划任务 自动的去执行wacs.exe --renew就 可以达到全自动化续期

四:Nginx环境使用filesystem(文件验证)申请SSL免费证书
我们前面Nginx环境是使用 SelfHosting 验证(内存监听验证)的形式申请SSL证书,需要改造Nginx的网站配置文件解决端口冲突
如果我们改用filesystem(文件验证)申请SSL免费证书就不需要改造Nginx的网站配置文件,也不存在端口冲突
只用删除1.1网站配置文件中的红色部分
然后执行如下命令即可:
cd /d C:\win-acme
wacs.exe --target manual --host "piis.cn,www.piis.cn" --validation filesystem --webroot "C:\nginx\html" --store pemfiles --pemfilespath "C:\nginx\ssl" --installation none
注意:C:\nginx\html为网站根目录,需要和Nginx的网站配置文件中的root保持一致
win-acme会自动创建文件夹:你的网站目录\.well-known\acme-challenge\
自动写入验证文件
证书颁发机构访问http://piis.cn/.well-known/acme-challenge/xxx文件进行验证
1.3.1的SelfHosting 验证(内存监听验证)方法申请证书可以提前配置好Nginx的网站模板 套用相同的模板
filesystem(文件验证)方法Nginx网站申请证书需要在命令行中指定网站目录
如果是cdn反向代理的网站这个方法更方便,因为全部网站目录都是相同,就不需要去修改命令行中的网站目录,也不用改造Nginx网站的配置文件和解决端口冲突问题
但是也需要简单改造Nginx网站配置文件:
server {
    listen 80;
    server_name piis.top www.piis.top;

    # 让验证文件 正常访问,不跳HTTPS
    location /.well-known/acme-challenge/ {
        root C:\nginx\html;  # 必须和你命令里的 --webroot 一样
        allow all;
    }


    # 其他请求 自动跳HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}
server
{
    listen 443 ssl;
    #网站域名,请修改server_name对应的值,多域名用空格隔开!!!!!!!!!!!
    server_name piis.top www.piis.top;
    index index.php index.html index.htm default.php default.htm default.html;
    root C:/nginx/html;
    error_page 403 /50x.html;
    error_page 404 /50x.html;
    error_page 502 /50x.html;

    #SSL的pem和key的路径(./ssl/=C:\nginx\ssl\)请修改为!!!!!!!
    ssl_certificate    ./ssl/piis.top-chain.pem;
    ssl_certificate_key    ./ssl/piis.top-key.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    #防止有人用http://域名:443访问
    error_page 497  https://$host$request_uri; 
    
    location /
    {
    ……
    {
{

分类:教程帮助 百度收录 必应收录