当前位置: 首页 > news >正文

【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

查看申请的证书

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

安装证书

不要直接复制证书到目标目录,正确的方式是使用 -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-实现自动化部署SSL证书(有详细的 DNS API)
Let’s Encrypt SSL 泛域名证书申请和配置
nginx 配置 acme.sh

相关文章:

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

安装acme.sh 安装 acme.sh 并设置邮箱用来接受重要通知,如证书快过期未更新通知 curl https://get.acme.sh | sh -s emailmyexample.com执行命令后几秒就安装好了,如果半天没有反应请 CtrlC 后重新执行命令。acme.sh 安装在 ~/.acme.sh 目录下&#xf…...

XML学习及应用

介绍XML语法及应用 1.XML基础知识1.1什么是XML语言1.2 XML 和 HTML 之间的差异1.3 XML 用途 2.XML语法2.1基础语法2.2XML元素2.3 XML属性2.4XML命名空间 3.XML验证3.1xml语法验证3.2自定义验证3.2.1 XML DTD3.2.2 XML Schema3.2.3PCDATA和CDATA区别3.2.4 参考 4.xml解析4.1准备…...

Docker部署Nacos集群并用nginx反向代理负载均衡

首先找到Nacos官网给的Github仓库,里面有docker compose可以快速启动Nacos集群。 文章目录 一. 脚本概况二. 自定义修改1. example/cluster-hostname.yaml2. example/.env3. env/mysql.env4. env/nacos-hostname.env 三、运行四、nginx反向代理,负载均衡…...

C++STL的stack和queue(超详解)

文章目录 前言stack栈的题目最小栈JZ31 栈的压入、弹出序列150. 逆波兰表达式求值 stack的模拟实现queue的模拟实现dequedeque底层设计 前言 栈和队列这一块其实有数据结构的基础,学起来非常简单。 stack 栈的成员函数就这么写,除了emplace其他都已经非…...

【C语言实现windows环境下Socket编程TCP/IP协议】

C语言实现windows环境下Socket编程TCP/IP协议 主要是记录解决一些在我本地编译运行时出现的问题connect :No error关于头文件关于stray /xxx和socket:No error问题千万记得是服务器先启动哦,客户端后启动下面附上我改好的代码 主要是记录解决…...

CGAL的3D简单网格数据结构

由具有多个曲面面片的多面体曲面生成的多域四面体网格。将显示完整的三角剖分,包括属于或不属于网格复合体、曲面面片和特征边的单元。 1、网格复合体、 此软件包致力于三维单纯形网格数据结构的表示。 一个3D单纯形复杂体由点、线段、三角形、四面体及其相应的组合…...

正则表达式(9):扩展正则表达式

正则表达式(9):扩展正则表达式 小结 本博文转载自 前文中一直在说,在Linux中,正则表达式可以分为”基本正则表达式”和”扩展正则表达式”。 我们已经认识了”基本正则表达式”,现在,我们来认…...

静态SOCKS5:了解基本概念和协议

SOCKS5是一种网络协议,是SOCKS协议的第五个版本,它提供了一种安全的、加密的网络连接,可以帮助用户在互联网上保护自己的隐私和安全。静态SOCKS5是指使用静态IP地址和端口的SOCKS5代理服务器,这种代理服务器可以提供更稳定、更快速…...

用23种设计模式打造一个cocos creator的游戏框架----(十二)状态模式

1、模式标准 模式名称:状态模式 模式分类:行为型 模式意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构图: 适用于: 1、一个对象的行为决定于它的状态,并且它必须…...

js 转换为数组并返回(Array.of())

Array提供了方法直接将一组值转换为数组并返回 Array.of()方法 Array.of(1,2,3) 结果...

git上传文件夹后打不开,有@.....

这种情况是你上传的这个文件夹也是个git仓库,需要删除.git文件。 如果你删除.git文件后,上传git还是不行,文件夹还是…,那就需要清理以下整个项目的缓存: git rm -r --cached ....

31、应急响应——Windows

文章目录 一、账户排查1.1 登录服务器的途径1.2 弱口令1.3 可疑账号 二、网络排查三、进程排查四、注册表排查五、内存分析 一、账户排查 1.1 登录服务器的途径 3389smb 445httpftp数据库中间件 1.2 弱口令 弱口令途径:3389、smb 445、http、ftp、数据库、中间件…...

QT linux下使用Qt Creator调试附加进程,加快调试

文章目录 一、调试附加进程二、配置流程(1)开放linux内核配置项(2)命令行直接启动程序(3)调试附加到进程 一、调试附加进程 使用附加进程调试要比直接调试速度要快,但是不足之处是,…...

IDEA Maven项目如何引用本地jar包,并打包发布

jar包位于当前路径下的lib目录中 引入所需要的配置 查看当前jar包的相关信息 包的引入,需要使用到当前包的artifactId, groupId, version 需要到包的/META-INF/maven/ 下面的 pom.xml 文件里面找 在Maven构建项目时,生成的依赖包中的/META-INF/maven目录存放了一些…...

Unity中Batching优化的GPU实例化(3)

文章目录 前言一、UNITY_SETUP_INSTANCE_ID(v);二、在UnityInstancing.cginc文件中,看一下Unity这句话做了什么1、使用了该 .cginc 后,会自动预定义该函数2、需要满足GPU实例化条件,才会执行对应语句3、满足GPU实例化后,主要执行的…...

Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)

1.JSON(JavaScript Object Notation) JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。JSON通过简单的key-value键值对来描述数据,可以被广泛用于网络通信、数据存储等各种应用场景&#xff0…...

【软件安装】VMware安装Centos7虚拟机并且设置静态IP,实现Windows和Centos7网络互相访问

这篇文章,主要介绍VMware安装Centos7虚拟机并且设置静态IP,实现Windows和Centos7网络互相访问。 目录 一、VMware安装Centos7 1.1、下载Centos7镜像 1.2、安装Centos7系统 二、设置静态IP地址 2.1、查看虚拟机网络IP 2.2、禁用NetworkManager服务 …...

203. 移除链表元素

203. 移除链表元素 https://leetcode.cn/problems/remove-linked-list-elements/description/ 方法一:迭代 迭代遍历链表 注意:这里的head是指向第一个节点的(首元节点),并没有一个虚拟的头节点,所以这…...

最新鸿蒙HarmonyOS4.0开发登陆的界面1

下载deveco-studio 说明一下,本人只是学习中,现在只是拿着vue及uniapp的经验在一点一点的折腾,不过现在看来,鸿蒙入门并不是很难。也许是自己没有深入下去。 https://developer.harmonyos.com/cn/develop/deveco-studio#download…...

【模型训练】目标跟踪

【模型训练】目标跟踪...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

Linux入门(十五)安装java安装tomcat安装dotnet安装mysql

安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL(Software OpenGL)‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式(包括几何处理、光栅化、着色等),不依赖GPU硬件加速。这种模式通常性能较低,但兼容性极强,常用于不支持硬件加速…...

World-writable config file /etc/mysql/mysql.conf.d/my.cnf is ignored

https://stackoverflow.com/questions/53741107/mysql-in-docker-on-ubuntu-warning-world-writable-config-file-is-ignored 修改权限 -> 重启mysql # 检查字符集配置 SHOW VARIABLES WHERE Variable_name IN (character_set_server, character_set_database ); --------…...

短视频时长预估算法调研

weighted LR o d d s T p 1 − p ( 1 − p ) o d d s T p ( T p o d d s ∗ p ) o d d s p o d d s T o d d s odds \frac{Tp}{1-p} \newline (1-p)odds Tp \newline (Tp odds * p) odds \newline p \frac{odds}{T odds} \newline odds1−pTp​(1−p)oddsTp(Tpodds…...