[SSL/TLS/PKI] 基于`Let’s Encrypt`,获取免费SSL证书

news/2025/1/8 0:58:13/文章来源:https://www.cnblogs.com/johnnyzen/p/18658762

缘起:云厂商卖的SSL证书太贵

概述:Let’s Encrypt

支持申请免费SSL证书的CA机构

  • 支持提供免费SSL证书的CA机构有:

Let’s Encrypt
ZeroSSL
SSL For Free
Cloudflare
BuyPass
AWS

  • 本文我们来试试 Let’s Encrypt 怎么用。

https://letsencrypt.org/zh-cn/getting-started/

  • Let’s Encrypt 是一个提供 免费 SSL/TLS 证书认证机构(CA),旨在通过简化证书申请安装过程来普及 HTTPS 加密,提升互联网安全性。

它由 Internet Security Research Group (ISRG) 运营,并在全球范围内免费提供数字证书,用于加密网站流量,防止数据在传输过程中被窃取或篡改。

  • Let’s Encrypt 是一个非常受欢迎且实用的工具,能够帮助网站管理员免费获得 SSL/TLS 证书并轻松安装,尤其适用于那些希望以低成本保障网站安全的小型网站个人项目

然而,对于需要更高级别验证(如 EV 证书)的大型网站企业来说,Let’s Encrypt 可能不完全符合需求。

申请需求

  • 要在 CentOS 7 上使用 Let’s Encrypt 并通过 DNS 验证申请 SSL 证书,而不依赖 80 端口,可以选择 CertbotDNS 验证模式

这种方法适用于可以访问域名的 DNS 管理,并手动添加验证记录。
完成验证后,您可以手动将生成的证书文件复制到目标机器上进行安装。

  • 假定域名为: xxx.yyy.com

安装步骤

Step1 安装 Certbot

  • 在 CentOS 7 上安装 Certbot:
sudo yum install epel-release -y
sudo yum install certbot -y

Step2 使用 DNS 验证生成证书

  • 启动 DNS 验证模式
sudo certbot certonly --manual --preferred-challenges dns -d xxx.yyy.com
  • --manual:表示手动输入 DNS 记录
  • --preferred-challenges dns:指定使用 DNS 验证方式
  • -d xxx.yyy.com:需要申请证书的域名
运行日志
[root@iZ2vch0mnibcoiyvvwc5yjZ ~]# sudo certbot certonly --manual --preferred-challenges dns -d xxx.yyy.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Enter email address (used for urgent renewal and security notices)(Enter 'c' to cancel): data-roads@foxmail.com
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Account registered.
Requesting a certificate for xxx.yyy.com
Performing the following challenges:
dns-01 challenge for xxx.yyy.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.xxx.yyy.com with the following value:hX5FAFXXInMBXXOCsgXXHNTNyJNdZ4xWI1CAxxQLynABefore continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to ContinueWaiting for verification...
Challenge failed for domain xxx.yyy.com
dns-01 challenge for xxx.yyy.com
Cleaning up challenges
Some challenges have failed.IMPORTANT NOTES:- The following errors were reported by the server:Domain: xxx.yyy.comType:   dnsDetail: DNS problem: NXDOMAIN looking up TXT for_acme-challenge.xxx.yyy.com - check that a DNS record exists forthis domain//因没有配置 _acme-challenge.xxx.yyy.com 域名的 DNS 解析记录, 失败后重试:[root@xxxxxx ~]# sudo certbot certonly --manual --preferred-challenges dns -d xxx.yyy.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Requesting a certificate for xxx.yyy.com
Performing the following challenges:
dns-01 challenge for xxx.yyy.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.xxx.yyy.com with the following value:-nS5KXpkxersdfewwefewfewfewfeFMJ7QAN4kBefore continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challengesIMPORTANT NOTES:- Congratulations! Your certificate and chain have been saved at:/etc/letsencrypt/live/xxx.yyy.com/fullchain.pemYour key file has been saved at:/etc/letsencrypt/live/xxx.yyy.com/privkey.pemYour certificate will expire on 2025-04-07. To obtain a new ortweaked version of this certificate in the future, simply runcertbot again. To non-interactively renew *all* of yourcertificates, run "certbot renew"- If you like Certbot, please consider supporting our work by:Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donateDonating to EFF:                    https://eff.org/donate-le
  • Q1: Certbot 会提示创建一个特定的 DNS TXT 记录来验证域名。您会看到类似以下的提示信息:
Please deploy a DNS TXT record under the name
_acme-challenge.api.moon.com with the following value:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBefore continuing, verify the record is deployed.
  • 登录自己的 DNS 提供商控制台,在 xxx.yyy.comDNS 配置中添加一个 TXT 记录:
名称:acme-challenge.xxx.yyy.com
类型:TXT
值:Certbot 提供的值(如上所示的随机字符串)

等待几分钟,确保新添加的 DNS 记录已经传播。您可以使用以下命令确认 DNS 记录是否生效:

# 安装 nslookup
sudo yum install bind-utils# dns 验证
nslookup -type=TXT _acme-challenge.xxx.yyy.com
运行日志
[root@iZ2vch0mnibcoiyvvwc5yjZ ~]# nslookup -type=TXT _acme-challenge.xxx.yyy.com
Server:         10.10.132.101
Address:        10.10.132.101#53Non-authoritative answer:
_acme-challenge.xxx.yyy.com    text = "-nS5KXpkxersdfewwefewfewfewfeFMJ7QAN4k"Authoritative answers can be found from:
  • 一旦 DNS 记录生效并验证成功,返回到 Certbot 命令窗口,并按下回车键继续。Certbot 会自动完成验证,并生成 SSL 证书文件

Step3 找到生成的证书文件

  • 验证成功后,Certbot 会将证书文件存放在 /etc/letsencrypt/live/xxx.yyy.com/ 目录下,包括以下文件:
  • fullchain.pem:完整的证书链
  • privkey.pem:私钥文件
[root@xxx ~]# ll /etc/letsencrypt/live/xxx.yyy.com/
总用量 4
lrwxrwxrwx 1 root root  36 1月   8 00:41 cert.pem -> ../../archive/xxx.yyy.comn/cert1.pem
lrwxrwxrwx 1 root root  37 1月   8 00:41 chain.pem -> ../../archive/xxx.yyy.com/chain1.pem
lrwxrwxrwx 1 root root  41 1月   8 00:41 fullchain.pem -> ../../archive/xxx.yyy.com/fullchain1.pem
lrwxrwxrwx 1 root root  39 1月   8 00:41 privkey.pem -> ../../archive/xxx.yyy.com/privkey1.pem
-rw-r--r-- 1 root root 692 1月   8 00:41 README

Step4 将SSL证书文件复制到目标服务器

  • 使用 scp 或其他工具将生成的证书文件复制到目标服务器,比如:
scp /etc/letsencrypt/live/xxx.yyy.com/fullchain.pem user@target_server:/path/to/nginx/ssl/
scp /etc/letsencrypt/live/xxx.yyy.com/privkey.pem user@target_server:/path/to/nginx/ssl/

Step5 在目标服务器上配置 Nginx 使用证书

  • 在目标服务器上,编辑 Nginx 配置文件以使用新的证书:
server {listen 443 ssl;server_name api.moon.com;ssl_certificate /path/to/nginx/ssl/fullchain.pem;ssl_certificate_key /path/to/nginx/ssl/privkey.pem;# 其他 Nginx 配置
}

保存文件并重新加载 Nginx 配置:

sudo nginx -s reload

Y 注意事项

注意更新证书(间隔90天)

  • Let’s Encrypt 证书的有效期为 90 天。

之后,可以在原服务器上再次申请新的证书,然后将新的证书文件传输到目标服务器进行更新。

K 总结

  • Let’s Encrypt 是一个提供免费 SSL/TLS 证书的认证机构(CA),旨在通过简化证书申请和安装过程来普及 HTTPS 加密,提升互联网安全性
  • 同类型的机构还有 ZeroSSLSSL For FreeCloudflareBuyPass 等等,腾讯云和AWS也有针对自己产品的SSL免费证书
  • 使用Let’s Encrypt申请SSL证书非常简单,可以选择 DNS-01 验证或者 HTTP-01 验证
  • 如果证书用于本机的 Nginx 或者 Apache,还可以设置自动更新,这样就免除了服务有可能中断的麻烦
  • 生成证书的命令 : sudo certbot certonly --manual --preferred-challenges dns -d xxx.yyy.com

X 参考文献

  • 使用 Let’s Encrypt 获取免费SSL证书 - CSDN 【推荐】
  • Let’s Encrypt

https://letsencrypt.org/zh-cn/getting-started/

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

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

相关文章

.NET 响应式编程 System.Reactive 系列文章(二):深入理解 IObservableT 和 IObserverT

在 Rx 中,数据流的生产和消费是通过 观察者模式(Observer Pattern) 实现的。这种模式定义了两种角色: - IObservable.NET 响应式编程 System.Reactive 系列文章(二):深入理解 IObservable<T> 和 IObserver<T>引言:为什么我们调整了学习顺序? 在上一篇文章…

WebPack站点实战(一)

以下文章来源于一位不愿透露姓名的热心网友 ,作者不愿透露姓名的热心网友 文章配套B站视频,很多话语简略了,建议配着视频看。 地址:https://www.bilibili.com/video/BV13F411P7XB/ 开始之前了,简单过一下下面几个方法加深印象,便于更好理解加载器。也可以直接从webpack标…

CUDA概念

1.1.0f加个f,成单精度计算,不加会默认成double 2.快速指令:__add()加两个下划线 3.CUDA计算能力1.3以上才支持双精度,4.0往后支持双精度浮点计算 单精度浮点型(float )专指占用32位存储空间的单精度(single-precision )值。单精度在一些处理器上比双精度更快而且只占用…

12.09百度机器翻译SDK实验

一、实验要求百度机器翻译SDK实验(2024.11.15日完成) 任务一:下载配置百度翻译Java相关库及环境(占10%)。 任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。 任务三:完成百度翻译相关功能代码并测试调用,要求可以实现…

弹性波动力学笔记(十)罗格里德斯公式推导

在应力计算中大量需要轴旋转公式计算,因此本笔记给出了罗格里德斯轴旋转公式Note: Derivation of the Rodriguez Formula In this Note, we will derive a formula for \(\mathbf{R}(\widehat{\mathbf{n}},\theta)\) . Consider the three dimensional rotation of a vecto…

【Java编程】JDK 源码好用的类方法

Java JDK 提供了丰富的工具类和方法,涵盖了字符串处理、集合操作、日期时间处理、文件操作等多个方面。熟练掌握这些工具类和方法,可以显著提高开发效率和代码质量。如果你有特定的需求或问题,欢迎随时提问

C++中调用C语言代码(extern “C”)

extern "C" 可以使我们在C++程序中调用C语言代码.extern "C"向程序编译器表明这段代码需要用C语言的方式编译。extern "C" { #include <stdio.h> void sayHello() { printf("Hello C\n"); }}int main() { sa…

Tita项目管理软件:管过程,管合同,两手抓

在这个日新月异的商业世界里,项目经理们时常面临重重挑战,而高效的协同作业、严谨的项目合同管理以及精准的回款把控,无疑是决定项目成败的关键要素。正是洞察到了这些需求,Tita项目管理软件应运而生,它以一站式的解决方案,助力项目经理们轻松驾驭项目的每一个环节。 一、…

快消零售的智胜之道:智能AI加速构建员工培训SOP策略

引言 在快节奏的快消零售行业中,员工的高效培训与标准化操作是提升服务质量、增强顾客满意度的关键。然而,传统培训方式往往耗时费力,效果难以保证。随着人工智能技术的不断发展,利用智能AI快速建立员工培训SOP(标准操作程序)已成为众多零售企业的新选择。本文将分享如何…

教育机构的智能跃迁:知识中台如何驱动转型与升级

引言 在数字化转型的浪潮中,教育机构正面临着前所未有的挑战与机遇。传统的教育模式已难以满足当前多元化、个性化的学习需求,而知识中台作为连接数据与业务的关键桥梁,正逐步成为教育机构实现智能转型的重要抓手。本文将探讨教育机构如何借助知识中台,通过智能化手段优化教…

关于RAG你不得不了解的17个技巧

最近在写文章,想补上去年RAG(Retrieval-Augmented Generation)遗留的一些坑,希望能分享一些RAG的技巧帮到大家。还是那句老话:构建一个大模型的原型很容易,但把它变成一个能真正投入生产的产品却很难。这篇文章适合那些在过去一个月里刚刚构建了第一个LLM(大语言模型)应…

10.28软件设计——抽象工厂模式之人与肤色 c++

1、类图 2、源代码test4.cpp#include<iostream> #include<string> using namespace std;//抽象产品类 男人 class Man { public:virtual void makeM() = 0; }; //具体产品类 白色男人 class WhiteMan : public Man { public:void makeM(){cout << "我是…