TL;DR

TinyPKI là một wrapper web cho Smallstep step-ca vừa được tác giả icedevml (Michał Leszczyński) công bố trên X. Nó biến một private CA vốn CLI-first thành một admin panel click-to-go: index toàn bộ X.509 cert đã phát hành, xem chi tiết, revoke bằng một nút, và — điểm đáng chú ý nhất — có Invitations, cho phép admin gửi mã one-time để người dùng không rành kỹ thuật tự sinh key trong trình duyệt và lấy cert về máy. MIT license, Python + Postgres, tested với step-ca v0.29.0.

Giao diện TinyPKI hiển thị index X.509 certificates của Step CA

What's new

Cho đến cuối 2025, hệ sinh thái quanh step-ca vẫn nặng về CLI và config YAML. Có vài dashboard cộng đồng (vd stone-w4tch3r/step-ca-webui) nhưng chủ yếu read-only. TinyPKI mang tới ba mảnh mà admin home lab / SMB hay thiếu cùng lúc:

  • Live index toàn bộ cert step-ca từng phát hành, có filter / pagination / search
  • Detail view cho từng cert, kèm nút Revoke ngay trên UI
  • Invitations: admin tạo one-time code → gửi link cho user → user mở trình duyệt, key được sinh ngay trên máy user, cert được collect về, admin không cần chạm CLI

Mọi tính năng đều có ở cả Web GUI lẫn JSON API — script được, GUI cũng được.

Why it matters

Private CA là một trong những món hay được khuyến nghị cho homelab và SMB (mTLS cho VPN, service-to-service, client-auth cho Git, SSH qua cert, internal web apps) nhưng rào cản chính luôn là UX: bạn không thể ngồi bên cạnh bà kế toán và gõ step ca certificate cho laptop của sếp. Invitation flow của TinyPKI xử lý đúng khoảng trống đó — user chỉ thấy một link, một nút, một file cert.

Ngoài ra key generation trong trình duyệt có nghĩa private key không bao giờ rời máy user, kể cả admin cũng không thấy — đúng nguyên tắc của PKI.

Với SMB, đây cũng là cách thoát khỏi mô hình "tải một file .p12 có password gửi qua email / Slack" vốn vừa lộ key vừa khó revoke. Admin tạo invitation, link tự hết hạn, user chỉ thấy một bước bấm nút; mọi thao tác đều đi qua step-ca nên audit trail không thay đổi.

Technical facts

PropertyValue
LicenseMIT
LanguagesPython 70.4% · HTML 19.3% · JS 5.1% · Shell 2.2% · CSS 1.2% · PL/pgSQL 1.1%
StoragePostgreSQL
Tested vớistep-ca v0.29.0 · step CLI v0.29.0 (2025-12-03)
Repo12 stars · 1 fork · 1 contributor · 7 commits (tại 2026-04-19)
InterfaceWeb GUI + JSON API (full parity)
RevocationQua GUI, sử dụng cơ chế step-ca

Comparison

ToolTypeInvitation UXRevoke từ UI
smallstep/certificates (step-ca)CA core, CLIKhông cóCLI
stone-w4tch3r/step-ca-webuiRead-only dashboard + logsKhôngHạn chế
hakwerk/labcaPrivate ACME (fork Let's Encrypt Boulder)ACME-only
icedevml/tinypkiGUI + API wrapper cho step-caCó — one-time code + browser key-genCó — 1 click

Nói ngắn: step-ca lo phần "CA engine", TinyPKI lo phần "UX cho người". Hai phần bù nhau, không thay thế nhau.

Use cases

  • Home lab: mTLS giữa các service nội bộ, SSH qua SSH certificate, không cần tự viết script onboarding
  • SMB: cấp client cert cho laptop nhân viên để vào VPN hoặc internal apps mà không cần IT ngồi cạnh
  • Dev team: cấp cert cho CI runner, staging box, IoT device qua API, review trên GUI
  • Audit: nhìn một chỗ biết ai đang có cert hợp lệ, hạn ngày nào, revoke ai mới rời team

Limitations & pricing

  • Pricing: miễn phí, MIT, self-hosted — bạn tự host, tự chịu trách nhiệm bảo mật
  • Project còn rất mới: 7 commit, 1 maintainer, 12 sao tại thời điểm viết — phù hợp lab / SMB thử nghiệm, chưa nên phụ thuộc cho prod enterprise-critical
  • Yêu cầu đã có step-ca chạy trước; TinyPKI không tự làm CA
  • Thêm một service Python + một Postgres DB vào stack — vận hành đơn giản nhưng vẫn là surface area
  • Các giới hạn của step-ca vẫn áp dụng: không có active CRL kiểu truyền thống, không có CT log, không có device attestation — đọc kỹ docs/security-guidelines.md trong repo
  • Chưa có Docker/compose chính thức được nhấn mạnh trong README; setup theo doc tác giả cung cấp

What's next

Dự án mới public, roadmap chưa công khai, một tay code. Kỳ vọng hợp lý trong vài tháng tới: Docker image chính thức, ACME provisioner tích hợp, audit log, OIDC login cho admin panel, và hy vọng có thêm maintainer. Nếu bạn chạy homelab hoặc cấp cert cho team < 50 người, đây là món đáng star + thử ngay trên một instance step-ca test.

Cách thử nhanh nhất: dựng một step-ca trong container, trỏ TinyPKI vào CA đó qua provisioner JWK, tạo một invitation, mở link bằng trình duyệt khác, và xem cert rơi xuống máy trong vài giây. Toàn bộ flow mất chưa tới 10 phút nếu bạn đã có step-ca; và ngay cả khi bạn chưa quen mTLS, đây có lẽ là đường vào ít ma sát nhất hiện tại.

Nguồn: icedevml/tinypki, Smallstep step-ca docs, announcement tweet.