使用ACME搭配freessl网站实现免费https证书的生成和更新

背景

最近在使用netlify的静态网站托管服务, 如果需要自定义域名的话 需要提供https证书, 如下图:

image-20220902113147959

SSL证书介绍

是一种配置在服务器上的数字证书, 由可信的数字证书颁发机构(CA)颁发, 类似于我们的驾驶证, 它具有服务器身份验证和数据传输加密功能。

证书实际上就是几串字符密钥 以文本的形式存放在诸如.key .cer .csr 结尾的文件中:

image-20220902121037323

文件介绍:

  • .key文件: 证书私钥
  • .cer文件: certificate的缩写,这就是数字证书
  • .csr文件:certificate signing request的缩写 证书签名请求文件,含有公钥信息

这些文件需要存放在服务器中, 当浏览器通过域名对服务器进行访问时, 可获取服务器中的证书, 证书中含有公钥

那么浏览器和服务器 一个持有私钥一个持有公钥 进行加密会话 保证数据安全

自制SSL证书

既然所谓的证书就是RSA密钥, 那我们自然可以自己生成, 比如:

在线生成SSL证书

image-20220902142026451

但是这种自己颁发的证书是不被浏览器认可的, 就好比自己给自己手写一张驾驶证, 完全没有任何法律效力

因此我们只能向CA机构申请证书, 国际知名的CA机构有GeoTrustComodoDigiCertSectigoThawteGlobalSignSymantecAlphaSSL

大部分都是收费的, 那么我们要用免费的话, 可以退而求其次,freessl这个平台是个不错的选择

freessl.cn

该网站免费提供由Let's EncryptTrustAsia两家CA机构颁发的SSL证书, 我们注册后即可免费申请, 但是证书有效期只有三个月, 到期后需要重新申请

为了解决自动续期的问题 我们需要用到一个工具, 那就是acme.sh

ACME.SH

acme.sh是一个数字证书管理工具, 利用它我们可以:

  • 辅助申请SSL证书文件到本地
  • 内置定时程序 到期自动申请证书
  • 安装证书到指定目录

GitHub地址

工具使用
  1. 工具安装

    1
    2
    3
    $ git clone https://github.com/acmesh-official/acme.sh.git
    $ cd ./acme.sh
    $ ./acme.sh --install -m my@example.com
  2. 证书申请

    1
    acme.sh --issue -d 域名 -w 证书存放目录

    acme.sh 默认会从zerossl获取证书, zerosslfreessl.cn一样, 也是一个证书中介网站 ,zerossl提供由Let's Encrypt 颁发的数字证书, 每个注册账户可以申请三个免费证书

    image-20220902150909721

    但是 由于免费的数量有限 所以我们不选择从zerossl获取

    如果只是临时测试用的话 可以用一用 直接在官网申请并下载证书zip包即可:

    image-20220902151803041

    image-20220902152401511

    考虑到长期使用, 因此我们选择freessl.cn

  3. freessl.cn获取证书

    freessl支持acme自动化

    在网站输入域名并且进行校验后会生成一个acme地址, 这个地址相当于账号凭证, 利用这个它我们可以借助acme.sh快速获取证书:

    image-20220902152759063

    具体指令如下:

    1
    acme.sh --issue -d 域名  --dns dns_dp --server 你的acme地址

    执行后自动将证书下载到本地:

    image-20220902113332949

    最后我们将证书密钥拷贝至托管服务器中, 这里以netlify为例:

    image-20220902154250607

    填写完后点击安装, 证书成功识别

    image-20220902113754771

    此时 我们即可通过自定义域名访问netlify中的静态网站了, 在浏览器中可以查看当前获取到的证书信息:

    image-20220902141040045

关于自动更新

通常我们会将acme.sh安装至服务器中, 然后实现证书的自动更新, 由于我这边使用的是netlify, 所以三个月到期后需要手动执行一下代码

更多关于acme.sh自动化的用法, 可以参见《acme.sh证书自动部署教程

其他可以获取免费SSL证书的网站

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%