Lets-Encrypt配置泛域名证书

2024-02-05 03:28

本文主要是介绍Lets-Encrypt配置泛域名证书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考教程:Create Let’s Encrypt Wildcard Certificates in NGINX

Let’s Encrypt 是一个免费、开放且自动化的证书颁发机构,由 Linux 基金会进行日常管理维护。它为大量网站提供 TLS 证书,帮助网站轻松实现 HTTPS 加密。下面我将介绍如何利用 Let’s Encrypt 为网站生成免费的泛域名 SSL 证书。

一、环境

❯ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal❯ uname -i
x86_64❯ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

二、安装Certbot

Certbot 是一个自动化的工具,用于获取和续签 Let’s Encrypt 的 SSL 证书。

# 安装 snap
sudo apt install snap  -y
sudo snap install core
sudo snap refresh core# 通过 snap 安装 certbot
sudo snap install --classic certbot
# 创建软连接,避免 sudo 下找不到命令
sudo ln -s /snap/bin/certbot /usr/bin/certbot

三、获取泛域名证书

通过 Certbot 获取泛域名证书。泛域名证书允许我们为一个域名及其所有子域名使用同一个 SSL 证书。

sudo certbot certonly --manual --preferred-challenges=dns --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d "*.codejerry.cn"

参数释义:

  • certonly: 仅获取证书,不尝试安装。
  • --manual: 手动模式,需手动执行一些步骤,例如添加 DNS 记录。
  • --preferred-challenges=dns: 使用 DNS 验证域名所有权。
  • --server: 指定 ACME 服务器的 URL。
  • --agree-tos: 同意服务条款。
  • -d: 指定获取证书的域名。

在这个过程中,你要去域名托管平台(如阿里云),添加对应的TXT解析记录, Certbot 会指导你通过添加 DNS TXT 记录来验证你对域名的控制权。完成验证后,证书(两个文件)将被颁发,并保存在 /etc/letsencrypt/live/codejerry.cn/ 目录下:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/codejerry.cn/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/codejerry.cn/privkey.pem
This certificate expires on 2024-05-04.
These files will be updated when the certificate renews.

其中 fullchain.pem 是证书文件,privkey.pem 是私钥文件。

这里也可以不用 manual 手动添加解析,但需要借助第三方托管平台,比如 cloudflare,当前暂不考虑。

下一步,3个月后更新证书,按照下面的提示即可(重新运行之前的指令)

NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates 
requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. 
To renew this certificate, repeat this same certbot command before the certificate's expiry date.

四、普通域名证书

对于单个域名的证书,可以省略 DNS 验证步骤。假设域名 mydomain.codejerry.cn 已经解析到服务器 IP,可以直接运行以下命令:

sudo certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d "mydomain.codejerry.cn"

按照提示操作,选择 Nginx 插件进行验证。

五、配置 Nginx

生成证书后,需要在 Nginx 配置中添加 SSL 相关设置,比如:

server {listen 443 ssl;server_name codejerry.cn test.codejerry.cn;ssl_certificate /etc/letsencrypt/live/codejerry.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/codejerry.cn/privkey.pem;...
}

执行 sudo nginx -s reload 重启 Nginx 生效。

六、证书自动更新

Let’s Encrypt 的证书有效期为 90 天,因此需要定期更新。可以通过设置 crontab 定时任务来自动更新证书(仅对单域名有效)

sudo crontab -e
# 添加以下内容
0 0 1 * * /usr/bin/certbot renew --quiet

注:自动更新未测试过,不确定有效

七、证书迁移

如果想在服务器B上的相同域名下使用这个证书,不用重新获取,迁移过去即可,方法如下:

  1. cd到证书路径下,查看证书,发现证书是软链接的
  2. 根据软链接的提示找到证书源文件,发现会有四个文件。原证书文件路径在/etc/letsencrypt/archive/codejerry.cn
  3. 将这四个文件scp到服务器B上/etc/letsencrypt/archive/codejerry.cn路径下
  4. 将服务器B上两个证书分别软链接
    • ln -s /etc/letsencrypt/archive/codejerry.cn/fullchain1.pem /etc/letsencrypt/live/codejerry.cn/fullchain.pem
    • ln -s /etc/letsencrypt/archive/codejerry.cn/privkey1.pem /etc/letsencrypt/live/codejerry.cn/privkey.pem

注:第一步如果cd不过去,记得给证书文件开权限即可,使用chmod

八、小结

通过上述步骤,可以为你的网站配置泛域名或普通域名的 SSL 证书,提高网站的安全性和可信度。

这篇关于Lets-Encrypt配置泛域名证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679628

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压