- Một dev Ba Lan vừa thả TinyPKI lên GitHub — web GUI + JSON API bọc quanh Smallstep step-ca, kèm invitation flow để non-technical user tự enroll X.509 cert qua trình duyệt.
- Home lab và SMB chạy mTLS giờ có thêm một món nhẹ hều.
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.

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
| Property | Value |
|---|---|
| License | MIT |
| Languages | Python 70.4% · HTML 19.3% · JS 5.1% · Shell 2.2% · CSS 1.2% · PL/pgSQL 1.1% |
| Storage | PostgreSQL |
| Tested với | step-ca v0.29.0 · step CLI v0.29.0 (2025-12-03) |
| Repo | 12 stars · 1 fork · 1 contributor · 7 commits (tại 2026-04-19) |
| Interface | Web GUI + JSON API (full parity) |
| Revocation | Qua GUI, sử dụng cơ chế step-ca |
Comparison
| Tool | Type | Invitation UX | Revoke từ UI |
|---|---|---|---|
smallstep/certificates (step-ca) | CA core, CLI | Không có | CLI |
stone-w4tch3r/step-ca-webui | Read-only dashboard + logs | Không | Hạn chế |
hakwerk/labca | Private ACME (fork Let's Encrypt Boulder) | ACME-only | Có |
| icedevml/tinypki | GUI + API wrapper cho step-ca | Có — one-time code + browser key-gen | Có — 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.mdtrong 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.


