Let’s Encrypt生成免费SSL证书

一、  Let’s Encrypt 简介

Let's Encrypt是由网际网路安全研究小组(ISRG)运营的非营利性证书颁发机构,免费提供传输层安全性协定(TLS)加密的X.509证书。它是世界上最大的证书颁发机构,[3]超过3亿个网站使用其服务,[4]其目标是确保所有网站的安全并使用HTTPS。提供该服务的网际网路安全研究小组(ISRG)是一个公益组织,[5]主要赞助商包括电子前哨基金会(EFF)、Mozilla基金会OVH思科系统FacebookGoogle Chrome互联网协会AWSNginx比尔及梅琳达·盖茨基金会[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":"admin@example.com","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 admin@example.com --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 admin@example.com --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

好的,以下是 Let's Encrypt SSL 证书申请及安装教程: 步骤1:安装 Certbot 工具 Certbot 是 Let’s Encrypt 官方推荐的一个 ACME 协议的客户端工具,可以帮助我们快速申请 SSL 证书。在使用 Certbot 申请 SSL 证书之前,我们需要先安装 Certbot 工具,可以使用以下命令: ``` sudo apt-get update sudo apt-get install certbot ``` 步骤2:申请 SSL 证书 申请 SSL 证书的命令如下: ``` sudo certbot certonly --webroot -w /var/www/html/ -d example.com -d www.example.com ``` 其中,`/var/www/html/` 是 Web 根目录所在的位置,而 `example.com` 和 `www.example.com` 分别是需要申请 SSL 证书的域名,可以根据实际情况修改。 执行该命令后,Certbot 将会自动验证您的域名,如果验证成功,将会生成 SSL 证书证书文件存储在`/etc/letsencrypt/live/example.com/` 目录下。 步骤3:安装 SSL 证书 安装 SSL 证书的命令如下: ``` sudo a2enmod ssl sudo service apache2 restart sudo nano /etc/apache2/sites-available/default-ssl.conf ``` 在打开的 `default-ssl.conf` 文件中添加以下内容: ``` SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem ``` 其中,`example.com` 表示您的域名,可以根据实际情况修改。然后保存并关闭文件。 步骤4:启用 SSL 证书 启用 SSL 证书的命令如下: ``` sudo a2ensite default-ssl.conf sudo service apache2 reload ``` 现在,您的网站已经启用了 SSL 证书,可以通过 HTTPS 访问了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值