免费SSL/TLS域名证书Certbot配置详细过程

文章目录

  • 1. 在服务器上安装 Certbot
  • 2. 停止 web 服务器
  • 3. 运行 certbot 命令
  • 4. 证书生成位置
  • 5. 配置 web 服务器
  • 6. 重新加载 web 服务器
  • 7. 验证
  • 8. 配置自动续期
  • 发现问题
    • 1. Problem binding to port 80: Could not bind to IPv4 or IPv6.
    • 2. live directory exists for example.com

1. 在服务器上安装 Certbot

  • 对于 Linux 系统,可以通过包管理器安装 Certbot,如 Debian/Ubuntu 使用:sudo apt install certbot,然后输入:“Y”
    installY

2. 停止 web 服务器

  • 停止现有的 web 服务器程序,如 nginx 或 apache。这样可以避免端口冲突(视实际情况而定)。

3. 运行 certbot 命令

  • 这会启动一个临时 web 服务器用来做域名验证,并获取 example.com 和 www.example.com 的证书(其中example需要更换为目标域名)。
    sudo certbot certonly --standalone -d example.com -d www.example.com
    
    执行
    成功

根据证书获取成功的提示信息,可以看出:

  1. 证书和链文件已保存到:/etc/letsencrypt/live/example.com-0002/fullchain.pem
  2. 私钥文件保存到:/etc/letsencrypt/live/example.com-0002/privkey.pem
  3. 证书有效期至2023-11-12
  4. 以后需要续期或更新证书,可以再次运行 certbot
  5. 使用 “certbot renew” 可以自动续期所有证书

通过指定不同的文件名 aihnet.com-0002 避免了与现有证书冲突。接下来的步骤是:

  1. 将新证书配置到 web 服务器程序中,如 nginx 或 apache。
  2. 重新加载 web 服务器使证书生效。
  3. 配置 certbot 的自动续期任务,保证证书持续有效。
  4. 可选删除旧的证书文件。

总体上看,Certbot 已成功帮助获取了新证书,只需要部署到 web 服务器即可完成使用。以后也可以通过 certbot 轻松自动续期。

4. 证书生成位置

  • Certbot 会把证书生成到系统默认路径,如 nginx 的 /etc/letsencrypt/live/example.com/

5. 配置 web 服务器

  • 以 nginx 为例,编辑 /etc/nginx/conf.d/example.com.conf ,指向证书文件路径,并添加 SSL 相关配置。

6. 重新加载 web 服务器

  • 让 nginx 重新加载新的配置文件并启动。

7. 验证

  • 访问网站,检查证书是否正确加载。

8. 配置自动续期

  • 添加 crontab 定时任务,使用 certbot renew 定期续期。

  以上步骤可完成 Certbot 的标准配置。也可以进一步自定义证书保存路径、配置 HTTP 到 HTTPS 重定向等。Certbot 提供了强大的管理 SSL 证书的自动化能力。

发现问题

1. Problem binding to port 80: Could not bind to IPv4 or IPv6.

根据这个错误信息,问题出在Certbot自动验证过程中启动的临时web服务器未能成功绑定80端口。可能原因有:

  1. 80端口被其它进程占用了,需要关闭其他正在使用80端口的程序。可以用netstat -ntlup来检查。检查端口
  2. Certbot默认使用80端口。如果想使用其他端口,可以添加--http-01-port 8080参数来指定端口。
    8080
  3. 防火墙阻止了80端口访问。可以添加规则放行80端口或关闭防火墙测试。
  4. 服务器上存在多个网卡或IP地址,Certbot绑定了错误的地址。可以用--preferred-challenges http参数来强制使用80端口。
  5. 权限不足,需要以root账户运行certbot或使用sudo。
  6. 系统底层资源不足,导致无法打开80端口。可以切换到更强劲的服务器。

  建议先检查80端口情况,关闭占用进程或改换端口。若还未解决,可以尝试关闭防火墙、指定网络地址绑定等方法。保证Certbot能打开80端口则可顺利完成验证,获取证书。

2. live directory exists for example.com

  根据您的命令输出,使用端口8080避免了前面的80端口冲突问题,Certbot验证过程继续进行了下去。但在最后一个步骤时报错显示live目录已存在。这表示您之前已经为example.com生成过证书,并存在默认的证书文件目录/etc/letsencrypt/live/example.com。

出现这个问题的原因可能有:

  1. 你之前使用certbot或者其他工具已经获取过example.com的证书了,现在会冲突。
  2. 上次获取证书过程中失败或被中断,留下了残余文件。
  3. certbot的证书存储路径被修改或指向了自定义目录。
  4. 不同的certbot版本或模式导致了live目录存放路径不一致。

解决方法是:

  1. 检查默认目录,删除或备份 existing 现有的证书文件。
  2. 使用 certbot delete 删除现有证书。
  3. 指定不同的 --cert-path 来改变新证书的存储位置。
  4. 加上 --force-renewal 参数来强制重载证书。

  在清理已存在的旧证书后,就可以重试命令获取新的证书了。也可以考虑切换到 certbot 的 certonly 模式避免冲突。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Clion 使用ffmpeg 学习1 开发环境配置

Clion 使用ffmpeg 学习1 开发环境配置 一、准备工作1. 准备环境2. 下载FFmpeg 二、操作步骤1. Clion 新建一个C项目2. 修改 CMakeLists.txt3. 修改配置4. 运行测试5. 打印rtsp 流信息的 demo 一、准备工作 在视频处理和多媒体应用程序开发中,FFmpeg 是一个强大的开…

MS1826A HDMI 多功能视频处理器 HDMI4进1出画面分割芯片

基本介绍 MS1826A 是一款多功能视频处理器,包含 4 路独立 HDMI 音视频输入通道、1 路 HDMI 音视 频输出通道以及 1 路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立的字库定 制型 OSD;可处理隔行和逐行视频或者图形输入信号&#xff1…

数学建模--逻辑回归算法的Python实现

首先感谢CSDN上发布吴恩达的机器学习逻辑回归算法任务的各位大佬. 通过大佬的讲解和代码才勉强学会. 这篇文章也就是简单记录一下过程和代码. CSDN上写有关这类文章的大佬有很多,大家都可以多看一看学习学习. 机器学习方面主要还是过程和方法. 这篇文章只完成了线性可分方面的任…

Promise常用方法笔记

mixin.methods.getList(xxx) 是axios的二次封装 是通过Promise进行基本封装 let a mixin.methods.getList(toosSet.gettype);let b mixin.methods.getList(toosSet.gettypes);let c mixin.methods.getList(toosSet.gettypess);Promise.all([a, b, c]).then((res) > {aler…

Python中的函数式编程是什么?

Python中的函数式编程是一种编程范式,它强调使用纯函数和避免可变状态来构建程序。函数式编程的核心思想是将计算视为函数的求值,而不是通过改变状态来实现。在函数式编程中,函数被视为一等公民,可以作为参数传递给其他函数&#…

音频应用编程

目录 ALSA 概述alsa-lib 简介sound 设备节点alsa-lib 移植编写一个简单地alsa-lib 应用程序一些基本概念打开PCM 设备设置硬件参数读/写数据示例代码之PCM 播放示例代码值PCM 录音 使用异步方式PCM 播放示例-异步方式PCM 录音示例-异步方式 使用poll()函数使用poll I/O 多路复用…

【Java-HDFS】使用Java操作HDFS获取HDFS指定目录下的数据量大小

Maven依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId>…

Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局

概要 现在,NFT与体育竞技正日益紧密地联系在一起。一些体育项目开始推出与赛事或球队相关的NFT,同时也有部分NFT游戏开始举办电子竞技赛事。这种共生发展正在改变体育竞技的生态。 笔者采访了桥牌冠军项目相关负责人,探讨NFT游戏与传统体育竞技的融合潜力。桥牌冠军近期成功举…

postman json复杂数据的模拟

先设置路径 然后可以定义下边数据&#xff08;Key value&#xff09; 也可以不定义 看你的情况 [{"mac": "4C-77-66-19-50-65","addressPattern": "98jd","platform": "ios","registrationId": "…

并查集快速查找

查询元素所在的集合编号&#xff0c;直接返回 id 数组值&#xff0c;O(1) 的时间复杂度。 ... private int find(int p) {assert p > 0 && p < count;return id[p]; } ... 合并元素 p 和元素 q 所属的集合&#xff0c; 合并过程需要遍历一遍所有元素, 再将两个…

风向变了!智能汽车何以「降本」

随着软件定义汽车的概念逐步落地&#xff0c;以及底盘、动力、座舱、智驾、车身等不同域&#xff08;分布式或者混合式&#xff09;的功能更新迭代和融合&#xff0c;汽车行业正在意识到&#xff1a;底层硬件架构重构的迫切性。 事实上&#xff0c;早在2016年&#xff0c;作为传…

UI自动化之关键字驱动

关键字驱动框架&#xff1a;将每一条测试用例分成四个不同的部分 测试步骤&#xff08;Test Step&#xff09;&#xff1a;一个测试步骤的描述或者是测试对象的一个操作说明测试步骤中的对象&#xff08;Test Object&#xff09;&#xff1a;指页面的对象或者元素对象执行的动…

mysql 查询优化 、索引失效

查询优化 物理查询优化 通过索引和表连接方式等技术来进行优化&#xff0c;这里重点需要掌握索引的使用 逻辑查询优化 通过SQL 等价变换 提升查询效率&#xff0c;直白一点就是说&#xff0c;换一种查询写法执行效率可能更高 索引失效 计算、函数、类型转换&#xff08;自动或…

Vue.js 报错:Cannot read property ‘validate‘ of undefined“

错误解决 起因&#xff0c;是我将elemnt-ui登录&#xff0c;默认放在mounted()函数里面&#xff0c;导致vue初始化就调用这个函数。 找了网上&#xff0c;有以下错误原因&#xff1a; 1.一个是你ref写错了&#xff0c;导致获取不了这个表单dom&#xff0c;我这显然不是。 2.…

解决微信小程序回调地狱问题

一、背景 小程序开发经常遇到根据网络请求结果&#xff0c;然后继续 处理下一步业务操作&#xff0c;代码如下&#xff1a; //1第一个请求 wx.request({url:"https://example.com/api/",data:data,success:function(res){//2第二个请求 wx.request({url:"http…

AIGC系列:1.chatgpt可以用来做哪些事情?

上图的意思&#xff1a;神器轩辕剑 那么&#xff0c;在现在AI盛行的信息时代&#xff0c; 你是否知道如何获得和利用ChatGPT这一把轩辕剑来提升你的攻击力和生存能力呢&#xff1f; 故事 程序员小张&#xff1a; 刚毕业&#xff0c;参加工作1年左右&#xff0c;日常工作是C…

TPTU: Task Planning and Tool Usage of Large Language Model-based AI Agents

本文是LLM系列文章&#xff0c;针对《TPTU: Task Planning and Tool Usage of Large Language Model-based AI Agents》的翻译。 TPTU:任务规划和工具使用的LLM Agents 摘要1 引言2 方法3 评估4 相关工作5 结论 摘要 随着自然语言处理的最新进展&#xff0c;大型语言模型&…

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 &#xff08;1&#xff09;在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办&#xff1f; &#xff08;2&#xff09;测试层 &#xff08;3&#xff09;开启mybatis日志 &#xff08;4&#xff09;预编译SQL 二、新增 &#xff08;1&#…

数据库-多表设计

概述&#xff1a; 项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系&#xff0c;基本分为三种&#xff1a; 一对…

2023_Spark_实验四:SCALA基础

一、在IDEA中执行以下语句 或者用windows徽标R 输入cmd 进入命令提示符 输入scala直接进入编写界面 1、Scala的常用数据类型 注意&#xff1a;在Scala中&#xff0c;任何数据都是对象。例如&#xff1a; scala> 1 res0: Int 1scala> 1.toString res1: String 1scala…