Let’s Encrypt SSL 证书的申请与使用

这篇具有很好参考价值的文章主要介绍了Let’s Encrypt SSL 证书的申请与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Let’s Encrypt 简介

Let’s Encrypt 是免费、开放和自动化的证书颁发机构。由非盈利组织互联网安全研究小组(ISRG)运营。
SSL应用开发者可以免费从 Let’s Encrypt 申请到有效期90天的SSL证书,当然在到期之前也可以更新证书,延长有效期。
Let’s Encrypt 支持 ACME 协议,可以自动化的完成SSL证书的申请、更新、吊销等操作。
有了正规的证书颁发机构签发的SSL证书,才能更好的使用SSL相关功能,例如:提供支持HTTPS的网站。尽管可以使用自签名的证书,但会在很多情况下收到安全警告或被禁止使用。

证书的申请与使用

Let’s Encrypt 支持 ACME2 开放协议,未提供WEB等申请途径,目前仅能通过ACME 客户端完成证书操作,官方推荐的 ACME 客户端是 certbot
最方便的方法是在WEB服务器上安装certbot工具,完成证书管理操作。

测试环境

  • 测试环境是 Ubuntu 20.04 + Apache2;
  • 域名服务商是阿里云;

certbot 安装

安装方法参考certbot官方指引:https://certbot.eff.org/instructions

选择WEB服务和操作系统后,会有两个选项:defaultwildcard;其中wildcard方式需要域名服务商有相应的 certbot DNS插件,查了一下certbot的官网文档,第三方插件dns-multi可以支持阿里云DNS,这里我们先看看default方式。

环境需求

  • 可以访问命令行,例如ssh
  • 有sudo权限
  • WEB服务器已经部署好,并且已经上线了80端口的WEB应用
  • 要申请证书的域名已经指向了WEB服务器

安装certbot

使用snap安装certbot(Ubuntu 20.04 已经自带snap,如果没有,可参考官方文档安装)

# 先删除系统自带的版本
sudo apt-get remove certbot
# 用snap安装最新版本
sudo snap install core; sudo snap refresh core
sudo ln -s /snap/bin/certbot /usr/bin/certbot

注册账号

在使用之前注册账号,否则在第一次交互式使用时会提示输入邮箱地址来注册账号

sudo certbot register -m 你的邮箱地址 --agree-tos

证书管理

申请证书

可以只申请证书,而不安装到WEB服务,证书也可以用于其他用途,例如自己的SSL应用。

sudo certbot certonly --apache

这里–apache指出如何验证域名所有权,单个域名使用HTTP验证,apache指出WEB服务器类型,程序据此确定具体的操作方法。如果还没有准备好WEB服务器,可以使用–standalone参数来运行一个WEB服务器。

这里没有加其他参数,命令将以交互式的方式提示用户输入域名等信息,获取证书将存储在 /etc/letsencrypt/archive/你的域名/ 目录下,最新的证书链接在 /etc/letsencrypt/live/你的域名/ 目录下。

也可以用参数提供全部信息,实现自动化操作

sudo certbot certonly --apache -d 你的域名,也可以有多个域名 -d 或者多次-d指定

常用子命令:

  • run 或 缺省:获取并安装证书到WEB服务器
  • certonly:获取但不安装到WEB服务器
  • renew:更新快要到期的证书(多长时间到期看配置文件/etc/letsencrypt/renewal/你的域名.conf,一般是到期前30天内)

证书管理子命令:

  • certificates:查看证书信息
  • revoke:吊销证书(需要指定–cert-name 或 --cert-path)
  • delete:删除证书(需要指定–cert-name)

常用选项:

  • 验证方式
    • –standalone:运行独立的web服务验证
    • –apache:用Apache验证
    • –nginx:用Nginx验证
    • –webroot:用webroot方式验证(例如tomcat)
    • –manual:手工验证
  • 交互选项
    • -n:以非交互方式运行
    • –expand:添加更多域名时覆盖旧证书
    • –keep-until-expiring, --keep, --reinstall:如果证书已存在,保留现有证书直到需要更新
    • –force-renewal, --renew-by-default:强制更新证书(隐含–expand)
    • –renew-with-new-domains:域名更新时强制更新证书
    • –allow-subset-of-names:允许部分域名验证失败
  • 安全选项
    • –redirect:自动将HTTP重定向到HTTPS
    • –no-redirect:不将HTTP重定向到HTTPS

申请并安装证书

sudo certbot run --apache -d 你的域名

安装证书会根据当前80端口的网站配置生成一个对应的HTTPS网站配置,并启用它。
不指定–no-redirect的情况下,安装证书时还对修改80端口的网站配置,将HTTP重定向到HTTPS。

更新证书

sudo certbot renew

可以把这个做成定时任务,实现证书的自动更新

注意:这只会更新证书,而不会重启web服务使证书生效,要想使证书生效,需要重启web服务或者使用certbot install命令安装证书以间接重启web服务。

使用certbot install命令在HTTPS端口不是默认的443端口时会有问题,命令会尝试添加443端口,这可能会导致web服务无法正常启动,所以建议使用重启web服务的方式使证书生效。

吊销证书

sudo certbot revoke --cert-name 你的域名

通配符证书

通配符证书是指域名为*.your.domain这样的证书,为了验证域名所有权,需要使用DNS验证方式,所有要么有相应的DNS插件支持,要么根据提示人工完成验证,由于证书的有效期只有90天,每次都要人工验证比较麻烦,最好还是通过插件自动完成验证,我的域名服务商是阿里云,查看文档后发现有第三方插件dns-multi可以支持,下面来看看如何自动完成证书申请。

certbot官方内置的DNS插件以及第三方插件可参考官方文档:https://eff-certbot.readthedocs.io/en/stable/using.html#dns-plugins

dns-multi官方网站:https://github.com/alexzorin/certbot-dns-multi

安装dns-multi

还是采用snap安装

sudo snap install certbot-dns-multi
sudo snap set certbot trust-plugin-with-root=ok
sudo snap connect certbot:plugin certbot-dns-multi

配置dns-multi

配置文件:/etc/letsencrypt/dns-multi.ini
根据域名服务商配置dns_multi_provider和其他参数。
dns_multi_provider 参考 https://go-acme.github.io/lego/dns/ 中 各DNS Provider的 CLI flag name ,其他参数可以参考 https://go-acme.github.io/lego/dns/ 中的各DNS Provider 链接的文档,即文档中的那些环境变量,将需要的环境变量值配置到 dns-multi.ini 文件中。

dns_multi_provider=alidns
ALICLOUD_ACCESS_KEY=your-access-key
ALICLOUD_SECRET_KEY=your-secret-key

为了保护ALICLOUD_SECRET_KEY,可以将dns-multi.ini的权限设置为只有本用户可以读写

chmod 0600 /etc/letsencrypt/dns-multi.ini

申请命令

申请并安装证书

sudo certbot -a dns-multi --dns-multi-credentials=/etc/letsencrypt/dns-multi.ini -d "你的域名" -d "*.你的域名"

由于之前已经安装过一个证书,这一次下载到了 /etc/letsencrypt/archive/你的域名-0001 目录下,这个目录不一定是域名,而是证书名,可以用–cert-name选项指定证书名,不指定会用指定的域名自动生成。证书名会在install等其他命令里用到。

sudo certbot --cert-name "all.你的域名" -a dns-multi --dns-multi-credentials=/etc/letsencrypt/dns-multi.ini -d "你的域名" -d "*.你的域名"

这样,证书会保存在 /etc/letsencrypt/archive/all.你的域名 目录下,当前版本链接在 /etc/letsencrypt/live/all.你的域名 目录下。

注意: 这里证书包含了 域名 “你的域名” 和 “*.你的域名” ,安装证书时会查找域名匹配的网站,“你的域名”会匹配ServerName为“你的域名”的网站,如果没有,会匹配到默认网站000-default;而 “*.你的域名” 匹配 www.你的域名,doc.你的域名等,如果没有会导致安装过程失败。可以简单的复制 000-default.conf,并修改其中的ServerName参数。

完整的自动申请命令

使用-n参数指定为非交互模式,会检查参数是否足够,如果参数不足命令会失败而不是在执行过程中提问,这样用-n参数测试过能保证申请安装和更新证书命令自动运行时不会因参数不足而报错。

  1. 申请安装证书
sudo certbot run -n --cert-name cert1 --apache -d "你的域名" -d "www.你的域名"

如果是通配符证书,由于在安装证书时需要知道那个网站对应通配符证书,所以无法一步到位,需要分为下载证书和安装证书两步操作,在安装时用-d指定域名

# 下载证书
sudo certbot certonly -n --cert-name cert1 -a dns-multi --dns-multi-credentials=/etc/letsencrypt/dns-multi.ini -d "你的域名" -d "*.你的域名"
# 安装证书
sudo certbot install -n --cert-name cert1 -i apache -d 你的域名
sudo certbot install -n --cert-name cert1 -i apache -d www.你的域名
  1. 更新证书
sudo certbot renew -n

安装证书使证书生效

sudo certbot install -n --cert-name 证书名 -d 域名1 -d 域名2 --apache

重启服务使证书生效

sudo systemctl restart apache2

优化:通过crontab来定时检查更新证书,在证书没临近到期时不会更新证书,此时不应重启web服务,但是certbot并没有返回值检查这种情况,需要我们通过脚本和live目录下的证书链接是否变化来判断是否更新了证书,是否需要重启web服务。整个过程可以通过一个脚本实现,通过crontab来运行脚本。文章来源地址https://www.toymoban.com/news/detail-437784.html

到了这里,关于Let’s Encrypt SSL 证书的申请与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 宝塔面板站点SSL,Let‘s Encrypt 证书申请报错:Invalid version. The only valid version for X509Req is 0.

    Linux正式版 7.9.10 CentOS 7.3.1611 x86_64(Py3.7.9) 新服务器 , 新装宝塔 , 新增站点 ,ssl选择Let’s Encrypt,点击申请证书 报错: 文件验证和DNS验证都报这个错。 试过修复面板(无效),试过回退到7.9.8版本(无效) 您好,您这个报错是因为面板依赖的不兼容导致的证书申请失败,

    2024年02月09日
    浏览(29)
  • Docker获取Let`s Encrypt SSL 证书

    文中的操作都是在CentOS Stream release 9下执行的,使用的是root用户。 关于Let`s Encrypt可以参见这里。 certbot安装使用参加这里。 为了方便维护、升级,同时也避免破坏本地的开发环境,我这里使用docker方式来运行certbot。整个过程分为两步:首次申请证书和证书更新。 因为我的文

    2024年02月01日
    浏览(25)
  • Let’s Encrypt免费证书获取方法

    域名所有者:Let’s Encrypt 是一个证书颁发机构(CA), 要从 Let’s Encrypt 获取网站域名的证书,必须证明对域名的实际控制权。 ACME 协议软件 : 在Let’s Encrypt 使用 ACME 协议来验证对给定域名的控制权并颁发证书, 要从Let’s Encrypt 获得证书,需要选择一个要使用的 ACME 客户端 Certbot 、

    2024年02月05日
    浏览(30)
  • 最新阿里云免费SSL证书申请使用介绍

    为网站部署SSL证书已经是现在站长的必须要做的工作,然而SSL证书并不全是免费的,免费且好用的资源也越来越有限,毕竟嘛,这些都需要成本。 PS:最下方有最终建议方案。 本文介绍当前(2024年)阿里云免费SSL证书信息。 阿里云可以说是国内数一数二的云服务商,也提供了

    2024年01月24日
    浏览(34)
  • 【SSL证书】阿里云免费 SSL证书申请 + nginx 部署全解

    一、环境 二、步骤 三、实战 Stage 1:申请免费证书  1. 进入 - 数字证书管理服务(SSL证书) 2. 创建证书  3. 申请证书  Stage 2:域名解析 1. 进入 - 域名管理 2. 点击 - 域名 3. 点击 - 域名解析 4. 点击 - 添加记录 5. 返回 - 数字证书管理服务(SSL证书)- 查看验证 6. 下载证书 

    2024年02月12日
    浏览(32)
  • 申请部署阿里云SSL免费证书

    使用宝塔自动创建的证书有时候会报NET::ERR_CERT_COMMON_NAME_INVALID,并且每次只能三个月,需要点击续期非常麻烦,容易遗忘。 前往阿里云管理控制台【数字证书管理服务】【SSL证书】,每年20个额度,一年后会过期失效 填写申请的域名 申请成功后,刷新列表页面,可以看到下

    2024年02月12日
    浏览(27)
  • 腾讯云免费SSL证书申请流程_每年免费50个HTTPS证书

    2023腾讯云免费SSL证书申请流程,一个腾讯云账号可以申请50张免费SSL证书,免费SSL证书为DV证书,仅支持单一域名,申请腾讯云免费SSL证书3分钟即可申请成功,免费SSL证书品牌为TrustAsia亚洲诚信,腾讯云百科分享腾讯云免费SSL证书申请流程,3分钟搞定: 目录 腾讯云免费SSL证

    2024年02月09日
    浏览(32)
  • 免费ssl通配符证书申请教程

    在互联网安全日益受到重视的今天,启用HTTPS已经成为网站运营的基本要求。它不仅保障用户数据传输的安全,提升搜索引擎排名,还能增强用户对网站的信任。 通配符证书是一种SSL/TLS证书,用于同时保护一个域名及其所有下一级子域名的安全 , 如果企业拥有众多子域名,

    2024年04月22日
    浏览(35)
  • 3分钟:腾讯云免费SSL证书申请教程_免费HTTPS证书50张

    2023腾讯云免费SSL证书申请流程,一个腾讯云账号可以申请50张免费SSL证书,免费SSL证书为DV证书,仅支持单一域名,申请腾讯云免费SSL证书3分钟即可申请成功,免费SSL证书品牌为TrustAsia亚洲诚信,腾讯云百科分享腾讯云免费SSL证书申请流程,3分钟搞定: 目录 腾讯云免费SSL证

    2024年02月10日
    浏览(45)
  • 腾讯云免费SSL证书申请流程(图文教程)

    2023腾讯云免费SSL证书申请流程,一个腾讯云账号可以申请50张免费SSL证书,免费SSL证书为DV证书,仅支持单一域名,申请腾讯云免费SSL证书3分钟即可申请成功,免费SSL证书品牌为TrustAsia亚洲诚信,腾讯云百科分享腾讯云免费SSL证书申请流程,3分钟搞定: 目录 腾讯云免费SSL证

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包