OHTTPS,一款免费且好用的SSL证书管理工具

image-20201019191415094

自建站SSL证书的痛点

自己瞎折腾,搭建了一个个人的博客平台(https://lupf.cn);作为程序员,B格还是得有的,因此,SSL证书也就必须得安排上呢,不然一访问,显示不安全的链接,有点丢不起那个人。可是,各大云平台的免费SSL证书,都只支持二级域名,没办法配置泛域名,导致每添加一个二级域名,就得新申请一个SSL证书,假如都到期了话,就得全部重新申请一遍,重新配置一遍,着实麻烦;如果要使用泛域名,就得付费购买,一年小几千的;而对于白嫖党,花这笔几K的费用,着实有点不划算;因此就盯上了Let’s Encrypt证书,其泛域名证书免费,唯一不太好的就是,证书只有三个月。但是这三个月的有效期又成为了一个新的问题,以至于每过三个月,就得重新申请一次,替换,又是个麻烦事儿。我想对于自建站点的,应该都有遇到这个问题(土豪除外)。

问题点

泛域名证书解决了,如何解决自动更新的问题?

使用ACME自动更新证书(不推荐)

使用ACME确实解决了我云服务器上面的证书问题,配置脚本自动检测,快到期的时候,自动更新证书,然后重启NG,但是解决了一个自动更新服务器证书的问题,但是遇到了另外两个新的问题:

  1. 证书更新异常

    可能是我自己配置的问题,偶尔会出现自动更新失败的情况

  2. CDN无法更新

    CDN的https证书(SSL证书)是单独配置的,各个云服务商是可以申请SSL证书或者上传SSL证书,然后CDN去关联证书进行配置

    通过ACME解决了服务器的证书问题,但是CDN的证书只能手动上传到云服务商;至此,和手动更新就没有什么区别。

    但是呢,各大服务商都提供了API允许通过代码的方式去上传,那有没有什么工具可以帮助我们上传呢?

无意间,一位大神在我一篇申请腾讯云免费SSL证书的博客下评论了一个他自己开发的工具;从此开启了一个新的世界;

image-20201018225908869

使用ohttps更新证书(推荐使用)

经过我的个人亲测,完美解决了我的问题,且云服务的NG,CDN的证书,都能够正常的管理且自动更新;

作者的文档写的已经很好了,这里只是将部署过程中遇到的一些小小的问题归纳总结一下,方便大家的快速使用;

同时,鉴于作者对我的帮助,这里帮着推广一下。

证书申请
  1. 注册账户

    入口: https://www.ohttps.com?invitationCode=dyq1zry5ew07lgn6

  2. 添加域名
    image-20201018230736003

  3. 添加域名解析
    image-20201018230831331

​ 上面可以看到你域名对应的主机记录记录值,然后在你的域名解析下添加上面的记录,注意下面红色箭头的地方image-20201018231139606

  1. 申请证书
    image-20201018231330022

    到此,证书就已经申请完成了

Nginx配置自动更新证书

ohttps采用的是通过Docker的方式部署Nginx

作者提供了nginx的镜像,封装了nginx自动更新ssl证书相关的功能,对使用者来说跟使用官方的Nginx没有任何区别

因此,只需要基于作者提供的Nginx的镜像启动服务即可轻松配置自动更新

如果不知道docker及docker-compose的,可以参考这篇博客: https://lupf.cn/articles/2019/11/16/1573896114527.html

  1. 下载镜像

    docker pull ohttps/ohttps-nginx
    // 上面的下载可能比较的慢,建议作者上传了一个阿里云的镜像,下载方式如下
    docker pull registry.cn-hangzhou.aliyuncs.com/ohttps/ohttps-nginx
    
  2. 申请Docker推送的id及key
    image-20201018234216359
    得到令牌消息,如下的节点名称、关联证书令牌记录一下,后续会使用到。
    image-20201018234327657

  3. 创建nginx的配置文件;nginx.conf

    注意下面的ssl_certificate配置和ssl_certificate_key配置中cert-xxxx对应上面的关联证书id

    域名修改为你的个人域名

    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.test.com;
            ssl_certificate     /etc/nginx/certificates/cert-xxxx/fullchain.cer;
            ssl_certificate_key /etc/nginx/certificates/cert-xxxx/cert.key;
    
            include /etc/nginx/default.d/*.conf;
    
            location / {
                root   /usr/share/nginx/html;
                index  index.html;
            }
        }
    }
    
  4. 创建并配置docker-compose.yml

    文件和nginx.conf放在同一个目录

    注意下面的PUSH_NODE_IDPUSH_NODE_TOKEN对应上面的节点名称令牌

    version: "2"
    
    services:
      nginx: 
        container_name: ohttps-nginx
        image: ohttps/ohttps-nginx
        restart: always
        ports:
          - "80:80"
          - "443:443"
        environment:
          PUSH_NODE_ID: "push-xxxx"
          PUSH_NODE_TOKEN: "xxxxxxxx"
        volumes:
          - $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
          - $PWD/conf/conf.d:/etc/nginx/conf.d
          - $PWD/html:/usr/share/nginx/html
          - $PWD/logs:/var/log/nginx
    
  5. 启动镜像

    注意要在nginx.conf对应的目录下执行,因为下面用到了$PWD/nginx.conf寻找配置

    docker-compose -f docker-compose.yml up -d
    

    启动之后,进入到对应的镜像,然后在/etc/nginx/certificates目录下看是否已经更新了对应的证书;如果对应的目录下存在cert.keyfullchain.cer证书,说明自动更新成功了;

    docker exec -it ohttps-nginx /bin/bash
    cd /etc/nginx/certificates
    ls
    ls cert-xxxx
    

    image-20201019000058904

  6. 测试证书

    访问站点,看对应的证书如下图,说明正常

    image-20201019000437604

CDN证书上传(以腾讯云CDN为例)

ohttps官方还支持阿里云、七牛云的CDN

  1. 腾讯云开启访问权限(重要,开启api接口访问权限)

    ohttps官方教程如下: https://ohttps.com/docs/cloud/tcloud/cdn

    拿到对应的SecretId和SecretKey

  2. 添加部署节点
    image-20201019174918154image-20201019174901954

    后面步骤一样的

  3. 手动部署

    image-20201019002309510

    ​ 上传成功之后,可以在:https://console.cloud.tencent.com/ssl 下查看;如下图所示,这两个证书已经关联了我个人的CDN,所以完全无需进行手动配置了。

    image-20201019002447181

CDN配置(腾讯云为例)
  1. 添加域名

    官网地址: https://console.cloud.tencent.com/cdn/domains
    image-20201019173519044
    image-20201019173905111
    image-20201019180050781

  2. 配置https证书
    image-20201019180530484
    ​ 添加完之后,CDN中就自动关联上对应域名的配置
    image-20201019180805842

  3. 添加CDN的域名解析
    image-20201019181319327
    添加完之后,cdn中红色的警告消失了,说明配置正常
    image-20201019181501253

    到这里,CDN相关的配置也就完了

证书监控

可以在下图的地方添加证书网站证书的监控,会在每天凌晨3点检测证书剩余有效期,如果达到自动更新的阈值,就会进行自动更新操作。

image-20201019183104894

自动更新

官方默认会在到期的前30天自动更新,如果没有更新成功的话,会在到期的前20天以邮件的形式提醒,如果有什么问题,也可以手动更新,也就只是点吧点吧就好了,很简单的。

关于收费

ohttps是使用虚拟币进行支付的,注册就送1000个币,每次自动部署单节点扣除50,手动部署扣除25;1000个也足够用好久了,推荐用户还可以赠送1000,这样就相当于免费使用了,币没有了,推荐那么几个用户就又可以用上几年了,再说,好东西不就应该让更多的人知道,更多的人使用麽;就算是付费,作者的收费也很便宜,1分钱一个币;单次部署就仅仅几毛钱;却能为我们省去那么多事儿。赞!!!快用起来吧!

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一行Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值