快速上手:采用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,一经查实,立即删除!

相关文章

网络安全-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…

xtu oj 1614 数字(加强版)

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

了解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…

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

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

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

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

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

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

3D机器视觉的类型、应用和未来趋势

3D相机正在推动机器视觉市场的增长。很多制造企业开始转向自动化3D料箱拣选&#xff0c;专注于使用3D视觉和人工智能等先进技术来简化操作并减少开支。 预计3D相机将在未来五年内推动全球机器视觉市场&#xff0c;这得益于移动机器人和机器人拣选的强劲增长。到 2028 年&#…

JavaFX基础之环境配置,架构,FXML

文章目录 1 JavaFX1.1 简介1.2 环境准备1.2.1 手动管理依赖1.2.2 maven或Gradle管理 1.3 JavaFX 架构1.3.1 JavaFX 架构图1.3.2 JavaFX组件1.3.2.1 舞台1.3.2.2 场景1.3.2.3 控件1.3.2.4 布局1.3.2.5 图表1.3.2.6 2D图形1.3.2.7 3D图形1.3.2.8 声音1.3.2.9 视频 1.4 简单使用1.…

php命名空间

什么是命名空间 从广义上来说&#xff0c;命名空间是一种封装事物的方法&#xff0c;在很多地方都可以见到这种抽象概念。 例如&#xff0c;在操作系统中目录用来将相关文件分组&#xff0c;对于目录中的文件来说&#xff0c;它就扮演了命名空间的角色。 具体举个例子&#xf…

【Unity3D】导出Android项目以及Java混淆

Android Studio 下载文件归档 | Android Developers Android--混淆配置&#xff08;比较详细的混淆规则&#xff09;_android 混淆规则-CSDN博客 Unity版本&#xff1a;2019.4.0f1 Gradle版本&#xff1a;5.6.4&#xff08;或5.1.1&#xff09; Gradle Plugin版本&#xff…

腾讯云AI代码助手编程挑战赛-每日一句

一、作品简介 “每日一句”是一个基于Python的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;旨在为用户提供随机的中英文名言警句。它利用腾讯云AI代码助手辅助开发&#xff0c;为用户带来便捷、高效的阅读体验。 二、技术架构 1. 编程语言&#xff1a;使用P…

【AI工具】PDFMathTranslate安装使用

用了一天时间&#xff0c;安装并使用了PDFMathTranslate这款PDF文档翻译工具。 PDFMathTranslate是能够完整保留排版的 PDF 文档全文双语翻译项目&#xff0c;之前使用文档翻译的时候&#xff0c;对于论文这种类型的文章&#xff0c;由于图表和公式太多&#xff0c;文档翻译经常…

conda 批量安装requirements.txt文件

conda 批量安装requirements.txt文件中包含的组件依赖 conda install --yes --file requirements.txt #这种执行方式&#xff0c;一遇到安装不上就整体停止不会继续下面的包安装。 下面这条命令能解决上面出现的不执行后续包的问题&#xff0c;需要在CMD窗口执行&#xff1a; 点…

网络安全图谱以及溯源算法

​ 本文提出了一种网络攻击溯源框架&#xff0c;以及一种网络安全知识图谱&#xff0c;该图由六个部分组成&#xff0c;G <H&#xff0c;V&#xff0c;A&#xff0c;E&#xff0c;L&#xff0c;S&#xff0c;R>。 1|11.知识图 ​ 网络知识图由六个部分组成&#xff0c…

上汽乘用车研发流程

目的 最近刚入职主机厂&#xff0c;工作中所提到各个阶段名称与之前在供应商那边不一致&#xff0c;概念有点模糊&#xff0c;所以打算学习了解一番 概念 术语 EP: enginerring prototype car 工程样车 Mule Car: 骡子车 Simulator Car&#xff1a;模拟样车 PPV&#xff1a;…

封装/前线修饰符/Idea项目结构/package/impore

目录 1. 封装的情景引入 2. 封装的体现 3. 权限修饰符 4. Idea 项目结构 5. package 关键字 6. import 关键字 7. 练习 程序设计&#xff1a;高内聚&#xff0c;低耦合&#xff1b; 高内聚&#xff1a;将类的内部操作“隐藏”起来&#xff0c;不需要外界干涉&#xff1b…

计算机网络 (23)IP层转发分组的过程

一、IP层的基本功能 IP层&#xff08;Internet Protocol Layer&#xff09;是网络通信模型中的关键层&#xff0c;属于OSI模型的第三层&#xff0c;即网络层。它负责在不同网络之间传输数据包&#xff0c;实现网络间的互联。IP层的主要功能包括寻址、路由、分段和重组、错误检测…