本文最后更新于:2025年5月2日 晚上

OHTTPS 是支持证书一站式管理、自动化更新、自动化部署、自动化监控及告警等的HTTPS证书(SSL证书)服务,本文记录相关内容和使用流程。

简介

OHTTPS致力于为用户提供零门槛、简单、高效的HTTPS证书(SSL证书)服务。

支持免费HTTPS证书(SSL证书) 申请、证书一站式管理、自动化更新 、 自动化部署 、 自动化监控。

OHTTPS中所有免费版HTTPS证书/SSL证书均由Let’s Encrypt颁发,受所有主流浏览器信任。Let’s Encrypt是免费、开放和自动化的世界知名证书颁发机构,由非盈利组织互联网安全研究小组(ISRG)运营。Let’s Encrypt已为全世界 45000万 个网站提供HTTPS证书/SSL证书,可放心使用。

OHTTPS中所有付费版HTTPS证书/SSL证书均由Sectigo(原Comodo)颁发,它是全球HTTPS证书/SSL证书市场占有率第一的CA品牌,其产品安全、兼容性广泛、价格优惠,受到大量站长的信任和欢迎。

Let’s Encrypt 官方提供了自动更新证书的方案,但是存在以下几个问题:

只有命令行模式,对于不熟悉命令行的用户使用起来不方便、不直观
自动更新只能做到更新一个节点,如果证书在多个节点使用,不能自动同步更新,需要手动进行同步更新
无法自动部署至云服务商的负载均衡、CDN或证书列表以及Docker容器中等
  为了解决以上三个问题,OHTTPS为用户提供了友好的证书管理界面,方便证书的申请和管理;添加了自动更新和自动部署功能,可在证书更新后自动部署至多个节点,包括阿里云、腾讯云、群晖NAS、百度智能云、七牛云、多吉云、宝塔面板的负载均衡、CDN或证书列表中,以及NGINX、HTTPD、OpenResty容器中等,做到真正的证书更新管理无忧。

  1. 友好的管理界面
    OHTTPS为用户提供了友好的HTTPS证书/SSL证书管理界面。通过管理界面可方便的进行HTTPS证书/SSL证书的申请、查看、吊销等功能,可方便的管理域名的授权验证,以及证书部署节点的配置等。

  2. 证书到期前提醒
    OHTTPS为用户提供了免费的证书到期前提醒服务。如果用户将证书设置为到期前自动通知模式,则在证书到期前,OHTTPS会提前以邮件的形式提醒用户证书即将到期,用户如果未开启自动更新模式,则可在收到通知后及时进行手动更新。

  3. 到期前自动更新
    OHTTPS为用户提供了证书到期前自动更新服务。如果用户将证书设置为到期前自动更新模式,则在证书到期前,OHTTPS会提前重新从Let’s Encrypt或者Sectigo(原Comodo)颁发证书以对证书更新,并及时通知用户更新结果。

  4. 云节点自动部署
    OHTTPS为用户提供了证书更新后自动部署服务。如果用户将证书设置为更新后自动部署模式,则在每次证书自动更新后,将自动部署至用户配置的部署节点,可自动部署至API接口、Webhook、SSH和阿里云、腾讯云、群晖NAS、七牛云、多吉云、宝塔面板的负载均衡、CDN或证书列表中,以及NGINX、HTTPD、OpenResty容器以及自定义容器中,并且可配置同时部署至多个节点。

  5. 免DNS授权模式
    OHTTPS为用户提供了免DNS授权模式,即无需用户提供DNS服务商的增删解析记录接口的授权,对用户更安全、放心。在创建证书时选择免DNS授权模式,只需在您的域名解析中添加指定的CNAME解析记录,即可实现自动更新证书,无需DNS服务商操作解析记录接口的授权。

  6. 多站点证书监控
    OHTTPS为用户提供了多站点证书监控及证书到期告警服务,支持指定域名、IP及端口进行监控,如发现站点证书即将到期,将自动向用户发送即将到期告警通知,提醒用户及时对相关站点证书进行关注和处理,目前已支持邮件、钉钉、企业微信、Slack、Discord、Teams等多种告警通知方式。

我的域名在百度智能云,我这里以百度智能云为例记录使用 DNS 授权的 OHTTPS 使用流程。

创建DNS授权

目前已经支持API接口授权验证的的域名解析服务商包括:阿里云、AWS、GoDaddy、DnsPod.cn(腾讯云)、Cloudflare、华为云、百度智能云。

文档链接:https://ohttps.com/docs/start

  • 登陆百度智能云

打开安全认证,即可看到添加[DNS授权-百度智能云]时参数中所需的AccessKey以及SecretKey。

注意当前 AccessKey 的账户权限,整不明白就给个系统管理员

安全认证地址:https://console.bce.baidu.com/iam/#/iam/accesslist

  • 添加 OHTTPS DNS 授权

登陆 OHTTPS 后,点击左侧 DNS授权 -> 添加DNS授权

填入刚刚申请的 ID 和 Key

添加成功是这样的。

创建HTTPS证书

选择DNS授权模式时创建证书步骤为:

  1. 点击左侧菜单 [证书管理] ,打开证书管理界面
  2. 点击证书管理界面 [创建证书] 按钮,弹出创建证书界面

  1. 选择想要创建的证书类型,证书类型分为:单域名、多域名和泛域名三种

    肯定是 泛域名 香啊。

  1. 在证书类型下方的域名输入框中,输入您想要颁发证书的域名
  2. 选择DNS域名解析服务商,选择对应的DNS授权
  3. 选择刚刚创建的 DNS 授权

  1. 点击授权验证,通知Let’s Encrypt对您输入的域名进行控制权验证。授权验证过程会需要1~2分钟,请耐心等待。

如果失败建议查看账户权限是否可以操作 DNS 服务

  1. 验证通过后,点击创建证书即可完成创建。如果验证失败,可能是因为您的DNS授权参数输入错误,请重新输入后重试。证书创建过程会持续3~10分钟,请耐心等待。

证书创建完成后,可点击证书查看详情。证书详情页显示了证书的更新版本记录和部署记录。证书一旦创建完成,会生成第一版更新记录,点击对应的更新记录,即可查看证书详细内容,包括:cert.key(PEM格式)、cert.cer(PEM格式)、fullchain.cer(PEM格式)。您还可以在证书管理界面,对证书进行命名、搜索、删除、配置等操作。

创建证书部署节点

如果需要将证书部署至阿里云、腾讯云、七牛云、多吉云、宝塔面板的负载均衡、证书列表或者CDN中,或者NGINX、HTTPD、OPENRESTY容器中,以及Webhook、SSH、API、群晖NAS等,需要在部署节点管理界面添加部署节点。

我的需求是将证书部署到 Nginx 容器中,此处记录过程。

生成 令牌

关联已经申请成功的 ssl 证书

点击创建部署节点

创建成功。

Docker - NGINX 证书部署

说明

Docker - NGINX 类型的部署节点用于实现将OHTTPS中申请的HTTPS证书/SSL证书自动化部署至nginx容器中。

使用该镜像时,需要设置以下两个环境变量:

  • PUSH_NODE_ID:即为部署节点创建完成后系统生成的部署节点的ID,部署节点的ID都是以push开头的,样例:push-53ejqm8p60gd7no9
  • PUSH_NODE_TOKEN:即为创建部署节点时,通过点击生成按钮生成的32位令牌,样例:6b2440b1e3f180a3c9453f9d7766a565

在使用该镜像的容器首次启动时,会根据配置的PUSH_NODE_ID和PUSH_NODE_TOKEN从OHTTPS服务器拉取最新版证书,如果PUSH_NODE_ID对应的部署节点被多个证书配置为部署节点,则会同时拉取多个证书,拉取到的证书文件被存放在容器内/etc/nginx/certificates文件夹下,然后按照证书ID为子文件夹进行存放(证书ID为创建证书完成后系统生成的证书的ID,证书的ID都是以cert开头的,样例:cert-2enm4pr1q09g3x5z),则证书文件的全路径为:

  • 私钥文件cert.key(PEM格式):
1
`/etc/nginx/certificates/${证书ID}/cert.key`
  • 证书文件fullchain.cer(PEM格式):
1
`/etc/nginx/certificates/${证书ID}/fullchain.cer`

把上面路径中’${证书ID}'部分换成您的证书ID即为对应文件在容器中的存放路径。注意在容器启动前,请先完成证书部署节点的配置,将证书和部署节点关联,否则会导致容器无法成功启动

部署流程

  1. 拉取 ohttps/ohttps-nginx 镜像
1
docker pull ohttps/ohttps-nginx
  1. 创建 ohttps-nginx 容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
ohttps-nginx:
image: ohttps/ohttps-nginx
container_name: ohttps-nginx
restart: always
ports:
- "3030-3060:3030-3060"
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./ssl:/ssl
- /share/html:/usr/share/nginx/html
- ./certificates:/etc/nginx/certificates
environment:
- PUSH_NODE_ID=push-xxxxxxxxxxxxxx
- PUSH_NODE_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxx
1
docker-compose up -d

完成了 docker 部署。

  1. 修改 conf 文件(示例)

    关键部分为 证书路径

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
user  nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/certificates/cert-2enm4pr1q09g3x5z/fullchain.cer;
ssl_certificate_key /etc/nginx/certificates/cert-2enm4pr1q09g3x5z/cert.key;

include /etc/nginx/default.d/*.conf;

location / {
root /usr/share/nginx/html;
index index.html;
}
}
}

部署效果

部署成功 ~

参考资料



文章链接:
https://www.zywvvd.com/notes/coding/internet/ohttps/ohttps/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

OHTTPS 实现免费自动 https 证书申请、更新、部署
https://www.zywvvd.com/notes/coding/internet/ohttps/ohttps/
作者
Yiwei Zhang
发布于
2025年5月2日
许可协议