Tạo cặp khóa RSA hoặc EC trong trình duyệt của bạn với WebCrypto và xuất khóa công khai và riêng tư dưới dạng PEM hoặc JWK. Khóa không bao giờ rời khỏi thiết bị của bạn.
Khóa được tạo cục bộ trong trình duyệt của bạn — khóa riêng tư không bao giờ được tải lên.
— kết quả hiển thị ở đây —
— kết quả hiển thị ở đây —
Về công cụ này
Trình tạo cặp khóa RSA / EC tạo một cặp khóa bất đối xứng hoàn toàn trong trình duyệt của bạn bằng API WebCrypto gốc (crypto.subtle.generateKey), rồi xuất nó ở các định dạng bạn thực sự dán vào tập tin cấu hình và mã. Không có gì được truyền hay lưu trên máy chủ: khóa riêng tư được tạo trên thiết bị của bạn, hiển thị một lần, và bị hủy khi bạn rời trang. Điều này làm cho nó là một cách an toàn để đúc khóa cho các công cụ gần SSH, ký JWT, thử nghiệm TLS, hay học cách các định dạng khóa công khai khớp với nhau.
Với RSA, bạn chọn độ dài modulus 2048, 3072, hoặc 4096 bit với số mũ công khai chuẩn 65537, và liệu khóa dùng để ký (RSASSA-PKCS1-v1_5, SHA-256) hay mã hóa (RSA-OAEP, SHA-256). Với khóa đường cong elliptic, bạn chọn một đường cong NIST — P-256, P-384, hoặc P-521 — và liệu nó dùng để ký (ECDSA) hay thỏa thuận khóa (ECDH). Modulus RSA lớn hơn và đường cong cao hơn thì mạnh hơn nhưng chậm tạo hơn; đặc biệt RSA-4096 có thể mất vài giây trong trình duyệt.
Việc xuất được thực hiện với exportKey của WebCrypto: khóa công khai dưới dạng SubjectPublicKeyInfo (SPKI) và khóa riêng tư dưới dạng PKCS#8, mã hóa base64 và ngắt dòng ở 64 ký tự mỗi dòng bên trong khung -----BEGIN PUBLIC KEY----- / -----BEGIN PRIVATE KEY-----. Chuyển nút định dạng sang JWK để nhận biểu diễn JSON Web Key thay thế. Vì việc tạo là cục bộ và ngoại tuyến, khóa riêng tư không bao giờ được tải lên — hãy sao chép nó vào nơi an toàn trước khi đóng tab, vì nó không thể khôi phục sau đó.
Câu hỏi thường gặp
Các khóa riêng tư có được gửi đến máy chủ không?
Không. Khóa được tạo cục bộ bởi engine WebCrypto của trình duyệt của bạn và xuất trong trang. Khóa riêng tư không bao giờ rời khỏi thiết bị của bạn và không được lưu ở đâu, nên hãy sao chép nó vào nơi an toàn trước khi đóng tab — nó không thể khôi phục sau đó.
Tôi nên chọn kích thước khóa hay đường cong nào?
RSA-2048 là mức cơ bản phổ biến; 3072 hoặc 4096 cho biên độ nhiều hơn với chi phí tạo chậm hơn và khóa lớn hơn. Với EC, P-256 nhanh và được hỗ trợ rộng rãi, trong khi P-384 và P-521 cho mức bảo mật cao hơn. Khóa EC nhỏ hơn nhiều so với RSA với độ mạnh tương đương.
Đầu ra PEM và JWK khác nhau như thế nào?
PEM là định dạng DER base64 bọc trong các dòng BEGIN/END mà hầu hết máy chủ và OpenSSL mong đợi — SPKI cho khóa công khai và PKCS#8 cho khóa riêng tư. JWK là đối tượng JSON Web Key dùng bởi các thư viện JavaScript và JOSE/JWT. Cả hai mô tả cùng một cặp khóa.
Ký so với mã hóa — điều gì thay đổi?
Nó chọn thuật toán mà khóa được tạo cho. Ký RSA dùng RSASSA-PKCS1-v1_5 và mã hóa dùng RSA-OAEP; ký EC dùng ECDSA và thỏa thuận khóa dùng ECDH. Một khóa được tạo cho một mục đích bị ràng buộc với thuật toán đó, nên hãy chọn dựa trên cách bạn sẽ dùng nó.