Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 其他分享 › 「教程分享」自签名证书制作 Docker 工具镜像:Certs Maker

「教程分享」自签名证书制作 Docker 工具镜像:Certs Maker

Eswlnk的头像
Eswlnk
2022-10-22 16:58:32
「教程分享」自签名证书制作 Docker 工具镜像:Certs Maker-Eswlnk Blog
智能摘要 AI
本文介绍了一个小巧的SSL证书生成工具,通过Docker镜像实现,镜像仅3MB大小,支持跨平台运行。该工具使用Go语言替代Node.js实现,显著减少了镜像体积,并引入GitHub Actions自动构建流程。用户可快速生成包含多个域名的自签名证书,适用于生产或开发环境。工具提供了多种定制选项,可通过命令行参数或环境变量调整证书信息,包括国家、省份、组织等。此外,支持生成Kubernetes友好的证书配置。工具源码托管于GitHub,地址为[https://github.com/soulteary/certs-maker](https://github.com/soulteary/certs-maker)。

本篇文章介绍一个小巧的 SSL 证书生成工具,考虑到跨平台运行,我将它构建成了 Docker 工具镜像,镜像尺寸只有 3MB 左右,还没有一张手机拍出来的照片大,应该算比较轻量了。你可以使用它简单快速的生成包含多个域名的自签名证书,用在生产或者开发环境中。

「教程分享」自签名证书制作 Docker 工具镜像:Certs Maker-Eswlnk Blog

关于项目

这个工具的完整实现代码,我上传到了 GitHub:https://github.com/soulteary/certs-maker,相较两年前 1.x 版本中,我使用 Node.js 实现,在当前 2.x 新版本中,我选择使用 Go 进行替代实现。

在保持原有功能的前提下,Docker 镜像尺寸从 40多MB 骤降到了 3MB+;原本使用手动构建的镜像,也切换到了使用 GitHub Actions 自动构建,构建产物更加干净透明,“零添加、零污染”,用着更为放心。

快速上手

如果你本地已经安装好 Docker 或者 ctr(containerd),可以直接使用下面这条命令快速生成包含(*.lab.com 和 *.data.lab.com)两个不同域名的证书:

docker run --rm -it -v `pwd`/ssl:/ssl soulteary/certs-maker "--CERT_DNS=lab.com,*.lab.com,*.data.lab.com"

在命令执行完毕之后,我们查看执行命令的目录,将能够看到创建了一个名为 ssl 的目录,里面包含了证书生成配置,以及我们可以直接使用的证书文件:

ssl
├── lab.com.conf
├── lab.com.crt
└── lab.com.key

在去年年初,我分享过如何《如何制作和使用自签名证书[1]》,文章中分享了如何使用 OpenSSL 和自制的证书生成工具来生成自签名的证书。以及聊过了如何在各种系统、常见的 Java 应用中导入我们的生成的证书,有需要的同学可以自行前往了解,这里就不过多展开了。

当然,有的同学会更喜欢使用声明式的“配置文件”,这样做更利于使用 Git 等 CVS 的方式进行保存,便于长期进行生成内容和配置的管理。我们可以考虑使用一个简单的 compose 编排文件来进行证书生成:

version: '2'
services:

certs-maker:
    image: soulteary/certs-maker
    environment:
      - CERT_DNS=lab.com,*.lab.com,*.data.lab.com
    volumes:
      - ./ssl:/ssl

将上面的内容保存为 docker-compose.yml,然后执行 docker-compose up 即可。当命令执行完毕,同样的,我们将能够在当前目录中看到生成好的证书文件和证书配置。

详细定制证书信息

如果你是实用主义者,上面的方案已经能够解决我们在特殊场景或本地开发时的证书签名需求了。

但是,通过上面方式生成的证书文件,使用的信息是程序的默认信息。

「教程分享」自签名证书制作 Docker 工具镜像:Certs Maker-Eswlnk Blog
使用默认配置生成的证书基础信息

如果你是细节控,可以通过调整下面的参数来变更生成证书的相关信息。

调整生成的命令行参数

假如我们使用 docker run 这种 CLI 的方式来生成证书,那么可以在参数中继续添加新的参数来调整证书的生成配置:

docker run --rm -it -v `pwd`/ssl:/ssl soulteary/certs-maker "--CERT_DNS=lab.com,*.lab.com,*.data.lab.com" "--CERT_CN=SOULTEARY"

再次查看生成证书信息,就能够看到信息已经发生了变化。

「教程分享」自签名证书制作 Docker 工具镜像:Certs Maker-Eswlnk Blog
添加一个参数后生成证书的信息

工具支持的完整参数列表如下,可以根据自己的需求来选择使用:

类型名称如何在环境变量中使用
Country NameCERT_C--CERT_C=CN
State Or Province NameCERT_ST--CERT_ST=BJ
Locality NameCERT_L--CERT_L=HD
Organization NameCERT_O--CERT_O=Lab
Organizational Unit NameCERT_OU--CERT_OU=Dev
Common NameCERT_CN--CERT_CN=Hello World
DomiansCERT_DNS--CERT_DNS=lab.com,*.lab.com,*.data.lab.com
Issue for K8sFOR_K8S--FOR_K8S=ON

通过调整环境变量

除了使用命令行参数之外,我们还能够通过改变环境变量来调整生成证书的结果。

比如在上文中的 docker-compose.yml 中,我们想调整城市展示为 TY,组织名称为 Home Lab,那么可以这样调整配置:

version: '2'
services:

certs-maker:
    image: soulteary/certs-maker
    environment:
      - CERT_DNS=lab.com,*.lab.com,*.data.lab.com
      - CERT_ST=TY
      - CERT_O=Home Lab
    volumes:
      - ./ssl:/ssl

完整的环境变量和上文中的参数列表一致,使用起来更简单一些,在使用的时候,我们不需要添加 --CERT_C=CN 参数开头的 “--”,直接使用参数 CERT_C=CN 即可。

类型名称如何在环境变量中使用
Country NameCERT_CCERT_C=CN
State Or Province NameCERT_STCERT_ST=BJ
Locality NameCERT_LCERT_L=HD
Organization NameCERT_OCERT_O=Lab
Organizational Unit NameCERT_OUCERT_OU=Dev
Common NameCERT_CNCERT_CN=Hello World
DomiansCERT_DNSCERT_DNS=lab.com,*.lab.com,*.data.lab.com
Issue for K8sFOR_K8SFOR_K8S=ON

生成 K8s 友好的证书配置

我们在解决 K8s Dashboard 证书问题的时候,有提过可以通过添加 FOR_K8S=ON 参数来生成证书。

如果你参考上文生成的证书是为了 K8s 的 Dashboard 使用,可以参考上文使用配置的方式添加这个参数。

最后

这篇文章就先写到这里了。在后续的实战的内容中,我们会有比较多的场景使用到证书,而自签名证书无疑就是最简单、成本最低、比较安全的方案之一啦。

引用链接

[1] 如何制作和使用自签名证书: https://soulteary.com/2021/02/06/how-to-make-and-use-a-self-signed-certificate.html
[2] 轻量高可用的 K8s 集群搭建方案:MicroK8s: https://soulteary.com/2022/10/15/lightweight-and-highly-available-k8s-cluster-construction-solution-microk8s.html#%E8%A7%A3%E5%86%B3-k8s-dashboard-%E8%AF%81%E4%B9%A6%E9%97%AE%E9%A2%98

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
Dockerk8sSSL环境变量
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「资料分享」计算机网络第七版答案
上一篇
「浏览器拓展」FetchV:网页视频(HLS/m3u8/mp4)下载器
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「亲测有效」Google Gemini 学生优惠:解决身份验证和支付卡验证
  • 解决国际版EdgeOne绑卡和手机验证问题
  • 小工具开发之EdgeOne免费计划兑换工具
  • 「其他分享」市面上静态页面服务商比较与推荐:选择最适合您的平台
  • 「图片优化」利用Cloudflare CDN减少回源Bucket流量
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「其他分享」启用WebP格式图片
2022-08-14 15:39:19
「脚本分享」圣世之光·奥尔德第三关(4命麒麟,克罗/表姐+佩洛打法)
2024-10-31 21:11:39
「其他分享」网站运营其实就是玩SEO策略
2022-08-13 22:57:28

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.502 秒   |  SQL查询 42 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈