【Let‘s Encrypt SSL】使用 acme.sh 给 Nginx 安装 Let’s Encrypt 提供的免费 SSL 证书

2023-12-20 17:45

本文主要是介绍【Let‘s Encrypt SSL】使用 acme.sh 给 Nginx 安装 Let’s Encrypt 提供的免费 SSL 证书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装acme.sh

安装 acme.sh 并设置邮箱用来接受重要通知,如证书快过期未更新通知

curl https://get.acme.sh | sh -s email=my@example.com

执行命令后几秒就安装好了,如果半天没有反应请 Ctrl+C 后重新执行命令。acme.sh 安装在 ~/.acme.sh 目录下,并自动创建了一个 cronjob,每天 0:00 点自动检测所有的证书,如果快过期了, 则会自动更新。安装后,理论上会自动添加一个 acme.sh 全局应用别名,但有时候会 command not found,需要手动执行以下命令:source ~/.bashrc 或 source ~/.bash_profile,或关掉终端重新打开,然后再继续下一步。也可以在 ~/.acme.sh 目录下使用 sh acme.sh 执行命令(例如:sh acme.sh --list)

申请证书

Zerossl

acme.sh v3.0 开始默认的免费 SSL 证书变更为:ZeroSSL

相关文章:

从 acme.sh v3.0 说说 ZeroSSL
Zerossl官网

HTTP方式

修改 nginx.conf 配置文件

server {listen 80;#请填写绑定证书的域名server_name example.com;
}

申请证书,–day 2 表示更新证书的天数,默认值为 60 天

acme.sh --issue -d xh123.cn --nginx --days 2

进入~/.acme.sh 目录下,查看证书信息
在这里插入图片描述

手动 DNS 方式

  • 这种方式需要手动在域名上添加一条 TXT 解析记录,验证域名所有权。这种方式的好处是, 你不需要任何服务器,不需要任何公网 IP,只需要 DNS 的解析记录即可完成验证。
  • 注意:这种方式的坏处是,如果不同时配置 DNS API,将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

手动 DNS 验证

acme.sh --issue -d example.com -d "*.example.com" --dns \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

到 DNS 解析中,新增一条 TXT 记录,域名前缀为 _acme-challenge,记录值为终端输出的 TXT value 的值。然后再次执行

acme.sh --renew -d example.com -d "*.example.com" \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

DNS API 方式

本文章使用腾讯云 DNSPod

登录腾讯云 DNSPod并创建DNSPos Token 秘钥
在这里插入图片描述
获取到秘钥后,在 ~/.acme.sh 目录下的 account.conf 配置文件中添加配置

# 腾讯云
export DP_Id="YourId"
export DP_Key="YourToken"

在这里插入图片描述
申请证书,–server letsencrypt 表示指定证书申请服务器为 Let’s Encrypt,–day 2 表示更新证书的天数,默认值为 60 天

acme.sh --issue --server letsencrypt --dns dns_dp -d example.com --days 2

安装证书

不要直接复制证书到目标目录,正确的方式是使用 -install-cert 命令安装。在命令中指定目标位置,证书文件会被复制到相应的位置。reloadcmd 命令:当证书发布/更新后,reloadcmd 命令会被自动调用,让新的配置生效。也就是证书更新之后,nginx 配置的证书信息也会自动更新。

acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/conf/ssl/example.com/example.com.key \
--fullchain-file /etc/nginx/conf/ssl/example.com/fullchain.cer \
--reloadcmd      "systemctl force-reload nginx"

nginx.conf 配置证书信息

server {#SSL 默认访问端口号为 443listen 443 ssl;#请填写绑定证书的域名server_name example.com;#请填写证书文件的相对路径或绝对路径ssl_certificate /etc/nginx/conf/ssl/example.com/fullchain.cer;#请填写私钥文件的相对路径或绝对路径ssl_certificate_key /etc/nginx/conf/ssl/example.com/example.com.key;location / {root   /etc/nginx/html/blog;index  index.html index.htm;}
}

重启nginx后生效

nginx -c /etc/nginx/nginx.conf
nginx -s reload

使用https方式访问域名网站,查看证书信息
在这里插入图片描述

其他命令

查看申请的证书

acme.sh --list

在这里插入图片描述

强制续期证书

acme.sh --renew -d example.com --force

删除证书

删除证书

acme.sh --remove -d example.com

撤销证书

acme.sh --revoke -d example.com

命令执行成功后,需要一并删除在~/.acme.sh目录中的域名文件夹

rm -rf example.com_ecc

更新 acme.sh

目前由于 acme 协议和 Let’s Encrypt CA 都在频繁的更新,因此 acme.sh 也经常更新以保持同步。

手动升级 acme.sh 到最新版

acme.sh --upgrade

如果你不想手动升级,可以开启自动升级:

acme.sh --upgrade --auto-upgrade

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

本文参考链接:
acme.sh-实现自动化部署SSL证书(有详细的 DNS API)
Let’s Encrypt SSL 泛域名证书申请和配置
nginx 配置 acme.sh

这篇关于【Let‘s Encrypt SSL】使用 acme.sh 给 Nginx 安装 Let’s Encrypt 提供的免费 SSL 证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/516905

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa