【为域名申请免费的SSL证书,实现启用HTTPS加密】

为域名申请免费的SSL证书,实现启用HTTPS加密

前言

最近打算要部署一些个人项目, 打算申请SSL证书来实现HTTPS加密。
以下是我个人的实践过程和一些遇到的问题。我是用了两台服务器:一台是系统为Ubuntu20的服务器和一台系统为Centos7.9的服务器。都是阿里云上的服务器(也是白嫖的服务器(bushi))。拿来练练手。
注意: 申请证书是需要域名的,因为证书是和域名进行绑定的,不是和ip地址进行绑定的!!!

Let’s Encrypt 简介

  • Let’s Encrypt是一个免费的证书颁发机构,致力于提供简单易用的HTTPS加密证书。它由非盈利组织Internet Security Research Group(ISRG)发起,目的是让整个互联网更加安全、私密和安全。Let’s Encrypt提供了一个自动化的、开放的、免费的和可信的证书颁发服务,使得任何人都可以在自己的网站上启用HTTPS加密,从而保护用户的隐私和安全。

  • Let’s Encrypt的证书使用ACME协议进行颁发和管理,该协议是一个开放标准,许多客户端和工具都支持它。颁发的证书可以使用最新的加密算法和密钥长度,并且支持所有现代Web浏览器。

  • 使用Let’s Encrypt证书可以保证网站数据的加密传输,防止黑客窃取用户的个人信息,提升网站的安全性和可靠性。

  • 比如:Vercel这个平台也是通过 Let’s Encrypt 来为其托管的项目提供 SSL 证书的。Vercel 的架构允许开发者将其前端应用和后端服务一起部署,而 Vercel 可以通过 Let’s Encrypt 为这些服务自动申请 SSL 证书,让其变得更加安全。

Certbot是一个由Let’s Encrypt提供的免费、开源的自动化证书颁发工具,可以轻松地在服务器上安装、更新和管理Let’s Encrypt证书。Certbot可以与许多不同的Web服务器和操作系统集成,包括Apache、Nginx和Docker等。使用Certbot,您可以自动为您的网站配置SSL/TLS,使您的网站更加安全和可靠。

Ubuntu上的用法:

Certbot 是一个 Let’s Encrypt 提供的免费证书申请工具,可以用它来快速、简单地获得 Let’s Encrypt SSL 证书。以下是 Certbot 的基本使用方法:

  1. 安装 Certbot:可以按照 Certbot 的官方文档来安装 Certbot,不同的操作系统安装方式略有不同。例如,在 Ubuntu 系统上,使用以下命令来安装 Certbot:
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

这将安装 Certbot 工具和与 Nginx 服务器的插件。

  1. 申请证书:在安装 Certbot 后,你可以使用以下命令来申请 SSL 证书:
sudo certbot --nginx -d example.com

其中 example.com 是您要申请证书的域名。此命令将向 Let’s Encrypt 发出证书申请,并自动配置 Nginx 服务器以使用该证书。

  1. 自动续期证书:Let’s Encrypt 的 SSL 证书有效期只有 90 天,因此您需要定期续期证书。Certbot 可以自动续期证书,你可以使用以下命令启用自动续期功能:
sudo certbot renew --dry-run

此命令将在测试模式下运行,以确保自动续期功能正常工作。如果一切正常,你可以从 cron 任务中运行此命令以定期续期证书。

请添加图片描述

以上是 Certbot 的基本操作步骤,具体使用过程中,还可以根据您的需要和场景选择不同的插件和参数来进行配置。

注意 : 发生报错很大可能是域名没有备案被限制了! 或者是你的端口号80或433没有开启

Centos上的用法

Certbot 是一个开源工具,用于自动化获取和续订 Let’s Encrypt SSL 证书。以下是在 CentOS 上使用 Certbot 获取证书的步骤:

  1. 安装 EPEL 源:在 CentOS 上使用 Certbot 需要先安装 EPEL 源。可以通过以下命令安装 EPEL 源:

    sudo yum install epel-release
    
  2. 安装 Certbot:使用以下命令安装 Certbot:

    sudo yum install certbot python3-certbot-nginx
    

    这将同时安装 Certbot 和 Certbot 插件,以便与 Nginx 一起使用。

  3. 获取证书:运行以下命令以获取证书:

    sudo certbot --nginx -d example.com -d www.example.com
    

    将 “example.com” 和 “www.example.com” 替换为你要申请证书的域名。该命令会通过 Nginx 配置自动配置 SSL 证书,并启用 HTTPS。

    可能会出现下面的问题

    请添加图片描述

    这个错误提示是因为Certbot的Nginx插件未安装。可以通过以下命令安装:

    sudo yum install certbot-nginx
    

    请添加图片描述

    上面提示让你输入你的邮箱, 方便证书申请成功或者到期通知

    请添加图片描述

    输入y

    请添加图片描述

    输入y

    请添加图片描述

    这个错误提示是因为在申请证书时同时使用了通配符域名和子域名,而 Let’s Encrypt 不支持在同一个证书中同时包含通配符域名和其对应的子域名。

    可以尝试使用以下命令来申请两个单独的证书,一个包含通配符域名,一个包含子域名:

    sudo certbot --nginx -d *.example.com
    sudo certbot --nginx -d www.example.com
    

    请添加图片描述

    根据错误信息,Certbot 无法找到与 www.zenytech.xyz 匹配的 Nginx 服务器块。你需要在 Nginx 配置文件中为该域名添加一个服务器块,并设置 server_name 指令以匹配您的域名。需要执行以下步骤:

    1. 打开 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default

      请添加图片描述

      先备份一份源文件 : cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

      请添加图片描述

      然后使用vi进行修改

      vi /etc/nginx/nginx.conf, 按i键进入编辑

    2. 在文件中查找 server 块。如果找不到,请添加一个新的 server 块。

      请添加图片描述

    3. server 块中添加以下内容:

      server_name www.zenytech.xyz;
      

      请添加图片描述

      退出按Esc键, 输入:wq保存并退出

    4. 使用nginx -t命令检查配置文件语法是否正确

    5. 重新加载 Nginx:

      sudo systemctl reload nginx
      
    6. 然后再次运行 Certbot 命令:

      sudo certbot --nginx -d www.zenytech.xyz
      

    请添加图片描述

    如果你希望续订并更新证书,则选择2。如果你只是想重新安装现有证书,则选择1。选择取决于你是否需要新证书并是否想继续更新当前证书。这里选择1。

    在Ubuntu上使用Certbot申请证书时,通常情况下Certbot会自动检测你的Nginx配置文件,并根据域名配置HTTPS支持。但是在某些情况下,如果你的Nginx配置文件比较复杂,Certbot可能无法正确检测并修改配置文件。这时,你需要手动修改Nginx配置文件,以便让Certbot能够正确地为你的域名申请证书。

    在CentOS上也是一样,如果你的Nginx配置文件不够简单,那么可能需要手动修改配置文件以确保Certbot能够正确检测和修改配置。

    请添加图片描述

    已经成功地使用 Certbot 申请了证书并将其部署到您的 Nginx 服务器上。可以通过访问 https://www.zenytech.xyz 来检查证书是否正常工作。同时,Certbot 给出了一些支持的捐款链接,如果喜欢 Certbot,可以考虑向相关的组织进行捐赠以支持他们的工作。(学生党一般不考虑这个问题,不然我还要你免费的证书干嘛

    再试一下申请sudo certbot --nginx -d *.zenytech.xyz 这个通配符的网站

    同样也需要修改Nginx中的配置

    在 CentOS 上,Certbot 不会自动修改 Nginx 配置文件。因此,在申请通配符证书之前,你需要手动修改 Nginx 配置文件,以便包括这两个域名。而在 Ubuntu 上,Certbot 将自动修改 Nginx 配置文件。

    输入vi /etc/nginx/nginx.conf, 按i键进入编辑

    在 Nginx 配置文件中的 server_name 部分,可以这样写:

    server_name zenytech.xyz *.zenytech.xyz;
    

    请添加图片描述

    Esc退出, 输入:wq退出vi编辑并保存

    然后再输入

    sudo certbot --nginx -d *.zenytech.xyz
    

    进行证书申请

    请添加图片描述

    哦豁, 发生报错: 错误提示表明 Let’s Encrypt CA 不支持当前选择的认证方式并满足证书颁发的要求,因此建议尝试使用支持 DNS 挑战的认证插件进行证书申请。DNS 挑战可以通过在域名 DNS 解析记录中添加特定的 TXT 记录来验证域名的所有权。可以尝试使用 Certbot 插件 certbot-dns-cloudflarecertbot-dns-google 等来完成 DNS 挑战。在使用这些插件之前,你需要先进行相应的配置并且确保 DNS 解析已经生效。

    经查询:Certbot默认使用HTTP-01或TLS-ALPN-01验证方式,而这两种方式在使用通配符证书时并不可用。通配符证书只能使用DNS-01验证方式。

    ok, 那么麻烦的话就先不申请了!

  4. 自动续订证书:Certbot 证书默认有效期为 90 天。为了确保你的网站始终使用有效的证书,建议设置自动续订。使用以下命令测试自动续订:

    sudo certbot renew --dry-run
    

    可能会发生以下问题:

    请添加图片描述

    发生了报错, 根据日志来看,LetsEncrypt试图使用HTTP-01的验证方式来验证证书,但是在尝试访问http://www.zenytech.xyz/.well-known/acme-challenge/JdKTFlJKPtaaea13iyZ9r2uZLn41rD5teaaSabKEVPc时,返回了403 Forbidden错误,导致验证失败。我尝试着用浏览器访问这个链接, 发现:

    请添加图片描述

    因为是使用国内的服务器,而且域名没备案, 所以被封禁了。。。。

    因为阿里云新申请的域名,还没备案成功

    阿里云的备案链接: https://beian.aliyun.com/order/index.htm?spm=a2c4g.36922.0.0.683a770eyvoiXC

    如果测试成功,则将在证书到期之前自动更新证书。建议将该命令添加到 crontab 中,以在每次证书过期前自动续订证书:

    sudo crontab -e
    

    然后添加以下行:

    0 0 1 * * certbot renew
    

    这将在每个月的第一天检查证书是否需要更新,并在需要时自动更新它们。

可以使用以下命令检查证书的有效期:

sudo openssl x509 -noout -dates -in /etc/letsencrypt/live/xxxxxxxxx/fullchain.pem

注意替换域名:xxxxxxxx替换成你的域名
比如我的域名为www.zenytech.xyz

sudo openssl x509 -noout -dates -in /etc/letsencrypt/live/www.zenytech.xyz/fullchain.pem

该命令将显示证书的开始和过期日期。如果证书已过期,你需要重新申请证书。

上诉操作是申请SSL证书并为Nginx配置好,申请成功后, 可以试试使用域名进行访问你的Nginx服务(注意域名可能需要备案,不然会被封掉,访问不了),若能访问域名的话,你就会看到浏览器那栏是https的请求,说明证书能使用和进行加密了。

申请的证书都默认放在/etc/letsencrypt/live/目录下
在这里插入图片描述
如果其他应用需要使用https安全加密,可以使用证书进行配置,注意证书是和域名进行绑定的,不是和服务器的IP地址绑定的.所以如果你是拿ip地址去访问,尽管有https,但浏览器还是提示不安全的连接
在这里插入图片描述

ok,以上就是我申请SSL证书的全过程!

Tips :

  • 如果没有域名或者服务器, 可以去阿里云的免费试用那里领取使用(白嫖)
    https://free.aliyun.com 可以领取一年0元的(top,xyz,love)域名试用,还有三个月的服务器试用。(白嫖不亏)

  • 学生的话,可以领取学生优惠, 能领取7个月的免费服务器
    https://developer.aliyun.com/plan/student
    需要的话自行探索!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值