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

企业SSL 证书管理指南

文章从以下几个部分展开

  • SSL证书的用途和使用场景
  • SSL证书的申请类型和实现方式
  • SSL证书的管理
  • SSL证书的续签

一、SSL 证书的用途和使用场景

1.1 为什么要使用 SSL 证书?

1.	数据安全 🛡️- 在 HTTP 传输中,TCP 包可以被截获,攻击者可以直接获取数据内容(比如用户名、密码、API Key)。- HTTPS 通过 SSL/TLS 加密通信,即使数据被拦截也无法解密,有效防止中间人攻击(MITM)。2.	用户体验与信任 👀- 现代浏览器会对HTTP 站点标红,用户会看到“不安全”的提示,影响信任感。- HTTPS 站点 会在地址栏显示 小绿锁 🔒,提升安全感和专业度。3.	合规性与政策要求 📜- 某些服务强制要求 HTTPS(如:Google 强制要求 HTTPS,HTTP 网站会影响 SEO 排名)。- PCI DSS(支付卡行业数据安全标准)等要求敏感数据必须加密传输。

1.2 SSL 证书的主要使用场景

1.	对外提供 Web / WebSocket 服务 🌐常见场景:- Web 服务器(Nginx、Apache、Tomcat)- WebSocket 服务器(用于即时通讯、在线协作)2.	API 保护 & 认证 🔑- API Server(Restful API / GraphQL / gRPC)- 需要确保API Key、JWT Token 传输安全,防止泄露3.	企业内部服务 & 远程办公 🏢- 内部管理系统(如 Jenkins、GitLab、Kubernetes Dashboard)- VPN / 远程桌面 也需要证书加密,防止流量被窃取

1.3 证书申请方式及适用场景

方式适用场景优点缺点
AWS ACM 证书AWS 负载均衡、CloudFron自动续期、免费仅限 AWS 内部使用
Cloudflare SSL域名托管在 Cloudflare免费、隐藏源站不能直接访问源站
购买商业 SSL企业、银行、电商可信度高费用高,需要手动续期
自签名 SSL内部测试、私有 API免费、灵活浏览器不信任,不适合公网
Cloudflare Tunnel服务器无公网 IP免证书、隐藏源站依赖 Cloudflare,只适用于小型企业
公网免费证书公司内部访问、个人网站有自己的域名即可3个月到期需要考虑续期,可以通过api自动续期

二、证书的管理

上一篇的1.3中已经列出了证书的申请方式,我接下来演示公网免费证书的申请
切记每一种方式都有适用场景,用什么完全取决于业务需求
由于是在route53下创建需要用到aws凭据和IAM用户 key

2.1、IAM权限

{"Version": "2012-10-17","Statement": [{"Sid": "Route53DNSValidation","Effect": "Allow","Action": ["route53:GetChange","route53:ChangeResourceRecordSets","route53:ListResourceRecordSets"],"Resource": ["arn:aws:route53:::hostedzone/*","arn:aws:route53:::change/*"]},{"Sid": "Route53ListHostedZones","Effect": "Allow","Action": ["route53:ListHostedZones","route53:ListHostedZonesByName"],"Resource": "*"}]
}

2.2、配置aws凭据

创建用户后生成API Key

mkdir ~/.aws
echo "[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY" > ~/.aws/credentials
chmod 600 ~/.aws/credentials

2.3、安装certbot

这里安装的route53插件,通过我们上面的凭据去调用route53 API

apt update
apt install certbot python3-certbot-dns-route53

2.4、执行证书申请操作

通过route53 API完成DNS验证

DOMAIN="domain.com"
EMAIL="jarvan@domain.com"certbot certonly \--dns-route53 \--dns-route53-propagation-seconds 30 \-d "$DOMAIN" \-d "*.$DOMAIN" \--email "$EMAIL" \--agree-tos \--non-interactive \--server https://acme-v02.api.letsencrypt.org/directory

创建后我我并未发现有验证的那条dns记录,最终总结出了Let’s Encrypt 验证dns的流程

  • Certbot 创建一个 _acme-challenge.csconsulting.live 的 TXT 记录
  • Let’s Encrypt 服务器验证这个记录
  • 验证成功后,Certbot 自动删除这个 TXT 记录
  • 最后颁发证书

创建完成后会提示证书的路径和证书到期时间,并且还会说明证书会自动续期,因为我们是通过api方式请求的
提示信息如下

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for csconsulting.live and *.csconsulting.live
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/csconsulting.live/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/csconsulting.live/privkey.pem
This certificate expires on 2025-05-13.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:* Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate* Donating to EFF:                    https://eff.org/donate-le

2.5、证书的续订

证书在到期一个月时可以进行续订
续订后需要重nginx,因为

  • 证书更新后,Certbot 会在 /etc/letsencrypt/live/你的域名/ 下生成新的证书文件
  • Nginx 不会自动检测到证书文件的更新
  • Nginx 在启动时会将证书加载到内存中,如果不重启/重载,它会继续使用旧的证书

即使是购买的公网证书也需要重新上传证书后重启服务

查看证书状态

$ certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:Certificate Name: csconsulting.liveSerial Number: 3244e0c60c7f5cb1507b417a7d18c281e29Key Type: RSADomains: csconsulting.live *.csconsulting.liveExpiry Date: 2025-05-15 02:11:36+00:00 (VALID: 89 days)Certificate Path: /etc/letsencrypt/live/csconsulting.live/fullchain.pemPrivate Key Path: /etc/letsencrypt/live/csconsulting.live/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

测试续期

$ certbot renew --dry-run 
Saving debug log to /var/log/letsencrypt/letsencrypt.log- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/csconsulting.live.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for csconsulting.live and *.csconsulting.live- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/csconsulting.live/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

cerbot.timer是定时器单元,下面还有定时器服务

$ systemctl status certbot.timer
● certbot.timer - Run certbot twice dailyLoaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)Active: active (waiting) since Wed 2025-02-12 10:32:06 CST; 2 days agoTrigger: Fri 2025-02-14 16:33:53 CST; 5h 3min leftTriggers: ● certbot.serviceFeb 12 10:32:06 ip-10-240-20-253 systemd[1]: Started Run certbot twice daily.

查看定时器状

$ systemctl cat certbot.timer
# /lib/systemd/system/certbot.timer
[Unit]
Description=Run certbot twice daily[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true[Install]
WantedBy=timers.target$ systemctl cat certbot.service
# /lib/systemd/system/certbot.service
[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://certbot.eff.org/docs
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

解释配置

[Timer]
OnCalendar=*-*-* 00,12:00:00     # 每天在 00:00 和 12:00 运行
RandomizedDelaySec=43200         # 随机延迟最多12小时(43200秒)
Persistent=true                  # 如果错过运行时间(比如系统关机),下次启动会补充运行
[Service]
Type=oneshot                     # 运行一次就结束的服务
ExecStart=/usr/bin/certbot -q renew  # 实际执行的命令,-q表示安静模式
PrivateTmp=true                 # 使用私有临时目录,增加安全性

相关文章:

企业SSL 证书管理指南

文章从以下几个部分展开 SSL证书的用途和使用场景SSL证书的申请类型和实现方式SSL证书的管理SSL证书的续签 一、SSL 证书的用途和使用场景 1.1 为什么要使用 SSL 证书? 1. 数据安全 🛡️- 在 HTTP 传输中,TCP 包可以被截获,攻…...

Python Pandas(7):Pandas 数据清洗

数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。数据清洗与预处理的常见步骤: 缺失值处理:识别并…...

南京观海微电子----整流滤波电路实用

01 变压电路 通常直流稳压电源使用电源变压器来改变输入到后级电路的电压。电源变压器由初级绕组、次级绕组和铁芯组成。初级绕组用来输入电源交流电压,次级绕组输出所需要的交流电压。通俗的说,电源变压器是一种电→磁→电转换器件。即初级的交流电转化…...

【python】向Jira测试计划下,附件中增加html测试报告

【python】连接Jira获取token以及jira对象 # 往 jira 测试计划下面,上传测试结果html def put_jira_file(plain_id):# 配置连接jiraconn ConnJira()jira conn.jira_login()[2]path jira.issue(O45- plain_id)attachments_dir os.path.abspath(..) \\test_API…...

探索ChatGPT背后的前端黑科技

由于图片和格式解析问题,可前往 阅读原文 在人工智能与互联网技术飞速发展的今天,像ChatGPT这样的智能对话系统已经成为科技领域的焦点。它不仅能够进行自然流畅的对话,还能以多种格式展示内容,为用户带来高效且丰富的交互体验。然…...

Agents Go Deep 智能体深入探索

Agents Go Deep 智能体深入探索 核心事件 OpenAI发布了一款先进的智能体“深度研究”,它能借助网络搜索和推理生成研究报告。 最新进展 功能特性:该智能体依据数百个在线资源生成详细报告,目前仅支持文本输出,不过很快会增加对图…...

DeepSeek全生态接入指南:官方通道+三大云平台

DeepSeek全生态接入指南:官方通道三大云平台 一、官方资源入口 1.1 核心交互平台 🖥️ DeepSeek官网: https://chat.deepseek.com/ (体验最新对话模型能力) 二、客户端工具 OllamaChatboxCherry StudioAnythingLLM …...

c++TinML转html

cTinML转html 前言解析解释转译html类定义开头html 结果这是最终效果(部分): ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6cf6c3e3c821446a84ae542bcc2652d4.png) 前言 在python.tkinter设计标记语言(转译2-html)中提到了将Ti…...

STM32硬件SPI函数解析与示例

1. SPI 简介 SPI(Serial Peripheral Interface)即串行外设接口,是一种高速、全双工、同步的通信总线,常用于微控制器与各种外设(如传感器、存储器等)之间的通信。STM32 系列微控制器提供了多个 SPI 接口&a…...

滤波器:卡尔曼滤波

卡尔曼滤波(Kalman Filter)是一种高效的递归算法,主要用于动态系统的状态估计。它通过结合系统模型和噪声干扰的观测数据,实现对系统状态的最优估计(在最小均方误差意义下)。以下从原理、使用场景和特点三个…...

深度学习框架探秘|TensorFlow vs PyTorch:AI 框架的巅峰对决

在深度学习框架中,TensorFlow 和 PyTorch 无疑是两大明星框架。前面两篇文章我们分别介绍了 TensorFlow(点击查看) 和 PyTorch(点击查看)。它们引领着 AI 开发的潮流,吸引着无数开发者投身其中。但这两大框…...

Windows环境管理多个node版本

前言 在实际工作中,如果我们基于Windows系统开发,同时需要维护老项目,又要开发新项目,且不同项目依赖的node版本又不同时,那么就需要根据项目切换不同的版本。本文使用Node Version Manager(nvm&#xff0…...

opencascade 源码学习BRepBuilderAPI-BRepBuilderAPI

BRepBuilderAPI BRepBuilderAPI 是一个用于构建和操作 BRep(边界表示法,Boundary Representation)拓扑数据结构的工具类。它提供了高级接口,用于创建几何形状(如顶点、边、面、实体等)以及进行扫掠&#x…...

Vue 2 + Webpack 项目中集成 ESLint 和 Prettier

在 Vue 2 Webpack 项目中集成 ESLint 和 Prettier 可以帮助你规范代码风格并自动格式化代码。以下是详细的步骤: 1. 安装 ESLint 和 Prettier 相关依赖 在项目根目录下运行以下命令,安装 ESLint、Prettier 和相关插件: npm install --save…...

Renesas RH850 EEL库的优点

文章目录 1. 磨损均衡(Wear Leveling)2. 数据抽象与易用性3. 后台维护与自动刷新4. 多优先级操作5. ECC 错误处理与数据完整性EEL 与 FDL 的协作机制1. 分层架构2. 存储池划分3. 协作流程4. 同步与互斥5. 性能优化实际应用场景示例场景:车辆里程存储总结1. 磨损均衡(Wear L…...

torch导出ONNX模型报错:OnnxExporterError: Module onnx is not installed

问题: 使用torch 导出模型为onnx文件时报错:torch.onnx.OnnxExporterError: Module onnx is not installed! 环境: 操作系统 Win10 python运行环境 Anacoda3 torch 2.6.0 torchvision …...

LabVIEW 用户界面设计基础原则

在设计LabVIEW VI的用户界面时,前面板的外观和布局至关重要。良好的设计不仅提升用户体验,还能提升界面的易用性和可操作性。以下是设计用户界面时的一些关键要点: 1. 前面板设计原则 交互性:组合相关的输入控件和显示控件&#x…...

使用Python爬虫实时监控行业新闻案例

目录 背景环境准备请求网页数据解析网页数据定时任务综合代码使用代理IP提升稳定性运行截图与完整代码总结 在互联网时代,新闻的实时性和时效性变得尤为重要。很多行业、技术、商业等领域的新闻都可以为公司或者个人发展提供有价值的信息。如果你有一项需求是要实时…...

qt QTextEdit用法总结

1. 基本介绍 QTextEdit 是 Qt 中用于显示和编辑富文本(支持 HTML 子集)和纯文本的控件。 支持文本格式(字体、颜色、对齐)、列表、表格、图片插入等富文本功能。 底层通过 QTextDocument 管理内容,提供强大的文本处理…...

《open3d qt 网格采样成点云》

open3d qt 网格采样成点云 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionMeshUniformSample_triggered();//均匀采样 void MainWindow::...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...