使用windows环境的云服务器为域名申请certbot免费SSL证书
作者一位刚刚走完全程的实践者适用场景购买了 Windows ECS 云服务器和域名需要为微信小程序配置 HTTPSSSL 证书的新手第一阶段准备工作避免走弯路✅ 你需要准备阿里云 ECS 实例本文基于 Windows Server 环境已备案的域名如果服务器在国内域名已解析到 ECS 公网 IPA 记录 踩坑预警DNS 解析坑点申请证书时 Certbot 报错DNS problem: NXDOMAIN原因域名解析未生效或记录错误解决操作位置本地电脑的浏览器登录阿里云/域名控制台登录域名控制台确保添加了 A 记录主机记录 和 www记录值为 ECS 公网 IP验证本地电脑的命令提示符 (CMD) 或 PowerShellping 你的域名或nslookup 你的域名注意解析生效可能需要几分钟到几小时耐心等待第二阶段安装 NginxWindows 环境 下载与安装操作位置云服务器通过远程桌面的浏览器访问 nginx.org 下载 Windows 版本.zip包操作位置云服务器的文件资源管理器解压到不含空格和中文的路径如C:\server\nginx\nginx操作位置云服务器的命令提示符 (CMD)以管理员身份运行进入解压目录cd C:\server\nginx\nginx启动 Nginxstart nginx✅ 验证操作位置云服务器内的浏览器 或 本地电脑的浏览器访问http://你的ECS公网IP看到“Welcome to nginx”即成功 踩坑预警端口被占用操作位置云服务器的命令提示符 (CMD)检查 80 端口是否被占用netstat -ano | findstr :80第三阶段安装 WSL 和 Certbot关键由于 Certbot 官方已停止支持 Windows 原生版本我们需要通过 WSLWindows Subsystem for Linux来运行 Certbot。1️⃣ 安装 WSL操作位置云服务器的 PowerShell以管理员身份运行wsl--install重启系统。2️⃣ 安装 Ubuntu 发行版操作位置云服务器的 PowerShell以管理员身份运行wsl--install-d Ubuntu-24.04注意如果遇到WSL2 不支持的错误请按以下顺序排查启用 Windows 功能“虚拟机平台”、“Hyper-V”操作位置云服务器的 PowerShell 管理员确保 BIOS 中开启虚拟化云服务器需确认实例支持嵌套虚拟化必要时联系云厂商终极解决方案如果虚拟化实在无法开启改用 WSL1wsl--set-default-version 1 wsl--install-d Ubuntu-24.043️⃣ 在 Ubuntu 中安装 Certbot操作位置云服务器内的 WSL 终端Ubuntu启动 Ubuntu可在开始菜单找到 Ubuntu 图标点击或在 PowerShell/CMD 中输入wsl依次执行sudoaptupdatesudoaptinstallcertbot-y第四阶段申请 SSL 证书 使用 webroot 模式因为 Nginx 在 Windows 上操作位置云服务器内的 WSL 终端Ubuntusudocertbot certonly--webroot-w/mnt/c/server/nginx/nginx/html-d你的域名/mnt/c/是 WSL 访问 Windows C 盘的路径-w后面是你的网站根目录在 Windows 中的实际路径可添加多个-d申请多个域名如-d www.你的域名 踩坑预警 180 端口不通现象Certbot 报错Connection refused排查步骤检查阿里云安全组操作位置本地电脑的浏览器登录阿里云控制台确保入方向有TCP 80/80授权对象0.0.0.0/0检查 Windows 防火墙操作位置云服务器的 PowerShell管理员允许 80 端口入站New-NetFirewallRule -DisplayName Allow HTTP 80 -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow确认 Nginx 是否运行并监听 80操作位置云服务器的命令提示符 (CMD)tasklist | findstr nginx # 看进程 netstat -ano | findstr :80 # 看监听从外部测试端口非常重要操作位置本地电脑的 PowerShellTest-NetConnection你的域名-Port 80显示TcpTestSucceeded : True才算通血的教训即使安全组和防火墙都配置正确如果重启了 ECS 但没有重启 NginxNginx 可能没有重新绑定端口导致端口不通解决每次重启 ECS 后记得手动启动 Nginxcd C:\server\nginx\nginx start nginx 踩坑预警 2域名写错现象复制证书时提示No such file or directory原因申请时用的域名和复制时写的域名不一致解决仔细核对证书目录在/etc/letsencrypt/live/你的实际域名/操作位置云服务器内的 WSL 终端ls-l/etc/letsencrypt/live/第五阶段配置 Nginx 启用 HTTPS1️⃣ 复制证书到 Windows操作位置云服务器内的 WSL 终端sudomkdir-p/mnt/c/sslsudocp/etc/letsencrypt/live/你的域名/fullchain.pem /mnt/c/ssl/sudocp/etc/letsencrypt/live/你的域名/privkey.pem /mnt/c/ssl/2️⃣ 修改 Nginx 配置操作位置云服务器的文件资源管理器 或 文本编辑器如记事本编辑C:\server\nginx\nginx\conf\nginx.conf添加以下内容可参考示例配置# HTTP 跳转 HTTPS server { listen 80; server_name 你的域名 www.你的域名; return 301 https://$host$request_uri; } # HTTPS 服务器 server { listen 443 ssl; server_name 你的域名 www.你的域名; ssl_certificate C:/ssl/fullchain.pem; ssl_certificate_key C:/ssl/privkey.pem; location / { root html; index index.html index.htm; } }3️⃣ 测试并重载操作位置云服务器的命令提示符 (CMD)cd C:\server\nginx\nginx nginx -t # 测试配置文件 nginx -s reload # 重载生效 踩坑预警证书文件路径错误现象nginx -t报错cannot load certificate key原因文件确实不存在忘记复制路径中的斜杠方向错误Nginx 在 Windows 下推荐用正斜杠/或双反斜杠\\权限问题证书文件无法读取解决操作位置云服务器的文件资源管理器检查C:\ssl下文件是否存在操作位置云服务器的命令提示符用type C:\ssl\privkey.pem测试文件可读性确认配置中的路径正确。第六阶段验证与后续✅ 验证 HTTPS操作位置本地电脑的浏览器访问https://你的域名看到小锁图标即成功 关于证书续期90天有效期Certbot 在 WSL 中会自动安装定时任务每天检查续期。但续期后证书文件会更新需要操作位置云服务器内的 WSL 终端sudocp/etc/letsencrypt/live/你的域名/*.pem /mnt/c/ssl/操作位置云服务器的命令提示符 (CMD)nginx -s reload进阶方案编写脚本在续期钩子中自动完成复制和重载感兴趣的可查阅 Certbot 文档。 总结你可能会踩的坑快速自查表问题可能原因解决含操作环境DNS problem: NXDOMAIN域名解析未生效本地浏览器登录域名控制台检查 A 记录本地电脑 CMD用ping或nslookup等待生效Connection refused80 端口不通云服务器检查安全组本地浏览器、防火墙云服务器 PowerShell、Nginx 是否运行云服务器 CMD本地电脑 PowerShell用Test-NetConnection测试安全组已配但仍不通未重启 ECS 或 Nginx云服务器 CMD手动启动 NginxNo such file or directory域名写错云服务器 WSL 终端ls /etc/letsencrypt/live/核对目录名cannot load certificate key证书文件缺失或路径错云服务器文件资源管理器检查C:\ssl云服务器 CMD确认路径正确WSL2 安装失败虚拟化未开启云服务器 PowerShell启用必需功能或改用 WSL1
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2421504.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!