Git Product home page Git Product logo

certificate's Introduction

Certificate

Build Updated

利用 certbot百度智能云申请、上传证书。

先决条件 🛠️

首先要安装 certbot

$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

如果想要自动化,还要到百度智能云生成密钥,准备./baidu-bce.yaml,内容如下。

access_key: ***
secret_key: ***

申请证书 🆕

使用 certbotLet's Encrypt 申请证书。

新增证书

调用 certbot 申请证书。

# 必须以主域名开头
$ sudo just get-cert "haobit.top,*.haobit.top,*.app.haobit.top"
$ sudo just get-cert "capchdo.com,capchdo.cn,*.capchdo.com,*.capchdo.cn"

现在justfile中配置了certbot-hooks/*.sh,应当可以自动验证。

若未配置,需要按照提示到“智能云解析 - 百度智能云控制台”添加 TXT 记录解析,到服务器上的/path/to/acme-challenge设置 HTTP 验证。

Note

一般来说,如果参数没有改变,只需要设置一次 TXT 记录,无需每次申请时修改;不过 Let's Encrypt 似乎不是这样。

检查证书

查看证书名、域名、有效期等。

$ sudo just show-cert

上传证书 ☁️

baidu-bce上传到百度智能云,从而部署。

Note

在自己服务器(源站)上部署有效证书是不必须的;即使部署了,因为有CDN,用户获取到的证书也不是源站上部署的证书。但是,仍然建议在源站上部署有效证书或CDN供应商提供的证书,并开启CDN的有效证书验证,以保护源站与CDN服务器间的通信。需要注意的是,百度智能云似乎不支持验证源站证书。

安装

下载可执行文件baidu-bce(Linux)或baidu-bce.exe(Windows),放到任意位置并给予合适权限即可。

准备文件

  • 之前申请到的/path/to/certificate/{fullchain,privkey}.pem

    certbot 申请得到的证书。

  • 前述./baidu-bce.yaml

    百度智能云的access_keysecret_key

上传

$ sudo ./baidu-bce upload haobit.top /etc/letsencrypt/live/haobit.top/

自动化 🚀

申请证书

安装 certbot 时已经设置了 cron job 或 systemd timer 自动更新。(之后不用再运行 certbot)

最近设置了 manual hooks,但还未完整测试过,未必能用。

Caution

只是理论上如此,其实从未被验证过。

# 验证自动更新流程
$ sudo just certbot renew --dry-run

# 检查定时任务
$ systemctl list-timers
# 会有一项 snap.certbot.renew.timer。

# 查看任务状态
$ systemctl status snap.certbot.renew.timer

如果自动更新失败,可以直接当成新增证书重来。

上传证书

需要手动设置 cron job。

$ sudo crontab -e -u root

提示编辑,command 一列如下。

…/baidu-bce upload … 2>&1 | logger -t cert

以后可从日志检查上传情况,如下。

$ sudo journalctl --system -t cert

FAQ

为何需要 root 用户?

似乎读写日志等文件需要sudo

有没有其他替代方案?

Cloudflare提供免费的CDN、免费的SSL证书,且支持源站有效证书验证。它易于配置和使用。但是在大陆地区访问速度感人。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.