首页 > 其他分享 >使用 Let’s Encrypt 获取免费SSL证书

使用 Let’s Encrypt 获取免费SSL证书

时间:2024-11-07 17:45:56浏览次数:5  
标签:Encrypt 证书 SSL api Let DNS com

文章目录

前言

之前不太了解SSL免费证书,只研究过一点自签名SSL证书的知识,前几年的12306就是用的这种证书,访问网站时要求你下载安装并信任根证书,后来在腾讯云上薅了一个免费一年的SSL证书,过期后也就没有再更新,在我印象中SSL证书整的很贵,一般的不涉及隐私新的的交互也不需要非得 HTTPS

从今年我开始接触到了更多的SSL证书知识,原来腾讯云上的SSL证书过期后还可以免费申请,AWS上也有可以自动续期的免费SSL证书,甚至还有 Let’s EncryptZeroSSLSSL For FreeCloudflareBuyPass 等众多可以提供免费证书的机构,本文我们来试试 Let’s Encrypt 怎么用。

Let’s Encrypt 是一个提供 免费 SSL/TLS 证书 的认证机构(CA),旨在通过简化证书申请和安装过程来普及 HTTPS 加密,提升互联网安全性。它由 Internet Security Research Group (ISRG) 运营,并在全球范围内免费提供数字证书,用于加密网站流量,防止数据在传输过程中被窃取或篡改。

Let’s Encrypt 是一个非常受欢迎且实用的工具,能够帮助网站管理员免费获得 SSL/TLS 证书并轻松安装,尤其适用于那些希望以低成本保障网站安全的小型网站和个人项目。然而,对于需要更高级别验证(如 EV 证书)的大型网站或企业来说,Let’s Encrypt 可能不完全符合需求。

申请需求

我的机器操作系统是 CentOS 7,因为本地还占用了80端口提供web服务,故不能使用HTTP-01验证方式,使用证书的是另一台机器,所以这里只需要申请获得证书文件即可,不需要自动部署和更新。

要在 CentOS 7 上使用 Let’s Encrypt 并通过 DNS 验证申请 SSL 证书,而不依赖 80 端口,可以选择 Certbot 的 DNS 验证模式。这种方法适用于可以访问域名的 DNS 管理,并手动添加验证记录。完成验证后,您可以手动将生成的证书文件复制到目标机器上进行安装。

详细步骤:

安装 Certbot

首先,在 CentOS 7 上安装 Certbot:

sudo yum install epel-release -y
sudo yum install certbot -y

使用 DNS 验证生成证书

  1. 使用以下命令启动 DNS 验证模式:

    sudo certbot certonly --manual --preferred-challenges dns -d api.moon.com
    
    • --manual:表示手动输入 DNS 记录
    • --preferred-challenges dns:指定使用 DNS 验证方式
    • -d api.moon.com:需要申请证书的域名
  2. Certbot 会提示创建一个特定的 DNS TXT 记录来验证域名。您会看到类似以下的提示信息:

    Please deploy a DNS TXT record under the name
    _acme-challenge.api.moon.com with the following value:
    
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
    Before continuing, verify the record is deployed.
    
  3. 登录自己的 DNS 提供商控制台,在 api.moon.com 的 DNS 配置中添加一个 TXT 记录:

    • 名称_acme-challenge.api.moon.com
    • 类型:TXT
    • :Certbot 提供的值(如上所示的随机字符串)
  4. 等待几分钟,确保新添加的 DNS 记录已经传播。您可以使用以下命令确认 DNS 记录是否生效:

    nslookup -type=TXT _acme-challenge.api.moon.com
    
  5. 一旦 DNS 记录生效并验证成功,返回到 Certbot 命令窗口并按下回车键继续。Certbot 会自动完成验证并生成 SSL 证书文件。

找到生成的证书文件

验证成功后,Certbot 会将证书文件存放在 /etc/letsencrypt/live/api.moon.com/ 目录下,包括以下文件:

  • fullchain.pem:完整的证书链
  • privkey.pem:私钥文件

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

使用 scp 或其他工具将生成的证书文件复制到目标服务器,比如:

scp /etc/letsencrypt/live/api.moon.com/fullchain.pem user@target_server:/path/to/nginx/ssl/
scp /etc/letsencrypt/live/api.moon.com/privkey.pem user@target_server:/path/to/nginx/ssl/

在目标服务器上配置 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

注意更新证书

Let’s Encrypt 证书的有效期为 90 天。之后,可以在原服务器上再次申请新的证书,然后将新的证书文件传输到目标服务器进行更新。

本地操作实例

[root@VM-0-3-centos ssls]# sudo certbot certonly --manual --preferred-challenges dns -d 008ct.top
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 008ct.top
Performing the following challenges:
dns-01 challenge for 008ct.top

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.008ct.top with the following value:

UYYkUEGZRuWX-2OfS2PcVwll7nmJurxjfqKhkRSxO9k

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges
Subscribe to the EFF mailing list (email: [email protected]).
Starting new HTTPS connection (1): supporters.eff.org

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/008ct.top/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/008ct.top/privkey.pem
   Your certificate will expire on 2025-02-04. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - 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

[root@VM-0-3-centos ssls]#

总结

  • 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 api.xxx.com

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

无人扶我青云志,我自踏雪至山巅。单靠自己很难,单靠自己成功更难~

标签:Encrypt,证书,SSL,api,Let,DNS,com
From: https://blog.csdn.net/shihengzhen101/article/details/143577720

相关文章

  • Bulletproof范围证明之优化
    主页微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/GIT地址:https://github.com/warm3snow简介Bulletproof将范围证明转换为二次多项式表达\(t(X)=t_0+t_1\cdotX+t_2\cdotX^2\),并通过多项式承诺和内积承诺的验证,完成了范围证明。回顾《......
  • 69_api_intro_text_coupletai
    人工智能对联生成API数据接口基于百万数据训练,AI训练与应答,多结果返回。1.产品功能AI基于百万历史对联数据训练应答模型;机器学习持续训练学习;一个上联可返回多个下联应答;毫秒级响应性能;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容......
  • 68_api_intro_text_couplet
    百万中国对联数据API接口支持全文检索级别。1.产品功能中文全数量级历史对联数据;百万级数据;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;全国多节点CDN部署;接口极速响应,多台服务器构建API接口负载均衡。2.API文档......
  • delete、update对表的锁定
    delete语句对表的锁定在MySQL中,DELETE语句在执行时确实会对表进行锁定,以确保数据的一致性和完整性。具体来说,DELETE语句会使用行级锁或表级锁,这取决于存储引擎和事务隔离级别。以下是一些关键点:InnoDB:使用行级锁,不会阻止其他事务插入新行,只要这些新行不满足WHERE条件。锁......
  • SSL 固定(SSL Pinning)是一种提高应用程序安全性的技术,用于防止中间人攻击(MITM,Man-in-th
    SSL固定(SSLPinning)是一种提高应用程序安全性的技术,用于防止中间人攻击(MITM,Man-in-the-Middleattacks)和证书伪造攻击。它通过将服务器的SSL/TLS证书或其公钥“固定”到客户端应用程序中,确保客户端在与服务器通信时只信任特定的证书或公钥,从而降低了遭遇伪造证书或中间人攻击的......
  • 初学Servlet
    创建一个Servlet呢,非常简单,我们只需要实现类即可,并添加注解来进行注册。创建一个TestServlet@WebServlet("/test")publicclassTestServletimplementsServlet{...实现接口方法}我们现在就可以去访问一下我们的页面:http://localhost:8080/test/test我们发现,直接访问此页......
  • OpenSSL 3.0编译升级
    安装前准备编译需要yuminstallpampam-develgcc-c++zlib-develperl-IPC-Cmd源码下载地址https://www.openssl.org/source/启动xinetd服务此服务仅限于临时用,作为升级完后重启失败时备选登录远程服务器,注意使用完及时停止服务servicexinetdstart创建变量,当前日期......
  • “SSL 证书验证失败”问题解决方法“urllib.error.URLError: <urlopen error [SSL: CER
    第一部分:问题描述第二部分:解决方法错误的代码:dataset_train=datasets.MNIST('../data/mnist/',train=True,download=True,transform=trans_mnist)dataset_test=datasets.MNIST('../data/mnist/',train=False,download=True,transform=trans......
  • CompletableFuture异步编排接口优化方案
    接口优化方案(1)程序本身,减少不必要的条件判断、循环(2)减少数据库的交互次数,以及每个sql查询的数据量(列数和行数越少越好)(3)提高sql的性能,通过建立合适的索引(4)使用java8的stream流提高集合的遍历操作的效率(5)引入缓存,从redis中加载数据的效率高于mysql(6)使用多线程异步......
  • NOIP模拟(flandre、meirin、sakuya、scarlet) - 模拟赛总结
    flandre做得挺久的,大约做了\(\rm1h+\)。首先,选出来的序列一定是升序的,因为交换升序序列中的任意两个都不可能让「感觉效果」更高。然后来看选那些数组成这个序列。接下来是我赛时的想法:如果全为正数,那么自然正数全部都得选。需要考虑的是负数的情况。首先,选择一个负数不仅......