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

相关文章

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp