Step CLI: Công Cụ Dòng Lệnh Quản Lý PKI
Step CLI là một công cụ command-line của Smallstep để xây dựng, vận hành và tự động hoá PKI X.509 và SSH, cùng các thao tác JWT, OAuth và TOTP, trong một binary Go. Nó chạy độc lập, hoặc làm client cho server certificate authority step-ca. Hãy dùng nếu bạn muốn một CLI duy nhất cho chứng chỉ, token và OTP thay vì dùng nhiều công cụ riêng lẻ; bỏ qua nếu bạn chỉ cần một chứng chỉ ACME cho một server.
Tìm Hiểu Về Step CLI
Step CLI là client command-line mã nguồn mở của Smallstep cho chứng chỉ X.509, chứng chỉ SSH, và token JOSE/OAuth, phân phối dưới dạng một binary Go duy nhất theo giấy phép Apache-2.0. Các lệnh được nhóm theo miền — certificate, ca, crypto, oauth, và ssh — nên một cặp key cục bộ, một server step-ca online, hay một CA ACME như Let's Encrypt đều đi qua cùng một công cụ. Nó cấp, kiểm tra và xác minh; đây không phải một trình quét bảo mật tổng quát.
Năng Lực Chính Và Các Nhóm Lệnh
- ✓step certificate: tạo, thu hồi, kiểm tra hợp lệ, lint, và đóng gói chứng chỉ X.509; sinh cặp key RSA, ECDSA, hoặc EdDSA và CSR; cài hoặc gỡ chứng chỉ khỏi trust store của hệ thống và trình duyệt; tạo chứng chỉ tuân thủ RFC5280 và CA/Browser Forum cho TLS/HTTPS.
- ✓step ca: khởi tạo một CA X.509 và/hoặc SSH chỉ trong một lệnh; xác thực và lấy chứng chỉ qua bất kỳ cơ chế enrollment nào mà step-ca hỗ trợ; gia hạn và thu hồi chứng chỉ do nó cấp; làm việc với bất kỳ CA ACMEv2 (RFC8555) nào, bao gồm challenge type http-01.
- ✓step crypto: ký, xác minh, và kiểm tra JWT (RFC7519), JWS, và JWE; tạo và quản lý JWK cùng key set; sinh và xác minh token TOTP cho MFA; áp dụng các KDF (scrypt, bcrypt, argon2) và xác minh mật khẩu; sinh và kiểm tra hash file.
- ✓step oauth: thêm luồng single sign-on OAuth 2.0 cho bất kỳ ứng dụng CLI nào, hỗ trợ authorization code, out-of-band, JWT bearer, và refresh token; lấy access token OAuth và identity token OIDC từ bất kỳ provider nào.
- ✓step ssh: tạo và quản lý chứng chỉ SSH dựa trên một instance step-ca online hoặc offline; sinh cặp key user/host SSH và chứng chỉ ngắn hạn; thêm và gỡ chứng chỉ khỏi SSH agent; hỗ trợ đăng nhập SSH single sign-on.
- ✓Cơ chế plugin: một file thực thi tên step-<name>-plugin đặt trong $PATH hoặc $STEPPATH/plugins (mặc định là $HOME/.step/plugins) sẽ tự động chạy khi bạn gọi step <name>; step-kms-plugin, xử lý key và chứng chỉ lưu trong HSM, TPM, YubiKey, macOS Keychain, và các cloud KMS, được tích hợp thẳng vào step.
Cài Đặt Step CLI
README không liệt kê lệnh cài đặt ngay trong văn bản — nó trỏ tới trang tài liệu cài đặt riêng của Smallstep tại smallstep.com/docs/step-cli/installation, nên các lệnh cụ thể theo từng package manager không nằm trong phần dữ kiện có ở đây. Điều được xác nhận: Step CLI được phân phối dưới dạng một binary Go duy nhất, nên sau khi cài không cần quản lý thêm runtime riêng. Nếu bạn đang viết script setup, hãy kiểm tra trang tài liệu đó thay vì đoán tên package.
Ví Dụ: Xác Minh OAuth Và JWT
Ví dụ mẫu trong README kết hợp hai nhóm lệnh: dùng step oauth để lấy identity token OIDC từ Google OAuth, sau đó dùng lệnh xác minh JWT của step crypto để kiểm tra chữ ký của token đó. Sự kết hợp này chính là lý do step oauth tồn tại — nó trả về một token mà một lệnh step khác, hoặc code của riêng bạn, có thể xác minh ngay. Phần văn bản README có ở đây không kèm flag lệnh thực tế cho ví dụ này, nên hãy coi đây là mô tả hình dạng của quy trình chứ không phải đoạn lệnh copy-paste được — kiểm tra tài liệu Smallstep được liên kết để biết cú pháp chính xác.
Ứng Dụng Thực Tế Cho Quy Trình Bảo Mật
- •Dựng một CA nội bộ bằng step ca và cấp chứng chỉ TLS ngắn hạn cho các service nội bộ, thay vì dựa vào chứng chỉ dài hạn từ một CA công cộng.
- •Có HTTPS được trình duyệt tin cậy trên dev server cục bộ bằng cách tạo một CA và cài root certificate của nó vào trust store hệ thống với step certificate.
- •Thêm single sign-on cho một công cụ CLI tự viết qua các luồng OAuth 2.0 của step oauth, rồi kiểm tra token OIDC nhận được bằng step crypto.
- •Cấp chứng chỉ SSH ngắn hạn thay vì SSH key tĩnh cho host và user đứng sau một instance step-ca, qua step ssh.
- •Sinh và kiểm tra mã TOTP để test hoặc enroll MFA bằng step crypto, mà không cần app authenticator trên điện thoại.
- •Chạy cấp phát ACME với một CA tương thích Let's Encrypt qua step ca, vì CLI hỗ trợ ACMEv2 RFC8555 bao gồm challenge http-01.
Điểm mạnh
- ✓Một binary bao quát X.509, chứng chỉ SSH, JWT/JWS/JWE, lấy token OAuth, và TOTP — các nhóm lệnh mà nếu không có Step CLI bạn sẽ phải dùng bốn năm công cụ riêng lẻ.
- ✓step certificate có thể cài root CA của chính nó vào trust store hệ thống và trình duyệt, nên chứng chỉ cấp cho môi trường dev cục bộ hoạt động được trên trình duyệt thật thay vì bị cảnh báo.
- ✓Hỗ trợ ACMEv2 (RFC8555) trong step ca nghĩa là CLI không bị khoá vào server step-ca của riêng Smallstep — nó nói chuyện được với bất kỳ CA tương thích nào, kể cả kiểu cấp phát như Let's Encrypt.
- ✓Định dạng plugin step-<name>-plugin cho phép mở rộng hỗ trợ KMS và HSM mà không cần vá lại CLI; riêng step-kms-plugin đã bao phủ HSM, TPM, YubiKey, macOS Keychain, và các cloud KMS.
- ✓Cấp phép theo Apache-2.0, cùng GitHub Discussions và một server Discord được liệt kê trong README để hỗ trợ và thảo luận phát triển.
Những Điều Cần Cân Nhắc
- △Nhiều tính năng của step ca, và toàn bộ việc cấp chứng chỉ của step ssh, cần một server step-ca đang chạy hoặc một CA ACME đứng sau — bản thân Step CLI không tự vận hành một CA.
- △README không mô tả trực tiếp lệnh cài đặt; nó dẫn ra trang tài liệu của Smallstep, nên chỉ đọc README thôi thì không biết được hỗ trợ package manager nào.
- △Ví dụ mẫu của chính README (token OAuth cộng xác minh JWT) chỉ được mô tả trong một câu, không kèm đoạn lệnh cụ thể trong phần nguồn dùng ở đây.
- △Không có thông tin số phiên bản hay tần suất phát hành trong phần dữ kiện có sẵn, nên không thể biết từ README mức star hiện đang phản ánh đúng mức nào của codebase.
- △Các plugin bên thứ ba được README liệt kê chỉ gồm step-kms-plugin và step-kmsproxy-plugin — độ phủ cho các nhà cung cấp KMS hoặc HSM khác không được đảm bảo sẵn.
Các Công Cụ PKI Và Mã Hoá Khác
Câu Hỏi Thường Gặp
Step CLI được phát hành theo giấy phép Apache-2.0, như được liệt kê trên repository GitHub của nó.
Không hoàn toàn — các lệnh certificate, crypto, và oauth của Step CLI chạy độc lập được, nhưng nhóm lệnh step ca và việc cấp chứng chỉ SSH cần một server step-ca đang chạy, hoặc một CA tương thích ACMEv2 khác, đứng sau, theo README.
Các lệnh step ca của Step CLI làm việc được với bất kỳ server CA nào tương thích ACMEv2 (RFC8555), bao gồm challenge type http-01 mà kiểu cấp phát ACME như Let's Encrypt sử dụng, theo README.
Step CLI sinh và xác minh token TOTP cho MFA qua các lệnh step crypto, theo phần bộ công cụ crypto trong README.
Có — step-kms-plugin, được README liệt kê là một plugin đã biết, quản lý key và chứng chỉ lưu trong HSM, TPM, YubiKey, macOS Keychain, và các cloud KMS, và README nói plugin này cũng được tích hợp thẳng vào Step CLI cho các thao tác tạo chứng chỉ, CSR, và ký token dựa trên KMS.
Step CLI quản lý chứng chỉ X.509, bao gồm TLS/HTTPS và chứng chỉ CA gốc hoặc trung gian, qua step certificate và step ca, cùng chứng chỉ SSH cho host và user qua step ssh, theo README.
Vấn đề Step CLI giải quyết
Các đội làm việc với PKI thường phải ghép nhiều công cụ riêng lẻ lại với nhau: openssl cho thao tác X.509, một thư viện theo ngôn ngữ lập trình để ký JWT, một ACME client để lấy chứng chỉ Let's Encrypt, và ssh-keygen cho chứng chỉ SSH — mỗi công cụ có tập flag và kiểu lỗi riêng. README của Step CLI đóng khung công cụ này quanh việc gom sự phân tán đó vào một bề mặt lệnh duy nhất, nhóm theo miền (certificate, ca, crypto, oauth, ssh) nhưng dùng chung một binary, một thư mục cấu hình, và một cơ chế plugin cho key lưu trong KMS.
Ai nên dùng — và ai nên bỏ qua
Hãy thử Step CLI nếu bạn đang chạy, hoặc dự định chạy, step-ca và muốn một client duy nhất để cấp và gia hạn chứng chỉ, hoặc chỉ đơn giản muốn một CLI cho các tác vụ X.509, SSH, JWT, OAuth, và TOTP rời rạc thay vì phải dùng riêng lẻ openssl, ssh-keygen, và một thư viện JWT. Bỏ qua nếu bạn chỉ cần một chứng chỉ ACME cho một server — một ACME client chuyên biệt sẽ ít phải học hơn — hoặc nếu hệ thống của bạn hoàn toàn không có CA hay step-ca nào, vì nhiều lệnh hữu ích nhất của Step CLI giả định có một CA đang chạy phía sau.
Repo liên quan
Chưa chắc cli có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về cli.
