首页 > 其他分享 >Let’s Encrypt生成免费SSL证书

Let’s Encrypt生成免费SSL证书

时间:2024-08-16 15:51:29浏览次数:17  
标签:Encrypt nginx -- 证书 SSL Let com example certbot

一、  Let’s Encrypt 简介

Let's Encrypt是由网际网路安全研究小组(ISRG)运营的非营利性证书颁发机构,免费提供传输层安全性协定(TLS)加密的X.509证书。它是世界上最大的证书颁发机构,[3]超过3亿个网站使用其服务,[4]其目标是确保所有网站的安全并使用HTTPS。提供该服务的网际网路安全研究小组(ISRG)是一个公益组织,[5]主要赞助商包括电子前哨基金会(EFF)、Mozilla基金会、OVH、思科系统、Facebook、Google Chrome, 互联网协会、AWS、Nginx和比尔及梅琳达·盖茨基金会。[6]其他合作伙伴包括证书颁发机构IdenTrust、[7]密西根大学[8]以及Linux基金会。 [9]

二、  Certbot 简介

Certbot 为 Let’s Encrypt 项目发布了一个官方的客户端 Certbot ,利用它可以完全自动化的获取、部署和更新安全证书,并且 Certbot 是支持所有 Unix 内核的操作系统。

三、  安装 Certbot 客户端

$ yum install certbot # centos
$ apt install certbot # ubuntu

四、  Certbot 的两种使用方式

1.  webroot 方式: certbot 会利用既有的 web server,在其 web root 目录下创建隐藏文件,Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。

2.  standalone 方式: Certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。

五、  获取证书

webroot 模式

使用这种模式会在 web root 中创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,Certbot 会通过访问 example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器,所以需要编辑 nginx 配置文件确保可以访问刚刚创建的 .well-known 文件夹及里边存放的验证文件,以便在生成证书时进行验证:

访问日志如下所示:

{"@timestamp":"2024-05-20T16:00:16+08:00","server_addr":"172.30.170.184","remote_addr":"-","scheme":"http","request_method":"GET","request_uri": "/.well-known/acme-challenge/XBFdrmwxwuZKU1VdE7UrHLsPDiZghBdSzVLSqqrzLc","request_length": "266","uri": "/.well-known/acme-challenge/XBFdrmwxwuZKU1VdE7UrHLsPDiZghBdSzVLSqqrzLc", "request_time":0.000,"body_bytes_sent":87,"bytes_sent":364,"status":"200","upstream_time":"-","upstream_host":"-","upstream_status":"-","domain":"[email protected]","http_referer":"-","http_user_agent":"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}

使用以下命令查看 nginx 配置文件地址:

$ nginx -t
nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/nginx.conf test is successful

编辑 /usr/local/nginx/nginx.conf 配置

server {
    ...
    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /var/www/example;
    }
    ...
}

重启 nginx 服务

nginx -s reload

获取证书,

--email 为申请者邮箱,--webroot 为 webroot 方式,-w 为站点目录,-d 为要加 https 的域名,以下命令会为 example.com 和 www.example.com 这两个域名生成一个证书:

certbot certonly --email [email protected] --webroot -w /var/www/example -d example.com -d www.example.com

执行完命令后,https证书就会生成在/etc/letsencrypt/live目录下

standalone模式获取证书

但是有些时候我们的一些服务并没有根目录,例如一些微服务,这时候使用 webroot 模式就走不通了。这时可以使用模式 standalone 模式,这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。我们有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。

certbot certonly --email [email protected] --webroot -w /var/www/example -d example.com -d www.example.com

六、  自动续期

Let’s Encrypt 提供的证书只有90天的有效期,所以我们要在在证书到期之前重新获取这些证书,Certbot 提供了一个方便的命令 certbot renew,我们可以先使用 --dry-run 测试是否可用:

certbot renew --dry-run

linux 系统上有 cron 可以来搞定这件事情,使用以下命令新建任务:

crontab -e

写入以下任务内容。这段内容的意思就是 每隔 两个月的 凌晨 3:00 执行 更新操作

00 3 * */2 * certbot renew --quiet --renew-hook "nginx -t && nginx -s reload"

注:crontab 中有六个字段,其含义如下:

第1个字段:分钟 (0-59)

第2个字段:小时 (0-23)

第3个字段:日期 (1-31)

第4个字段:月份 (1-12 [12 代表 December])

第5个字段:一周当中的某天 (0-7 [7 或 0 代表星期天])

/path/to/command – 计划执行的脚本或命令的名称

certbot参数说明:

参数

表述

–quiet

执行时屏蔽错误以外的所有输出,也可以使用 -q

–pre-hook

执行更新操作之前要做的事情

–pre-hook

执行更新操作之前要做的事情

–post-hook

执行更新操作完成后要做的事情

指定域名证书续期

certbot renew --cert-name www.example.com --webroot -w /home/app/web/www.example.com-ssl

查询证书有效期

openssl x509 -in /etc/letsencrypt/live/www.example.com/fullchain.pem -noout -dates

七、  取消证书

可以使用以下命令取消刚刚生成的密匙,也就是以上的反操作:

$ certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
$ certbot delete --cert-name example.com

至此,整个网站升级到 HTTPS 就完成了。

八、  小结

如果加上 HTTPS 之后

标签:Encrypt,nginx,--,证书,SSL,Let,com,example,certbot
From: https://blog.csdn.net/huchao_lingo/article/details/141260309

相关文章

  • 如何使用Java CompletableFuture
    Java的CompletableFuture是处理异步编程的利器。它不仅简化了异步任务的执行,还提供了丰富的API来支持任务的组合、异常处理、以及多任务并行。1.CompletableFuture的基础概念CompletableFuture是Java8中引入的,属于java.util.concurrent包。它实现了Future接口,允......
  • Let Me Teach You a Lesson (Easy Version)
    显然当\(n\)为偶数的时候比较好考虑,将互相交换的两组放在一起,无论什么情况,这两个组的最大值更小最小值更大是更优的,而且由于\((a+b)+(c+d)=(a+c)+(b+d)\),所以最大值更小当前仅当最小值更大,不会出现最大值更小最小值也更小的情况,所以直接枚举四种情况就好了然后来考虑当\(n\)为奇......
  • Nginx SSL证书部署
    简介本文介绍在Nginx服务器配置SSL证书,配置成功后即可通过HTTPS加密通道安全访问Nginx服务器环境Nginx+阿里云SSL证书下载证书此处以阿里云证书为例登录控制台->数字证书管理服务选择SSL证书在列表中找到要下载的证书,操作列单机下载选择Nginx服务器类型下载解压......
  • qt 5.12测试openssl报错
    //看看是否配置了sslQNetworkAccessManager*manager=newQNetworkAccessManager(this);qDebug()<<manager->supportedSchemes();qDebug()<<QSslSocket::sslLibraryBuildVersionString();使用以上打印出当前组件以及需要的openssl版本 ("ftp","file",......
  • IDEA中maven配置忽略SSL检查
     当使用mvn打包时,会报错:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget->[Help1]问题原因是没有导入中心仓域名的证书,ssl证书校验不通过,就会报错误。此时有两种......
  • 一年期SSL证书多少钱?如何申请?
    由于政策调整,各大服务厂商纷纷下架了一年期免费证书,付费证书因其强大的安全性、稳定性和高兼容性日益受到网站所有者的青睐。市场上SSL证书的价格从几十到几千上万不等。SSL证书的价格受到证书类型、品牌、域名类型及购买时长等多重因素的影响一年期SSL证书申请流程:便宜S......
  • GeoTrust OV通配符SSL证书申请!
    GeoTrust作为知名的SSL证书供应商,拥有广泛的市场接受度和高占有率,其OV通配符SSL证书更是受到众多企业和网站的信任和采用。GeoTrustSSL证书的优势在于其品牌信誉、强大的加密能力、多样化的验证级别以适应不同安全需求、出色的浏览器兼容性、灵活的域名支持选项,以及便捷的管......
  • C/C++ 动态分配:malloc()和free()所涉及的空指针和强制类型转换、与new和delete的对比
    1、动态分配的内涵所谓动态内存分配,是指在程序运行时根据需要分配和释放内存,而不是在编译时确定内存需求。动态分配包括两方面的内涵:在堆上分配内存。对于linux的虚拟内存,可以分成以下5段:文本段、数据段(分初始化和未初始化数据段)、堆和栈。不使用动态分配定义一个变量,这个变......
  • ES6 (二)——ES6 let 与 const
    目录let命令不存在变量提升const命令注意要点ES2015(ES6)新增加了两个重要的JavaScript关键字: let 和 const。let声明的变量只在let命令所在的代码块内有效。const声明一个只读的常量,一旦声明,常量的值就不能改变。let命令基本用法:{leta=0;a......
  • 《开发板 —— 交叉编译移植openssl、curl、mosquitto》
    1.移植openssl1.下载openssl,我这边下载的是openssl-3.3.1,下载后在linux中解压。2.配置编译安装(以下相关目录对应位置是随便写的,需要根据实际替换)#./configno-asm--prefix=/home/3520/software/openssh-server/package--cross-compile-prefix=arm-hisiv400-linux......