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

相关文章

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效