acme.sh使用standalone模式流程记录及报错解决方法
0.前言
要求环境:
- ubuntu 18.04
- 一个已注册域名且解析已指向服务器ip
acme.sh的github页面有中文说明
更多信息请参考官方wiki。本记录也大量引用官方中文指引
全程不需要sudo,使用sudo反而会引起预料之外的问题
1.安装 acme.sh
sudo apt install cron socat
curl https://get.acme.sh | sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >> ~/.bashrc
source ~/.bashrc
2.生成证书
为了避免多次出错引起lets encrypt的 限制服务,先使用测试模式,通过后再正式注册
下面的命令使用了 ec-256 密匙。比rsa-4096更好
测试模式
acme.sh --issue -d example.com --standalone --debug --server https://acme-s
taging-v02.api.letsencrypt.org/directory --keylength ec-256 --force
此处使用--server
将认证指向测试环境
!如果报错
example.com:Verify error:Fetching http://example.com/.well-known/acme-challenge/QM5V1A3LcxZXr12_5gY3Uh1zh1p-7UARBMLhkK_OxKg: Connection refused
Debug: get token url.
则是外网无法正确访问到资源
检查顺序:
- 防火墙设置
- 解析记录是否生效
- 如果使用
--webroot
自定义路径,检查路径权限 80
端口是否被占用
以上都排除,则基本可以断定是socat没有端口权限。参考issue #2622
使用下面语句将端口赋给socat
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/socat
题外话,我在这个坑上花了近1个小时,真的很坑爹
正式注册
上面通过之后就可以安心正式注册了
其实只要把–server删掉即可
acme.sh --issue -d example.com --standalone --keylength ec-256 --force
3.copy/安装证书
这里直接抄官网了
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
Apache example:
acme.sh --install-cert -d example.com \
--cert-file /path/to/certfile/in/apache/cert.pem \
--key-file /path/to/keyfile/in/apache/key.pem \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd "service apache2 force-reload"
Nginx example:
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"
(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)
Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。
–install-cert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.
详细参数请参考: https://github.com/Neilpang/acme.sh#3-install-the-issued-cert-to-apachenginx-etc
值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.
!如果出错
如果报错权限问题
则可以使用sudo
+ --force
sudo ~/.acme.sh/acme.sh --install-cert -d example.com --key-file [path] --fullchan-file [path] --force
当然官方并不推荐这种做法。还是建议将文件复制到当前用户环境,然后通过软连接的方式使用。
其余略
acme.sh使用standalone模式流程记录及报错解决方法相关推荐
- 记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法
记录-ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法 先po代码: //1.读取配置文件中的基本信息I ...
- MySQL添加中文记录报错解决方法
insert into user values (null,'张三','123',23,'1993-09-01'); 直接向数据库中插入中文记录会出现错误!!! 解决方法: show variable ...
- -bash: ./run.sh: /bin/bash^M: bad interpreter: No such file or directory 报错解决方法
shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识. 查看脚本文件是dos格式还是unix格式的几种办法. (1)cat -A filename 从 ...
- 【转】 JMeter学习(二十四)linux启动jmeter,执行./jmeter.sh报错解决方法
1.l-bash: ./jmeter.sh: Permission denied 解决办法:jmeter.sh的执行权限改改,是权限不够 chmod 777 jmeter.sh 2.An error ...
- QT手动添加Q_OBJECT报错解决方法记录
在.h文件添加Q_OBJECT报错, 则需要在.pro文件添加如下: OBJECTS_DIR = tmp MOC_DIR = tmp 参考:https://www.cnblogs.com ...
- Linux | Ubuntu 20.04安装ipopt和cppAD | 安装全流程+报错解决
文章目录 参考资料 1. Ipopt安装 1. 方式1: 命令行安装 2. 方式2:源码安装 3. 方式3:源码安装 4. Ipopt测试 5. 报错修复 2. CppAD安装 1. 方式1:命令行安 ...
- Eclipse中创建SpringBoot项目流程,及报错解决方案
Eclipse中创建SpringBoot项目流程,及报错解决方案 参考文章: (1)Eclipse中创建SpringBoot项目流程,及报错解决方案 (2)https://www.cnblogs.co ...
- php fpm 日志记录,如何解决nginx下php-fpm不记录php报错日志的问题
如何解决nginx下php-fpm不记录php报错日志的问题 发布时间:2020-07-28 10:17:29 来源:亿速云 阅读:150 作者:Leah 本篇文章为大家展示了如何解决nginx下ph ...
- nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?
解决nginx下php-fpm不记录php报错日志的办法:1.修改[php-fpm.conf]中配置,没有则增加:2.修改[php.ini]中配置,没有则增加:3.重启[php-fpm]即可. 解决n ...
最新文章
- 罗念梓(帮别人名字作诗)
- windows从cmd中键入命令的一些常用小工具
- 为了孩子上名校,他们发论文给子女署名,Nature发文报道韩国学术不当行为
- 记单词 - soil
- 是否同一棵二叉搜索树(c语言实现)
- 【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)
- docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目
- 第10月第25天 java annotation
- android studio(1)---探索Android Studio
- 微信小程序 一些要点
- ListView原理分析之重要方法介绍
- python自动翻译视频字幕_python自动翻译实现方法
- 国内外顶尖人工智能实验室/AI实验室推荐!
- Pytorch iter问题
- 我的Android开发校招之路
- 360safe.php绕过,venom结合Metasploit绕过360安全卫士
- JavaScript 各种验证(转自呆木头)
- 静态网页抓取_学习笔记
- java基于springboot足球联赛管理系统
- java 错误输出_Java中的字数统计错误输出
热门文章
- 开源商城PC+手机+小程序+APP多端电商源码
- 二维数组作为函数的参数传递
- 用Compose shape把外框做成封闭图形
- python爬虫教学百度云_python爬虫爬取百度网盘-怎么做一个百度网盘搜索引擎
- 出租车管理系统源码php,出租车管理系统((SSH+MYSQL+JSP))
- Tiva C 系列微处理器使用注意事项
- ogg pump 进程 Lag at Chkpt 时间延迟解决
- 用友财务共享系统付款单全流程图文演示
- Python初学者值得拥有的3个Python优秀实践 你实践了嘛?
- Arcgis小技巧【12】——ArcGIS标注的各种用法和示例