如何使用acme.sh自动获取、更新Let’s Encrypt的SSL证书?

acme.sh实现了acme协议,可以从let’s encrypt生成免费的ssl证书。本文主要记录使用dnspod api 自动申请ssl证书

站点HTTPS检测:https://myssl.com/

安装

打包下载仓库的代码(https://github.com/acmesh-official/acme.sh),上传到服务器(任意自己觉得合适的目录),命令行安装:

cd 上传目录
# acmh.sh文件需要可执行的权限
./acme.sh --install --home /home/ssl-auto/acme --config-home /home/ssl-auto/acme --cert-home /home/ssl-auto/acme/ssl
  • –home,是要安装的自定义目录acme.sh。默认情况下,它安装到~/.acme.sh
  • –config-home,是一个可写文件夹,acme.sh 会将所有文件(包括证书/密钥、配置)写入那里。默认情况下,它在–home
  • –cert-home,是一个自定义目录,用于保存您颁发的证书。默认情况下,它保存在–config-home.
  • –accountemail, 是用于注册 Let’s Encrypt 帐户的电子邮件,您将在此处收到续订通知电子邮件。
  • –accountkey,是保存您的帐户私钥的文件。默认情况下,它保存在–config-home.
  • –user-agent, 是用于发送到 Let’s Encrypt 的用户代理标头值。
  • –nocron,在没有 cronjob 的情况下安装 acme.sh

不指定任何参数时,默认安装在用户目录(登录的root,就在root目录,因为root的用户目录在root目录);

安装过程不会污染现有系统的任何功能和文件,所有修改都限制在安装目录中,安装后会自动添加一个自动更新证书的定时任务。

16 0 * * * "/home/ssl-auto/acme"/acme.sh --cron --home "/home/ssl-auto/acme" > /home/ssl-auto/log.txt

生成的定时任务默认不保存日志,可修改>后的路径,保存每次更新的日志;

参考文档:https://github.com/acmesh-official/acme.sh/wiki/How-to-install

使用前的配置

1.帐户注册

ZeroSSL 没有速率限制。可以颁发有效期为 90 天的无限TLS/SSL 证书(参考),由于v3,acme.sh使用 Zerossl 作为默认证书颁发机构 (CA)。在颁发新证书之前需要进行帐户注册(一次性)。另见:https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL

cd 安装目录
./acme.sh --register-account -m 1747111677@qq.com

2.获取dnspod的api秘钥

相关文档:https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert

# 申请之前,设置api参数
export DP_Id="350225"
export DP_Key="6412bd76*********fd9137def26"

除了dnspod之外还支持很多其他的域名服务商,从上方文档可以查询操作方法;

申请证书

# 申请证书
./acme.sh --issue --dns dns_dp -d tele.nicen.cn

大功告成,证书生成目录下已经有了我们需要的证书文件

复制粘贴证书时,不能有多余的空格、空行

如果报错了,可以在仓库的issue内用报错信息搜索一下,看有没有相关的问题,如果没有可以编辑打开acme.sh,搜索报错信息,然后分析一下上下文,找出问题所在;

  • cert.pem –服务器端证书
  • chain.pem –根证书和中继证书
  • fullchain.pem – Nginx所需要ssl_certificate文件
  • privkey.pem – 安全证书KEY文件
提示
官方说明写的pem,但实际我申请到的是cer格式的文件

目前 acme.sh 支持 Let’s Encrypt、Buypass、ZeroSSL、SSL.com和Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用下面命令:

切换 Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
切换 Buypass
acme.sh --set-default-ca --server buypass
切换 ZeroSSL
acme.sh --set-default-ca --server zerossl
切换 SSL.com
acme.sh --set-default-ca --server ssl.com
切换 Google Public CA
acme.sh --set-default-ca --server google

知识总结

1.Strict-Transport-Security

HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效。

HSTS可以用来抵御SSL剥离攻击。SSL剥离攻击是中间人攻击的一种,由Moxie Marlinspike于2009年发明。他在当年的黑帽大会上发表的题为“New Tricks For Defeating SSL In Practice”的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器创建HTTPS连接。它的前提是用户很少直接在地址栏输入https://,用户总是通过点击链接或3xx重定向,从HTTP页面进入HTTPS页面。所以攻击者可以在用户访问HTTP页面时替换所有https://开头的链接为http://,达到阻止HTTPS的目的。

HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP

另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。

Nginx配置如下,Strict-Transport-Security中的max-age的时间不能小于15552000:

add_header Strict-Transport-Security "max-age=31536000";

问题总结

1.各类证书与密钥文件后缀的解释

从文件编码上分,证书只有两大类:

  • PEM格式:使用Base64 ASCII进行编码的纯文本格式
  • DER格式:二机制格式

CRT, CER,KEY这几种证书和密钥文件,它们都有自己的schema,在存储为物理文件时,既可以是PEM格式,也可以DER格式。

  • CER:一般用于windows的证书文件格式
  • CRT:一般用于Linux的证书,包含公钥和主体信息
  • KEY:一般用于密钥,特别是私钥

Certificate Signing Request,即证书签名请求文件。证书申请者在生成私钥的同时也生成证书请求文件。把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。 CER,CRT,KEY相当于论文,说明书等,有规定好的行文格式与规范,而PEM和DER相当于txt格式还是word格式。

原创文章,作者:mantou,如若转载,请注明出处:https://v2ez.com/712.html

(0)
mantoumantou
上一篇 2023年6月20日
下一篇 2023年6月25日

相关推荐

  • 1panel 自定义博客的 404 页面

    今天忽然发现,我的博客的 404 界面被 Openresty 默认的 404 界面给覆盖了,经过一番查找,终于找到了解决方法。 问题原因 默认情况下,Nginx 或 Openres…

    代码程序 2025年3月19日
  • ChatAIr-ChatGPT 客户端 TF 版发布

    市面上那么多 ChatGPT 客户端,为啥还要重复造轮子 先回答一个可能部分人看到标题就会想到的问题~ 嗯,市面上大部分三方客户端我都用过,用起来也很方便,只是,我长期使用下来后发…

    2023年9月26日
  • HEXO博客网站主题:Solitude

    一款优雅的 Hexo 主题,支持懒加载、PWA、Latex以及多种评论系统。 增加评论弹幕页 更高效的自定义侧边栏功能模块,新版本支持排序 公开主题适配资源供大家使用 增加 Pos…

    2024年5月5日
  • 哪吒面板搭建过程详解,教你搭建一款便携服务器监控探针

    今天给大家安利一个最近比较火的服务器状态监控面板,哪吒面板。作者并没有提供详细的安装流程,所以我呢就在这里记录下整个安装的过程,也可以给大家做个参考。 项目简介 被动接收,系统状态…

    2021年5月11日
  • wordpress怎么在导航栏里加图标

    在WordPress中在导航栏里加图标通常可以通过两种方法实现:使用插件或自定义代码。下面分别介绍这两种方法。 方法一:使用插件 1. 在WordPress后台,点击“插件”&gt…

    代码程序 2025年6月7日
  • vps解锁流媒体 dns方式解锁傻瓜式教学

    首先你得有一台又便宜解锁又好的落地鸡类似于这样的这台是海创的 论坛收的一年25人民币 接下来是实际操作 直接复制就行了 解锁机里面丢以下命令 wget –no-check-cer…

    2024年2月6日
  • 3种方式修改 wordpress 用户名

    在数字化时代,WordPress作为世界上最流行的开源内容管理系统之一,被无数网站管理员和个人用户所使用,以创建和管理他们的在线存在。然而,随着用户的不断变更和安全需求的提高,修改…

    2025年7月15日
  • VidHub-免费的Apple全平台网盘视频私人资源程序

    前言 总所周知,Infuse一直是苹果生态中非常优秀的播放器,近期有一款名为VidHub的国产播放器正在挑战它的地位。VidHub目前已经更新了Apple的三大OS支持,播放器目前…

    代码程序 2024年2月28日
  • WordPress导航菜单添加小字hot、new、推荐等

    如果你看到别人的WordPress网站,导航菜单有小字,也叫角标,自己不知道怎么添加,那么下面的教程可以让你也用上。 比如我网站上的限时优惠和感谢打赏这两个小字都是一样的方式实现的…

    代码程序 2021年3月21日
  • Docker 搭建开源文件同步工具 Syncthing

    简介 Syncthing 是一个开源的文件同步工具,可以在不同设备之间同步文件和文件夹。它使用了点对点的方式进行同步,如果点对点连接成功则不需要通过云服务器中转,因此更加安全和私密…

    2023年12月7日

发表回复

登录后才能评论