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.
则是外网无法正确访问到资源

检查顺序:

  1. 防火墙设置
  2. 解析记录是否生效
  3. 如果使用--webroot自定义路径,检查路径权限
  4. 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模式流程记录及报错解决方法相关推荐

  1. 记录---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 ...

  2. MySQL添加中文记录报错解决方法

    insert into user values (null,'张三','123',23,'1993-09-01'); 直接向数据库中插入中文记录会出现错误!!! 解决方法: show variable ...

  3. -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  从 ...

  4. 【转】 JMeter学习(二十四)linux启动jmeter,执行./jmeter.sh报错解决方法

    1.l-bash: ./jmeter.sh: Permission denied 解决办法:jmeter.sh的执行权限改改,是权限不够 chmod 777 jmeter.sh 2.An error ...

  5. QT手动添加Q_OBJECT报错解决方法记录

    在.h文件添加Q_OBJECT报错,  则需要在.pro文件添加如下: OBJECTS_DIR  = tmp MOC_DIR      = tmp 参考:https://www.cnblogs.com ...

  6. Linux | Ubuntu 20.04安装ipopt和cppAD | 安装全流程+报错解决

    文章目录 参考资料 1. Ipopt安装 1. 方式1: 命令行安装 2. 方式2:源码安装 3. 方式3:源码安装 4. Ipopt测试 5. 报错修复 2. CppAD安装 1. 方式1:命令行安 ...

  7. Eclipse中创建SpringBoot项目流程,及报错解决方案

    Eclipse中创建SpringBoot项目流程,及报错解决方案 参考文章: (1)Eclipse中创建SpringBoot项目流程,及报错解决方案 (2)https://www.cnblogs.co ...

  8. php fpm 日志记录,如何解决nginx下php-fpm不记录php报错日志的问题

    如何解决nginx下php-fpm不记录php报错日志的问题 发布时间:2020-07-28 10:17:29 来源:亿速云 阅读:150 作者:Leah 本篇文章为大家展示了如何解决nginx下ph ...

  9. nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?

    解决nginx下php-fpm不记录php报错日志的办法:1.修改[php-fpm.conf]中配置,没有则增加:2.修改[php.ini]中配置,没有则增加:3.重启[php-fpm]即可. 解决n ...

最新文章

  1. 罗念梓(帮别人名字作诗)
  2. windows从cmd中键入命令的一些常用小工具
  3. 为了孩子上名校,他们发论文给子女署名,Nature发文报道韩国学术不当行为
  4. 记单词 - soil
  5. 是否同一棵二叉搜索树(c语言实现)
  6. 【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)
  7. docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目
  8. 第10月第25天 java annotation
  9. android studio(1)---探索Android Studio
  10. 微信小程序 一些要点
  11. ListView原理分析之重要方法介绍
  12. python自动翻译视频字幕_python自动翻译实现方法
  13. 国内外顶尖人工智能实验室/AI实验室推荐!
  14. Pytorch iter问题
  15. 我的Android开发校招之路
  16. 360safe.php绕过,venom结合Metasploit绕过360安全卫士
  17. JavaScript 各种验证(转自呆木头)
  18. 静态网页抓取_学习笔记
  19. java基于springboot足球联赛管理系统
  20. java 错误输出_Java中的字数统计错误输出

热门文章

  1. 开源商城PC+手机+小程序+APP多端电商源码
  2. 二维数组作为函数的参数传递
  3. 用Compose shape把外框做成封闭图形
  4. python爬虫教学百度云_python爬虫爬取百度网盘-怎么做一个百度网盘搜索引擎
  5. 出租车管理系统源码php,出租车管理系统((SSH+MYSQL+JSP))
  6. Tiva C 系列微处理器使用注意事项
  7. ogg pump 进程 Lag at Chkpt 时间延迟解决
  8. 用友财务共享系统付款单全流程图文演示
  9. Python初学者值得拥有的3个Python优秀实践 你实践了嘛?
  10. Arcgis小技巧【12】——ArcGIS标注的各种用法和示例