使用EAB密钥在Certbot获取SSL证书及Angular应用HTTPS配置问题
无法通过Certbot的dns-google插件获取ACME SSL证书
操作流程
- 安装Certbot等ACME客户端
- 执行注册命令(对接Google Trust Services,使用EAB密钥):
certbot register --email <你的邮箱> --no-eff-email --server "https://dv.acme-v02.api.pki.goog/directory" --eab-kid "<EAB_KEY_ID>" --eab-hmac-key "<EAB_HMAC_KEY>"
需将`<你的邮箱>`、`<EAB_KEY_ID>`、`<EAB_HMAC_KEY>`替换为Google Domains获取的对应值 - 执行证书获取命令(通过Google Cloud DNS自动完成dns-01验证): ```bash certbot certonly --preferred-challenges dns-01 --dns-google -d <你的域名>
需将<你的域名>替换为实际域名
问题详情
执行证书获取命令时,触发以下错误:
Saving debug log to C:\Certbot\log\letsencrypt.log
The requested dns-google plugin does not appear to be installed
已通过pip3 show certbot-dns-google检查插件安装状态,但问题未解决。
环境信息
- 操作系统:Windows 10
- Python版本:3.12.1
- 已通过官网安装包及
pip install certbot-dns-google命令完成Certbot与插件安装,目标对接Nginx服务器
Angular应用HTTPS配置参考
- Google Domain配置:登录Google Domains,进入「Security」菜单,点击「Manage SSL certificates」,购买SSL证书后从「Google Trust Services」获取EAB密钥
- 证书获取:参照上述ACME流程
- Nginx部署配置:配置Nginx启用HTTPS,指定SSL证书(.crt)和私钥(.key)的本地路径
- Angular项目配置:修改
angular.json,开启HTTPS模式,设置baseHref为HTTPS域名,开发环境下启用useHash:
"build": {
"options": {
"useHash": true
}
}
- **构建与部署**:执行`ng build --prod`生成生产环境包,部署至服务器 ## 解决方案(针对dns-google插件未识别问题) ### 1. 验证Python环境兼容性 Python 3.12属于较新版本,部分Certbot插件可能存在兼容性适配延迟。可尝试: - 降级Python至3.11版本(Certbot官方推荐的稳定兼容版本) - 改用Certbot官方Windows安装包(而非pip安装),安装包会自动配置兼容的插件依赖 ### 2. 统一Python环境路径 Windows下多Python环境共存可能导致pip安装的插件不在Certbot运行的环境中: - 执行`where certbot`查看Certbot的执行路径 - 执行`where pip`确认pip所属的Python环境,确保与Certbot路径一致 - 若环境不一致,使用对应环境的Python执行安装命令:`python -m pip install certbot-dns-google` ### 3. 手动指定插件路径 若插件已安装但Certbot无法识别,可在命令中手动指定插件位置: ```bash certbot certonly --preferred-challenges dns-01 --dns-google --dns-google-credentials <Google Cloud服务密钥路径> -d <你的域名> --plugins certbot-dns-google:<插件安装路径>
插件安装路径可通过pip show certbot-dns-google输出中的Location字段获取
4. Docker容器运行方案(替代)
若上述方法均无效,可使用Docker隔离环境运行Certbot,规避系统环境冲突:
docker run -it --rm -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/dns-google certonly --preferred-challenges dns-01 --dns-google-credentials <Google Cloud服务密钥路径> -d <你的域名>
需提前准备Google Cloud服务密钥文件,并确保Windows上已安装Docker Desktop
内容的提问来源于stack exchange,提问作者Soujanya Joshi
相关产品推荐
相关产品推荐

