您的位置:首页 > 文旅 > 美景 > 德州疫情最新消息今天封城了_建筑网官网道辉工程建设有限公司_怎么自己做一个网站平台_网站统计数据分析

德州疫情最新消息今天封城了_建筑网官网道辉工程建设有限公司_怎么自己做一个网站平台_网站统计数据分析

2024/10/5 19:13:27 来源:https://blog.csdn.net/qq_23435961/article/details/142515866  浏览:    关键词:德州疫情最新消息今天封城了_建筑网官网道辉工程建设有限公司_怎么自己做一个网站平台_网站统计数据分析
德州疫情最新消息今天封城了_建筑网官网道辉工程建设有限公司_怎么自己做一个网站平台_网站统计数据分析

Certbot自动申请并续期https证书

一、

  1. 安装 Certbot:使用命令安装 Certbot:

    dnf install certbot python3-certbot-nginx
    
  2. 获取 SSL 证书:运行 Certbot 命令来获取并安装 SSL 证书。
    示例命令,替换其中的域名和路径信息:

    如果使用源码安装,并且没有加入环境变量需要做软连接
    ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
    ln -s /usr/local/nginx/conf/ /etc/nginx#只生成证书
    certbot certonly --nginx -w /data/web -d zhongta.ponytest.com --register-unsafely-without-email
    #生成证书把那个改配置
    certbot --nginx -w /data/web -d zhongta.ponytest.com --register-unsafely-without-email#或者也可以直接指定nginx的目录,根据python版本不一样安装
    yum install certbot python-certbot-nginx
    或者
    dnf install certbot python3-certbot-nginxcertbot --nginx --nginx-server-root /usr/local/nginx1.24/conf --nginx-ctl /usr/local/nginx1.24/sbin/nginx --domain cloud.ponytest.com --register-unsafely-without-email
    

    这将使用 Certbot 的 webroot 插件来进行验证,并为你的域名生成 SSL 证书。确保将 -w /path/to/your/website 替换为你网站的根目录路径,your-domain.com 替换为你的实际域名。

  3. 设置自动续期:Certbot 支持设置自动续期任务,以确保你的 SSL 证书在到期前得到更新。你可以使用系统的计划任务工具(如 cron)来定期运行 Certbot 命令。
    示例:
    cron 任务配置,每天凌晨 2 点自动运行 Certbot:

    0 2 * * * certbot renew --quiet
    

    请使用合适的编辑器打开计划任务配置文件(通常是 /etc/crontab),将上述命令添加到文件末尾,并保存文件。Certbot 每天凌晨 2 点自动检查证书是否需要续期,并在需要时更新证书。

二、使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书

Certbot 支持自动申请 LetsEncrypt 的泛域名证书,但是官方插件不支持阿里云,在 GitHub 搜索发现已经有人写好了阿里云 DNS 插件,下面只需要进行简单的配置即可免费申请一个泛域名证书并自动续订。

一)、安装cerbot

yum install epel-release -y
yum install certbot -y

二)、申请证书

域名分为主域名 test.com 和泛域名 *.test.com。

理论上泛域名证书可以同时用在主域名和泛域名上面,不知道为什么我的主域名用了泛域名的证书,chrome 提示我的证书无效。 于是我分开申请了两个证书,有知道解法的同学告知一下。

执行以下命令:

# 泛域名:
certbot certonly -d *.test.com --manual --preferred-challenges dns# 主域名:
certbot certonly -d test.com --manual --preferred-challenges dns

这时会出现下图的界面

image.png

你需要按照提示,在你的域名服务商处,添加对应的 DNS TXT 解析记录。

配置好之后,按回车继续。

如果成功的话,它会生成两个文件:

  • /etc/letsencrypt/live/test.com/fullchain.pem
  • /etc/letsencrypt/live/test.com/privkey.pem

三)、nginx 配置

接下来配置 nginx 配置,我主要使用 nginx 代理我的前端项目,nginx 请自行安装。

我的 nginx 默认配置文件在 /etc/nginx/nginx.conf。当子域名很多的时候,这个文件就会很庞大,所以我把所有域名的配置都拆分到一个/etc/nginx/conf.d 文件夹。

www.test.com 为例,在/etc/nginx/conf.d 文件夹下新建一个 www.test.com.conf 文件,内容如下:

server {listen 443 ssl;# 子域名server_name  www.test.com;# 这里是你证书的位置ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;root /usr/share/nginx/html;location / {# 指向前端资源的路径root   /home/webapps/test-app/dist;index  index.html;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}
}

nginx.conf 配置如下:

http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 2048;include             /etc/nginx/mime.types;default_type        application/octet-stream;# 这里是防止别人恶意解析server {listen 80 default_server;server_name _;access_log off;return 404;}server {listen 443  default_server;server_name _;ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem;access_log off;return 404;}# 这里配置强制把 http 转换成 httpsserver {listen       80;server_name  test.com;root         /usr/share/nginx/html;return 301 https://$host$request_uri;}server {listen       80;server_name  *.test.com;root         /usr/share/nginx/html;return 301 https://$host$request_uri;}# 这里需要把之前拆分出去的配置引入进来include /etc/nginx/conf.d/*.conf;
}

执行nginx -s reload,没问题的话,在浏览器输入域名,已经可以看到 HTTPS 的小锁了。

四)、续期

手动续期:

你只需要在到期前,再手动执行生成证书的命令
certbot certonly -d *.test.com --manual --preferred-challenges dns
再重复一下配置 DNS 解析的操作就 OK 啦。

自动续期:

certbot 提供了一个 hook,让我们可以编写一个 Shell 脚本。在续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录。

安装和使用指南可看 README。

  1. 安装 aliyun cli 工具

    wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
    tar xzvf aliyun-cli-linux-latest-amd64.tgz
    sudo cp aliyun /usr/local/bin
    rm aliyun
    

    安装完成后需要配置凭证信息

  2. 安装 certbot-dns-aliyun 插件

    wget https://cdn.jsdelivr.net/gh/justjavac/certbot-dns-aliyun@main/alidns.sh
    sudo cp alidns.sh /usr/local/bin
    sudo chmod +x /usr/local/bin/alidns.sh
    sudo ln -s /usr/local/bin/alidns.sh /usr/local/bin/alidns
    rm alidns.sh
    

    申请证书

    测试是否能正确申请:

    certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run
    

    正式申请时去掉 --dry-run 参数:

    certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"
    

    证书续期

    certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run
    

    如果以上命令没有错误,把 --dry-run 参数去掉。

  3. 自动续期

    添加定时任务 crontab。

    crontab -e
    

    输入

    1 1 */1 * * root certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"
    

    上面脚本中的 --deploy-hook "nginx -s reload" 表示在续期成功后自动重启 nginx。

生成也可以用:

# 泛域名
certbot certonly -d *.test.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"

续费命令:

# 续费命令
certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"

然后再利用 crontab 定时任务,每天执行一下自动续期。

1 1 */1 * * root certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"

h-hook “alidns” --manual-cleanup-hook “alidns clean”


然后再利用 crontab 定时任务,每天执行一下自动续期。```bash
1 1 */1 * * root certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com