前言

昨天在配置网站的时候,我使用了nginx做内部转发。

按照一般的做法,配置好网站、nginx、certbot后,我们启动nginx,然后使用certbot颁发证书,就可以了。

但是昨天,就没有生效。

我上网查了查资料,发现let's encrypt有两种颁发证书的方式,一种是http,也就是我上面说的这种方式;另一种是dns,是一种船新的玩法(其实也不新,之前也见过,但是由于我当时用的还是渣tplink的二级域名,就没法用的那种)。

按照教程搞了一波,发现还行,特此记录。

 

前提

首先声明,使用let's encrypt对网站进行https加密时,需要以下前提:

  1. nginx监听80端口,且80端口放通。
  2. 目标网站运行正常。
  3. 可以通过nginx转发到目标网站。

 

DNS对网站加密的步骤

  1. 运行以下命令:

    certbot certonly -d eryoung2.me --preferred-challenges dns --manual --server https://acme-v02.api.letsencrypt.org/directory  #eryoung2.me是我的域名,通过域名解析挂在了本服务器上
    

    按照提示输入必要信息后(主要就是邮箱啦),就会出现此提示:

    -------------------------------------------------------------------------------
    Please deploy a DNS TXT record under the name
    _acme-challenge.eryoung2.me with the following value:
    
    MlXldX2Pj0fA16gsnHn8lfCP0pbRfVSO5gLCto1m7gE
    
    Once this is deployed,
    -------------------------------------------------------------------------------
    Press Enter to Continue
    
  2. 这时,去到域名供应商的域名解析界面,按照上面的提示添加一条TXT解析。

    主机: _acme-challenge

    记录: MlXldX2Pj0fA16gsnHn8lfCP0pbRfVSO5gLCto1m7gE

    如图所示:

    然后在服务器上点击回车,证书就可以颁发下来了。

  3. 成功后,我们可以使用certbot certificates来检查证书状态。

    需要注意的是,let's encrypt的证书有效期为90天,需要定时续期。

    续期可以通过定时任务来做,也可以按照官网的方法,运行此命令来做。

    echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
    
posted on   eryoung2  阅读(632)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-09-24 Mysql错误--Table 'mysql.servers' doesn't exist.
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示