使用certbot生成https证书

背景

Skipping bootstrap because certbot-auto is deprecated on this system.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.

在这里插入图片描述

  • 然后就没有然后了。

  • GitHub issues搜索一波后,发现说certbot-auto已被弃用,如下图所示(原文链接:https://github.com/certbot/certbot/issues/8535):
    在这里插入图片描述

  • 最上面的提问这里说snap的certbot版本可以正常工作。
    在这里插入图片描述

  • 通过GitHub issues我们知道需要使用snap或许能解决问题,命令打印提示到https://certbot.eff.org/寻找替代方案。

  • 几经波折,经过一番摸索后,我终于从入门到会用,整理了下分享给大家。

全部操作步骤概览

1、打开https://certbot.eff.org

在这里插入图片描述

2、选择自己用的什么软件并且是什么操作系统

  • 我的是Centos7 Nginx所以选择的是这样的组合。
    在这里插入图片描述

3、查看操作步骤

  • 下面就是具体的操作
    在这里插入图片描述
    在这里插入图片描述

下面的实战细节主要针对在Centos系统 + Nginx/Openresty软件上,之所以有前面的全部操作步骤概览,就为了遇到其他系统或软件举一反三,然后参考下面的实战操作。应该是大同小异。

实战细节

安装snap

注意下自己系统的版本。

  • 我的是centos7运行以下命令安装snap
# 将EPEL添加到CentOS 7
yum install epel-release   
#安装snapd
yum install snapd
#安装后,需要启用用于管理主快照通信套接字
systemctl enable --now snapd.socket
# 启用快照支持
ln -s /var/lib/snapd/snap /snap

我是root用户运行,所以没有加sudo

  • 确保安装的snap是最新的。
 snap install core
 snap refresh core

这2条命令估计要多尝试几次,第1次有可能失败,我的失败了2次

安装Certbot

  • 使用snap命令安装:
 snap install --classic certbot
  • 增加软链接
ln -s /snap/bin/certbot /usr/bin/certbot

生成证书

  • 生成证书前的准备

    • 1、域名解析到当前操作的服务器。
    • 2、制作nginx的软链接。

    因为我安装的是openresty,默认是不能不加路径就直接nginx命令的,所以我使用命令,ln -s /usr/local/openresty/nginx/sbin/nginx /usr/bin/nginx 制作软链接。

    • 3、安装python-certbot-nginx,这是nginx插件。

    Centos使用yum install python-certbot-nginx命令,Ubuntu使用apt install python-certbot-nginx命令。

  • 生成证书有2条命令certbot --nginx(获取证书,并让Certbot自动编辑Nginx配置以为其提供服务)和certbot certonly --nginx(只生成证书,手动更改Nginx配置)

  • 我比较保守,所以使用的是只生成证书的命令。

certbot certonly --nginx
  • 还有个问题,运行这个命令,它会去/etc/nginx目录去找配置文件,而我是手动安装的openresty,配置文件并不在/etc/nginx下,所以要指定配置文件目录,最终命令如下所示。
certbot certonly --nginx --nginx-server-root=/usr/local/openresty/nginx/conf

在这里插入图片描述

  • 运行命令后,它会把所有配置的域名列出来,然后选择编号就可以了,最下面就是我们生成的证书路径了。
  • 手动改下配置文件。内容如下所示。
server {
    listen       443 ssl;
    server_name  xxx.xxx.com;
    ssl_certificate /etc/letsencrypt/live/xxx.xxx.com-0001/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/xxx.xxx.com-0001/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ...省略...
}
  • 重启nginx/openresty就可以了,一气呵成,收工。

续期

  • 证书会过期,续期的基础命令如下所示。
certbot renew --dry-run

这个命令我暂时没用,等我用的时候再更新下本文,预计又会有配置文件路径问题。

该命令已测试,没有配置文件路径问题,直接运行即可,更新于2021年6月29日13:36:30。

常见问题整理

Could not choose appropriate plugin: The nginx plugin is not working; there may be problems with your existing configuration

Could not choose appropriate plugin: The nginx plugin is not working; there may be problems with your existing configuration.
The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.")
  • 两步解决
    • 1、安装nginx插件,Centos使用yum install python-certbot-nginx命令,Ubuntu使用apt install python-certbot-nginx命令,原文链接https://github.com/certbot/certbot/issues/1736
    • 2、制作nginx软链接:如下命令:
    ln -s /usr/local/openresty/nginx/sbin/nginx /usr/bin/nginx
    
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用 Certbot 可以很容易地为 Django 应用程序申请 SSL 证书,以加强安全性。以下是一些步骤: 1. 安装 Certbot 在终端中运行以下命令来安装 Certbot: ``` sudo apt-get update sudo apt-get install certbot ``` 2. 获取 SSL 证书 在运行 Certbot 之前,需要确保您的域名已经指向您的服务器。运行以下命令获取 SSL 证书: ``` sudo certbot certonly --webroot --webroot-path /path/to/your/django/app/staticfiles -d yourdomain.com -d www.yourdomain.com ``` 请将“/path/to/your/django/app/staticfiles”替换为您 Django 应用程序的静态文件路径。此命令将为您的域名和 www 子域名获取 SSL 证书。 3. 配置 Django 在 Django 的 settings.py 文件中添加以下内容: ``` SECURE_SSL_REDIRECT = True SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True ``` 以上设置将确保 Django 应用程序只使用 HTTPS 协议,并且会将所有 HTTP 请求重定向到 HTTPS。此外,会将安全头设置为从代理服务器传递的 HTTPS 请求。 4. 配置 Web 服务器 在您的 Web 服务器配置文件中,将 HTTPS 设置为默认协议,并将 SSL 证书路径设置为 Certbot 生成的路径。 例如,在 Nginx 中,可以按如下方式配置: ``` server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ... } ``` 以上设置将确保您的 Web 服务器接受 HTTPS 请求,并将 SSL 证书路径设置为 Certbot 生成的路径。 5. 重新启动 Web 服务器 最后,重新启动您的 Web 服务器以使更改生效。 现在,您的 Django 应用程序已经具有 SSL 证书,可以通过 HTTPS 访问了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值