企业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                 # 使用私有临时目录,增加安全性

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

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

相关文章

网络安全-攻击流程-传输层

传输层攻击主要针对OSI模型的第四层,涉及TCP和UDP协议的安全漏洞。以下是常见攻击类型及其流程,以及防御措施: 1. SYN洪水攻击(TCP半连接攻击) 攻击流程: 目标选择:确定目标服务器的IP地址和开…

朝天椒USB服务器解决前置机U盾虚拟机远程连接

本文探讨朝天椒USB服务器用Usb Over Network技术,解决前置机虚拟化部署后U盾的远程连接问题。 在金融、电信等关键行业,后台核心处理系统承担着至关重要的业务数据交互职责。为保障系统安全,这些单位要求企业通过前置机与他们的内网进行数据…

探索Java中的集合类_特性与使用场景

1. 引言 1.1 Java集合框架概述 Java集合框架(Java Collections Framework, JCF)是Java中用于存储和操作一组对象的类和接口的统称。它提供了多种数据结构来满足不同的需求,如列表、集合、映射等。JCF的核心接口包括Collection、List、Set、Queue和Map,以及它们的各种实现…

MySQL数据库误删恢复_mysql 数据 误删

2、BigLog日志相关 2.1、检查biglog状态是否开启 声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7 2.1.1、Navicat工具执行 SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态,如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.…

读 DeepSeek-R1 论文笔记

DeepSeek-R1:通过强化学习激发大语言模型的推理能力 DeepSeek-AI 摘要 我们推出第一代推理模型DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero作为无需监督微调(SFT)预训练阶段、直接通过大规模强化学习(RL)训练的基础模型,展现出卓越的推理能力。…

Vue2/Vue3分别如何使用Watch

在 Vue 2 和 Vue 3 中,watch 用于监听数据的变化并执行相应的逻辑。虽然两者的核心功能相同,但在语法和使用方式上有一些区别。以下是 Vue 2 和 Vue 3 中使用 watch 的详细说明: Vue 2 中的 watch 在 Vue 2 中,watch 是通过选项式…

分享一些处理复杂HTML结构的经验

在处理复杂HTML结构时,尤其是使用Java爬虫和Jsoup进行数据抓取时,以下是一些实用的经验和技巧,可以帮助你更高效地解析和提取数据: 1. 缩小解析范围 对于复杂的HTML结构,尽量缩小解析范围,只解析所需的元…

20250211解决荣品的RK3566核心板在Android13下出现charge_extrem_low_power的问题

20250211解决荣品的RK3566核心板在Android13下出现charge_extrem_low_power的问题 2025/2/11 17:45 缘起:荣品的RK3566核心板在Android13下,出现charge_extrem_low_power之后就直接挂住了。 由于我司使用了CW2217这个电量计,没有使用核心板自…

掌控系统性能的利器:自动化系统性能监控工具

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…

MATLAB图像处理:Sobel、Roberts、Canny等边缘检测算子

边缘是图像中像素值剧烈变化的区域,反映了目标的轮廓、纹理等关键信息。边缘检测是图像分割、目标识别等任务的基础。本文将系统解析 六种经典边缘检测算子 的数学原理、实现方法及适用场景,并给出完整的MATLAB代码示例和对比分析。 1. 边缘检测基础 1…

Windows软件自动化利器:pywinauto python

Pywinauto WindowsAPP UI自动化 Windows软件自动化利器:pywinauto python

『大模型笔记』Ollama环境变量大全!

『大模型笔记』Ollama环境变量大全! 文章目录 一. Ollama环境变量大全!1. 命令方式查看2. 源码整理二. 参考文献一. Ollama环境变量大全! 1. 命令方式查看 Ollama常用的环境变量ollama help serve2. 源码整理 从源代码中整理了这份文档,希望有缘人能发现它。变量默认值说明…

ThreadLocal为什么会内存溢出

每个线程(Thread 对象)内部维护一个 ThreadLocalMap,用于存储该线程的所有 ThreadLocal 变量的键值对: ThreadLocalMap虽然是ThreadLocal的静态内部类,但是Thread 对象的属性,当线程存活时ThreadLocalMap不会被回收。 Key:ThreadLocal 实例的 弱引用(WeakReference)。…

C++之线程池(Thread Pool)

1.介绍 线程池是一种并发编程的设计模式,用于管理和复用多个线程。以避免频繁创建和销毁线程的开销。线程池的核心思想是预先创建一组线程,并将任务分配给这些线程执行,从而提高程序的性能和资源利用率。 2.线程池的核心组件 一个经典的线程…

2025智能硬件售后服务管理系统选择的六大标准

2025智能硬件售后服务管理系统选择的六大标准 随着2025年的到来,智能硬件行业正以前所未有的速度发展,产品迭代加速,用户需求日益多样化。在这一背景下,售后服务管理系统的选择成为了智能硬件厂商能否在激烈的市场竞争中脱颖而出…

深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch

引言 上一篇文章《深度学习框架探秘|Keras:深度学习的魔法钥匙》 我们初步学习了 Keras,包括它是什么、具备哪些优势(简洁易用的 API、强大的兼容性、广泛的应用领域),以及基本使用方法。本文,…

【算法】动态规划专题⑦ —— 多重背包问题 + 二进制分解优化 python

目录 前置知识进入正题优化方法:二进制分解实战演练 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 python 【算法】动态规划专题⑥ —— 完全背包问题 python 进入正题 多重背包问题I https://www.acwing.com/problem/content/4/ 题目描述 有…

实战指南-Web渗透测试自学习资料超级大全 流程资料文档 涵盖OWASP Top Ten 漏洞 持续更...

目录 Owasp top ten SQL注入漏洞 XSS跨站脚本攻击 CSRF 跨站脚本伪造 SSRF 服务器请求伪造 XEE 实体注入 文件上传下载漏洞 越权漏洞 逻辑漏洞 反序列化漏洞 文件包含漏洞 常见的中间件(解析)漏洞 目录文件穿越漏洞 旁站注入漏洞 命令注入漏洞RCE 挂马 shell…

企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略

一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…

leetcode 297. 二叉树的序列化与反序列化

题目如下 我们常常说单独先序遍历不能完整的表示一棵树是有前提条件的。 为什么?先序遍历是按 根节点 左子树 右子树的方向遍历树且遇到空子树直接返回,这样会造成我们并不知道某个节点的左右子树存在与否,故我们无法确定树的形状。但是如果…