快速上手:采用Let‘sEncrypt免费SSL证书配置网站Https (示例环境:Centos7.9+Nginx+Let‘sEncrypt)

1 关于Let’s Encrypt与Cerbot DNS验证

Let’s Encrypt 是一个提供 免费证书认证机构

Cerbot 是 Let’s Encrypt 提供的一个工具,用于自动化生成、验证和续订证书。

DNS验证是 Cerbot 支持的验证方式之一。相比 HTTP 验证或 TLS-ALPN 验证,DNS 验证更灵活,可以用于获取任意域名(如子域名或裸域名)的证书,无需直接访问服务器。 DNS 验证通过在目标域名的 DNS 记录中添加特定的文本记录(TXT 记录)来证明 对该域名的控制权。认证机构会查询域名的 DNS TXT 记录以验证域名所有权。

以下是 DNS 验证的具体步骤和背后逻辑:

(1) 生成挑战内容

  • Cerbot 向 Let’s Encrypt 发送证书申请,提供需要认证的域名。
  • Let’s Encrypt 返回一个挑战(Challenge),内容包括一个随机字符串(Challenge Token)。

(2) 计算验证字符串

  • Cerbot 结合 Challenge Token 和账户密钥生成一个验证字符串。
    • 验证字符串 = SHA256(account_key + token) 或类似算法的结果。
  • 这个字符串需要通过 DNS TXT 记录发布。

(3) 添加 DNS TXT 记录

  • Cerbot 会提示用户手动或通过 API 在域名的 DNS 配置中添加一条 TXT 记录:
    • 记录名: _acme-challenge.<your-domain>
    • 记录值: 验证字符串

例如,对于域名 example.com

_acme-challenge.example.com. IN TXT "验证字符串"

(4) 验证记录

  • Let’s Encrypt 会查询域名的 DNS 服务器,寻找 _acme-challenge.<your-domain> 的 TXT 记录。
  • 如果记录值与预期验证字符串匹配,则证明申请者对该域名具有控制权。

(5) 签发证书

  • 验证成功后,Let’s Encrypt 会签发证书,Cerbot 会下载并保存证书。

Let’s Encrypt官网

参考教程

2 网站HTTPS配置最佳实践

  • 使用Cerbot生成Let’s Encrypt证书、DNS厂家添加TXT记录、继续完成Cerbot的控制权认证

  • Nginx对网站进行Https配置(HTTP的重定向到HTTPS)

  • 业务服务的HTTPS配置,这里有两种方式(按需):

    • 🤷‍♂️服务本身支持HTTPS(一般开发后业务服务为http协议接口),如SpringBoot Web项目,可使用java keytool生成密钥配置ssl。若业务服务本身不支持https,不建议调整业务模块,保证业务开发的纯净。
    • 👍通过Nginx对接口进行转发,http重定向为https,这种方式是推荐的。

3 具体操作

3.1 服务器安装cerbot工具

cerbot用来管理Let’s Encrypt的证书(申请、续约)。我的服务器操作系统为centos7.9,执行的有效操作如下:

# 安装cerbot工具,cerbot用来管理Let's Encrypt的证书(申请、续约)
sudo yum install certbot

查看certbot版本验证工具安装是否成功:

[root@vm ~]# certbot --version
# 正确输出cerbot工具版本
certbot 1.11.0

3.2 cerbot使用 DNS 验证获取单域名证书

3.2.1 cerbot验证与证书生成(交互式)

  1. 键入下列命令,为指定域名生成证书(交互式方式进行,用户多次键入信息来完成验证信息的采集与证书的颁发)
sudo certbot certonly --manual --preferred-challenges dns -d demo.cn -d www.demo.cn
  1. 用户填入信息(邮箱)等用来订阅域名信息服务(如Let’s Encrypt的证书升级、到期通知等)

  1. 验证服务器与域名归属相关操作
    (1)cerbot工具输出dns解析txt值
    (2)dns解析后台添加txt的解析记录(两条)

  1. cerbot工具进行验证,验证通过,输出证书到服务器

3.2.2 Nginx配置

  1. 修改nginx配置(主要是配置站点重定向、启用ssl、配置证书路径)

nginx配置非常灵活且具有扩展性,其配置目录大致如下:

- /etc/nginx/| - nginx.conf 主配置文件(定义了全局配置、事件模块、HTTP 模块等核心设置)| - ./conf.d/ 配置目录(此目录一般被主配置文件中被include)| - www.demo.cn.conf (自己的站点配置,针对www.demo.cn的https配置就在这里)  | - ...# 使用的Nginx版本
[root@vm ~]# nginx -v
nginx version: nginx/1.20.1

www.demo.cn.conf配置文件内容:

server {listen 80;server_name demo.cn www.demo.cn;# Redirect all HTTP requests to HTTPSreturn 301 https://$host$request_uri;
}server {listen 443 ssl http2;server_name demo.cn www.demo.cn;root /usr/share/nginx/html;index index.html index.htm;# SSL Configurationssl_certificate /etc/letsencrypt/live/demo.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/demo.cn/privkey.pem;ssl_session_cache shared:SSL:1m;ssl_session_timeout 10m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;# Additional security headers (optional)add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;# Error pageserror_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}# Default locationlocation / {try_files $uri $uri/ =404;}
}
  1. 重启nginx刷新配置
# 重启nginx
sudo systemctl restart nginx
# 查看nginx状态
sudo systemctl status nginx
  1. 清空缓存,查看网站

没错,到此为止网站已经完成了https的配置,有几点说明:

  • nginx.conf配置未作修改!但需要检查nginx.conf配置中是否include了conf.d配置目录。
  • 如果之前网站接入的服务为http,需要对服务进行调整使协议兼容,可以通过使用nginx反向代理服务为https(推荐),或者改造服务自身支持https。
  1. 通过nginx反向代理API服务为https的配置大致如下
server {listen 443 ssl http2;server_name demo.cn www.demo.cn;...location /your-api/module1 {allow 127.0.0.1;       # 本地回环地址allow otherip; # 允许指定的 IP 地址allow ::1;             # IPv6 本地地址deny all;              # 禁止其他所有来源proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /your-api/module2 {allow 127.0.0.1;       # 本地回环地址allow otherip; # 允许指定的 IP 地址allow ::1;             # IPv6 本地地址deny all;              # 禁止其他所有来源proxy_pass http://127.0.0.1:8081;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}...}

3.2.3 cerbot证书续费

certbot certonly --renew-by-default -d demo.cn -d www.demo.cn
# 会输出1、2两种验证方式,我采用的是模式2

续费命令说明:

  1. certbot
    • Certbot 是一个用于申请和管理 Let’s Encrypt SSL 证书的工具。
  2. certonly**
    • 表示只申请证书,不自动安装或配置 Web 服务器(如 Nginx 或 Apache)。
    • 适合手动配置证书的场景。
  3. --renew-by-default
    • 如果证书已经存在,Certbot 会尝试续费(renew)而不是重新申请。
    • 如果证书不存在,Certbot 会申请新证书。
  4. -d demo.cn -d www.demo.cn
    • -d 参数用于指定域名。
    • 这里申请的是 demo.cnwww.demo.cn 两个域名的证书。
    • 多个 -d 参数表示申请一个包含多个域名的证书(SAN 证书)。

两种验证域名所有权:

  1. Spin up a temporary webserver (standalone)
    • Certbot 会启动一个临时的 Web 服务器来完成 HTTP-01 验证。
    • 适用场景:如果你没有运行 Web 服务器(如 Nginx 或 Apache),或者可以暂时停止 Web 服务器。
    • 注意事项:需要确保 80 端口未被占用,或者暂时停止 Web 服务器。
  2. Place files in webroot directory (webroot)
    • Certbot 会将验证文件放置在你的 Web 服务器的根目录(如 /var/www/html),通过 HTTP 访问验证文件。
    • 适用场景:如果你正在运行 Web 服务器(如 Nginx 或 Apache),并且不想停止服务。
    • 注意事项:需要指定 Web 根目录路径。

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

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

相关文章

Solidity合约编写(五)

解决问题 编写 FundMe.sol 一个众筹合约&#xff0c;允许用户向合约转账 ETH&#xff0c;并记录每个地址的转账金额。同时&#xff0c;合约还要求每次转账至少为 1 ETH&#xff0c;否则交易失败。最后&#xff0c;合约管理员可以提取资金&#xff0c;并使用 call 函数发送 ETH…

UDP接收和断线重连代码注入案例

问题&#xff1a;下方函数启动了一个UDP监听&#xff0c;在接收到某udp信息时会发生报错 SocketException: Connection reset by peerat System.Net.Sockets.Socket.ReceiveFrom (System.Byte[] buffer, System.Int32 offset, System.Int32 size, System.Net.Sockets.SocketFl…

计算机网络之---物理层标准与协议

常见的物理层标准 1. IEEE 802 标准 IEEE 802 是一系列定义局域网和城域网通信协议的标准&#xff0c;其中许多标准涉及到物理层的技术细节&#xff1a; IEEE 802.3 (Ethernet)&#xff1a;定义了以太网的物理层规范&#xff0c;规定了如何通过电缆&#xff08;例如同轴电缆…

网络安全-XSS跨站脚本攻击(基础篇)

漏洞扫描的原理 1.跨站脚本攻击介绍 xss跨站脚本攻击&#xff1a; xSS 全称&#xff08;Cross site Scripting &#xff09;跨站脚本攻击&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年度分别为第三名和第七名&#xff0c;XSS是指攻…

毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

Kafka 快速实战及基本原理详解解析-01

一、Kafka 介绍 1. MQ 的作用 消息队列&#xff08;Message Queue&#xff0c;简称 MQ&#xff09;是一种用于跨进程通信的技术&#xff0c;核心功能是通过异步消息的方式实现系统之间的解耦。它在现代分布式系统中有着广泛的应用&#xff0c;主要作用体现在以下三个方面&…

xtu oj 1614 数字(加强版)

输出格式# 每行输出一个样例的结果&#xff0c;为一个整数。 样例输入# 3 1 10 101 样例输出# 1 2 3 解题思路&#xff1a;这个题不要想复杂了&#xff0c;很容易超时。 首先需要注意的点&#xff0c;n<10的10000次方&#xff0c;用int或者long long都会爆&#xff0c;所…

HTML 音频(Audio)

HTML 音频(Audio) HTML5 引入了新的音频标签 <audio>,使得在网页上嵌入音频文件变得更加简单。在此之前,播放音频通常需要依赖于第三方插件,如 Flash。但随着 HTML5 的普及,浏览器原生支持音频播放,极大地提升了用户体验和网页性能。 基本用法 要使用 HTML5 的音…

解读若依框架中的 @Xss 注解

文章目录 1. 背景与问题定义什么是 XSS 攻击&#xff1f;XSS 的常见类型传统解决方案的局限性 2. Xss 注解详解Xss 注解源码解析注解核心要素 XssValidator 实现解析核心逻辑 3. 应用场景场景一&#xff1a;表单输入校验示例代码 场景二&#xff1a;API 接口参数校验示例代码 4…

unity action委托举例

using System; using UnityEngine; public class DelegateExample : MonoBehaviour { void Start() { // 创建委托实例并添加方法 Action myAction Method1; myAction Method2; myAction Method3; // 调用委托&#xff0c;会依次执…

『SQLite』如何使用索引来查询数据?

前面已经讲过如何创建索引&#xff0c;这里进一步讲解如何通过索引来查询。 INDEXED BY 子句的语法&#xff0c;它可以与 DELETE、UPDATE 或 SELECT 语句一起使用&#xff1a; SELECT|DELETE|UPDATE column1, column2... INDEXED BY (index_name) table_name WHERE (CONDITION…

了解RabbitMQ:强大的开源消息队列中间件

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09;作为一种重要的组件&#xff0c;承担着上下游消息传递和通信的重任。其中&#xff0c;RabbitMQ作为一款流行的开源消息队列中间件&#xff0c;凭借其高可用性、可扩展性和易用性…

这是什么操作?强制迁移?GitLab 停止中国区用户访问

大家好&#xff0c;我是鸭鸭&#xff01; 全球知名代码托管平台 GitLab 发布通告&#xff0c;宣布不再为位于中国大陆、香港及澳门地区的用户提供访问服务&#xff0c;并且“贴心”建议&#xff0c;可以访问极狐 GitLab。 极狐 GitLab 是一家中外合资公司&#xff0c;宣称获得…

第二届 Sui 游戏峰会将于 3 月 18 日在旧金山举行

3 月中旬&#xff0c;Sui 基金会和 Mysten Labs 将共同举办第二届 Sui 游戏峰会&#xff08;Sui Gaming Summit&#xff09;&#xff0c;这是一个专注于 Sui 游戏平台的 GDC 周边活动。此次峰会将与旧金山的年度游戏开发者大会&#xff08;GDC&#xff0c;Game Developers Conf…

编排式 Saga 模式

编排式 Saga 模式&#xff08;Orchestrated Saga&#xff09;是指由一个中央协调者&#xff08;Orchestrator&#xff09;控制多个服务间的事务执行。与协作式 Saga 模式不同&#xff0c;编排式 Saga 模式不依赖于事件驱动&#xff0c;而是通过协调者来控制整个 Saga 流程的执行…

易支付二次元网站源码及部署教程

易支付二次元网站源码及部署教程 引言 在当今数字化时代&#xff0c;二次元文化逐渐成为年轻人生活中不可或缺的一部分。为了满足这一庞大用户群体的需求&#xff0c;搭建一个二次元主题网站显得尤为重要。本文将为您详细介绍易支付二次元网站源码的特点及其部署教程&#xf…

第四、五章凸轮和网络爬虫+网络搜索

第四章 图论和网络爬虫 4.1 构建网络爬虫工程重点 构建网络爬虫的重点 用BFS还是DFS 在不考虑时间的情况下&#xff0c;这两种不同的搜索方法都可以在相同的时间下爬下整个静态的互联网内容&#xff0c;但是在现实中肯定是需要考虑时间以及互联网动态变化的。所以重点应该是如…

数据库_解决SQL Server数据库log日志过大,清理日志文件方法

SQL Server数据库日志文件过大的原因主要有几个方面&#xff1a; 事务日志记录了所有对数据库进行修改的操作&#xff0c;如插入、更新和删除&#xff0c;这些操作会不断增加日志文件的大小。 长时间运行且未正确结束的事务会持续占用事务日志中的空间&#xff0c;导致日志文…

计算机毕业设计hadoop+spark知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

LabVIEW四旋翼飞行器姿态监测系统

四旋翼飞行器姿态监测系统是一个集成了高度、速度、俯仰角与滚转角数据采集与分析的系统&#xff0c;提高飞行器在复杂环境中的操作精确度与安全性。系统利用LabVIEW平台与硬件传感器相结合&#xff0c;实现实时数据处理与显示&#xff0c;有效地提升了四旋翼飞行器的监测与控制…