ubuntu 18.04 Let is Encrypt单域名和泛域名SSL证书配置

2024-04-03 15:38

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

一、Let’s Encrypt简介
  • Let’s Encrypt 也是一个 CA 机构,但这个 CA 机构是免费的!!!也就是说签发证书不需要任何费用。
  • Let’s Encrypt 由于是非盈利性的组织,需要控制开支,他们搞了一个非常有创意的事情,设计了一个 ACME 协议,目前该协议的版本是 v1。
  • 那为什么要创建 ACME 协议呢,传统的 CA 机构是人工受理证书申请、证书更新、证书撤销,完全是手动处理的。而 ACME 协议规范化了证书申请、更新、撤销等流程,只要一个客户端实现了该协议的功能,通过客户端就可以向 Let’s Encrypt 申请证书,也就是说 Let’s Encrypt CA 完全是自动化操作的
  • 通配符证书就是证书中可以包含一个通配符,比如 .example.com、.example.cn,支持多个子域名使用同一个证书
二、certbot验证方式
  • cerbot验证方式有下面几种:apache,nginx,webroot,standalone,dns plugins,manual
  • apache,nginx申请的证书只用自身服务的,我们选择通常生产有Standanlone 、Webroot,Manual,DNS Plugins
    在这里插入图片描述
  • Standalone 方式: certbot 会自己运行一个 web server 来进行验证,暂时占用服务器的 80 或者 443 端口。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。
  • Webroot 方式: certbot 会利用既有的 web server,在其 web root目录下创建隐藏文件, Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。
  • Manual:表示手动交互模式,Certbot 有很多插件,不同的插件都可以申请证书,用户可以根据需要自行选择
  • DNS Plugins:使用各类型的DNS插件证明这个域名是属于你的,自动验证方式创建泛域名证书,不是所有的域名都能用自动验证方式创建证书,需要查看官方支持域名供应商,如阿里云是没有提供API来自动验证
三、单域名
  • standalone
sudo certbot certonly --standalone -d www.domain.com
  • webroot
sudo certbot certonly --webroot -w /var/www/live -d www.domain.com \--agree-tos \--email test@163.com
  • manual方式
sudo certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --manual-public-ip-logging-ok  -d <www.your.domain> --agree-tos --email example@mail.com
四、泛域名
  • Let’s Encrypt只支持DNS方式获取泛域名
sudo certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --manual-public-ip-logging-ok -d '*.<your.domain>' -d <your.domain> --agree-tos --email example@mail.com
`certonly` 表示安装模式,Certbot 有安装模式和验证模式两种类型的插件。
--manual: 表示手动交互模式,Certbot 有很多插件,不同的插件都可以申请证书,用户可以根据需要自行选择
-d: 为那些主机申请证书,如果是通配符,输入 *.xxxx.com (可以替换为你自己的域名)
--preferred-challenges: 使用 DNS 方式校验域名所有权
--server:Let's Encrypt ACME v2 版本使用的服务器不同于 v1 版本,需要显示指定。
--agree-tos:默认同意 Let’s Encrypt 的一些 agreements,不加这个参数在命令执行过程中还是会问用户是否同意;
--email:用来获取一些 Let’s Encrypt 的通知,比如证书过期之类;certonly:                       Obtain or renew a certificate, but do not install
–manual:                        Obtain certificates interactively
–preferred-challenges=dns:      Use dns to authenticate domain ownership
–server:                        Specify the endpoint to use to generate
–agree-tos:                     Agree to the ACME server’s subscriber terms
-d:                             Domain name to provide certificates for

在这里插入图片描述

  • DNS服务商配置TXT指向
    在这里插入图片描述
  • 检查DNS配置txt是否生效,dig -t txt _acme-challenge.htslqc0731.com
    在这里插入图片描述
  • 确定继续生成
    在这里插入图片描述
  • 创建成功 /etc/letsencrypt/live/example.com/下会生成五个文件
cert.pem  - Apache服务器端证书  
chain.pem  - Apache根证书和中继证书  
fullchain.pem  - Nginx所需要ssl_certificate文件  
privkey.pem - 安全证书KEY文件
README - 参数说明
Nginx环境,就只需要用到fullchain.pem和privkey.pem两个证书文件
五、删除域名证书
sudo certbot delete --cert-name example.com    # 删具体域名
sudo certbot delete     # 手动列表选择删除域名
jtserver@tlwlmy:~$ sudo certbot delete
Saving debug log to /var/log/letsencrypt/letsencrypt.logWhich certificate(s) would you like to delete?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.domain1.com
2: www.domain2.com
3: www.mydomain.com
4: www.domain3.com
5: www.domain4.com
6: www.domain5.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 3- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Deleted all files relating to certificate www.mydomain.com.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • 当删除域名时候,检查一下目录域名是否删除
/etc/letsencrypt/archive
/etc/letsencrypt/live
/etc/letsencrypt/renewal
  • Wildcard certificates can only be attained using DNS validation. This is a policy decision by Let’s Encrypt.
六、证书满90天后续期
  • 自动更新ssl key脚本
#!/bin/bash# Directory where the acme client puts the generated certs
LETSENCRYPT_CERT_OUTPUT=/etc/letsencrypt/live# Create or renew certificate for the domain(s) supplied for this tool
certbot renew --dry-run --pre-hook "service nginx start" --post-hook "service nginx stop"# Cat the certificate chain and the private key together for haproxy
# for path in $(find $LETSENCRYPT_CERT_OUTPUT/* -type d -exec basename {} \;); do# cat $LETSENCRYPT_CERT_OUTPUT/$path/{fullchain.pem,privkey.pem} > /etc/haproxy/ssl/${path}.pem
for path in $(ls -d $LETSENCRYPT_CERT_OUTPUT/* | grep -o -P "[\w\.-]*$" | grep -v "README"); docat $LETSENCRYPT_CERT_OUTPUT/$path/fullchain.pem $LETSENCRYPT_CERT_OUTPUT/$path/privkey.pem > /etc/haproxy/ssl/${path}.pem
done
  • root用户crontab设置定时任务更新,每周一凌晨2点执行
0 2 * * 1  sh /etc/letsencrypt/letsencrypt-passworks.sh >> /var/log/letsencrypt/letsencrypt-passworks.log 2>&1
七、参考
  • ubuntubionic-haproxy
  • 官方文档
  • https://websiteforstudents.com/generate-free-wildcard-certificates-using-lets-encrypt-certbot-on-ubuntu-18-04/
  • https://moxo.io/blog/2018/01/30/obtain-and-renew-tls-certs-using-letsencrypt/
  • https://www.willh.cn/articles/2018/07/27/1532676216270.html
  • https://www.jesusamieiro.com/remove-revoke-a-domain-in-lets-encrypt/
  • https://medium.com/@mhagemann/correct-way-to-delete-a-certbot-ssl-certificate-e8ee123e6e01
  • Let’s Encrypt 获取 TLS 证书(Webroot + Nginx)
  • Let’s Encrypt 终于支持通配符证书了

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



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

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构