本教程只要是介绍Windows环境中利用wacs.exe给网站申请SSL免费证书和自动续期SSL证书
在Windows中2种环境部署SSL证书 一是IIS网站环境 二是Nginx环境
目前最新的wacs.exe下载[解压即用]:https://piis.lanzoul.com/ixBxf3oskn5e
一 :我们先说说Nginx环境下SelfHosting 验证(内存监听验证)给网站申请SSL免费证书:
请看后面章节“四:Nginx环境使用filesystem(文件验证)申请SSL免费证书”
本节介绍的是使用 SelfHosting 验证(内存监听验证)申请证书不是使用filesystem(文件验证)
如果Nginx环境中使用filesystem(文件验证)申请SSL免费证书请看后面的四:Nginx环境使用filesystem(文件验证)申请SSL免费证书
Nginx环境cdn反向代理的网站使用filesystem(文件验证)方法更方便,因为全部网站目录都是相同,也不用去改造Nginx网站配置文件和解决端口冲突,
1.1网站配置改造
因为证书颁发机构验证时是连接80端口,而服务器的80端口被Nginx占用,就会使得证书申请失败
经过以上改造 服务器不会出现80端口冲突问题 也不影响网站正常运行和证书验证
1.2 防火墙开放8080端口
因为我们后面是用8080端口启动wacs.exe提供验证
1.3.1 命令行自动申请证书===推荐方法
wacs.exe我这里是安装到C:\win-acme目录中
命令行C:\win-acme目录并申请证书:
说明: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网站配置文件中的红色部分
然后执行如下命令即可:
注意: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网站配置文件
4.1将HTTP和Https分开设置,方便将HTTP自动跳转到https访问:
4.2将HTTP和Https合并在一起,不强制HTTP自动跳转到https访问:
在Windows中2种环境部署SSL证书 一是IIS网站环境 二是Nginx环境
目前最新的wacs.exe下载[解压即用]:https://piis.lanzoul.com/ixBxf3oskn5e
请看后面章节“四:Nginx环境使用filesystem(文件验证)申请SSL免费证书”
本节介绍的是使用 SelfHosting 验证(内存监听验证)申请证书不是使用filesystem(文件验证)
如果Nginx环境中使用filesystem(文件验证)申请SSL免费证书请看后面的四:Nginx环境使用filesystem(文件验证)申请SSL免费证书
Nginx环境cdn反向代理的网站使用filesystem(文件验证)方法更方便,因为全部网站目录都是相同,也不用去改造Nginx网站配置文件和解决端口冲突,
| 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端口冲突问题 也不影响网站正常运行和证书验证
因为我们后面是用8080端口启动wacs.exe提供验证
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" |
C:\nginx\ssl为证书存放路径
8080为wacs.exe的SSL验证端口 也可以改为你想设置的端口 如果改了端口也需要改1.1和1.2中的端口
运行命令后会在 C:\nginx\ssl中自动生成4个piis.top-**.pem文件
我们只需要用到***-chain.pem和***-key.pem
另外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 --accepttos --emailaddress "fuwuqizuyong@piis.cn" |
win-acme会自动创建文件夹:你的网站目录\.well-known\acme-challenge\
自动写入验证文件
证书颁发机构访问http://piis.cn/.well-known/acme-challenge/xxx文件进行验证
1.3.1的SelfHosting 验证(内存监听验证)方法申请证书可以提前配置好Nginx的网站模板 套用相同的模板
filesystem(文件验证)方法Nginx网站申请证书需要在命令行中指定网站目录
如果是cdn反向代理的网站这个方法更方便,因为全部网站目录都是相同,就不需要去修改命令行中的网站目录,也不用改造Nginx网站的配置文件和解决端口冲突问题
但是也需要简单改造Nginx网站配置文件
4.1将HTTP和Https分开设置,方便将HTTP自动跳转到https访问:
| server #这块是将http独立出来,方便设置http自动跳转到https { listen 80; server_name piis.top www.piis.top; index index.php index.html index.htm default.php default.htm default.html; root C:/nginx/html; #放行SSL验证路径 不跳转到https (不影响证书申请) location ~ /.well-known/ { 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; #pem和key文件必须是UTF-8格式,不是UTF-8+BOM格式或其他格式 #如果用记事本打开编辑,要另存为UTF-8格式,记事本默认保存会是UTF-8+BOM格式,会导致nginx无法启动 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; #关闭不太安全的会话缓存方式 ssl_stapling on; #加速SSL握手,让网站打开更快 ssl_stapling_verify on; #让Nginx更严谨地验证证书状态防止造假 location / { …… } #禁止访问的文件或目录,不需要修改 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #日志路径,不需要修改 access_log ./wwwlogs/$host.access.$logdate.log main if=$log_filter; error_log ./wwwlogs/vhost.error.log crit; } |
4.2将HTTP和Https合并在一起,不强制HTTP自动跳转到https访问:
| server { listen 80; listen 443 ssl; #网站域名,请修改server_name对应的值,多域名用空格隔开!!!!!!!!!!! server_name seeisp.cn www.seeisp.cn; 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/seeisp.cn-chain.pem; ssl_certificate_key ./ssl/seeisp.cn-key.pem; #pem和key文件必须是UTF-8格式,不是UTF-8+BOM格式或其他格式 #如果用记事本打开编辑,要另存为UTF-8格式,记事本默认保存会是UTF-8+BOM格式,会导致nginx无法启动 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; #关闭不太安全的会话缓存方式 ssl_stapling on; #加速SSL握手,让网站打开更快 ssl_stapling_verify on; #让Nginx更严谨地验证证书状态防止造假 location / { …… } #禁止访问的文件或目录,不需要修改 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #设置申请SSL证书验证目录能正常访问 location ~ /.well-known/ { allow all; } #日志路径,不需要修改 access_log ./wwwlogs/$host.access.$logdate.log main if=$log_filter; error_log ./wwwlogs/vhost.error.log crit; } |
文章来源:
网络小编D
版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站立刻删除。
