یک جفتکلید RSA یا EC را در مرورگر خود با WebCrypto تولید کنید و کلیدهای عمومی و خصوصی را بهصورت PEM یا JWK صادر کنید. کلیدها هرگز دستگاه شما را ترک نمیکنند.
کلیدها بهصورت محلی در مرورگر شما تولید میشوند — کلید خصوصی هرگز بارگذاری نمیشود.
— خروجی اینجا نمایش داده میشود —
— خروجی اینجا نمایش داده میشود —
درباره این ابزار
تولیدکنندهی جفتکلید RSA / EC یک جفتکلید نامتقارن را کاملاً در مرورگر شما با استفاده از API بومی WebCrypto (crypto.subtle.generateKey) میسازد، سپس آن را در قالبهایی که واقعاً در فایلهای پیکربندی و کد میچسبانید صادر میکند. چیزی روی سرور منتقل یا ذخیره نمیشود: کلید خصوصی روی دستگاه شما تولید میشود، یکبار نمایش داده میشود، و هنگام ترک صفحه دور انداخته میشود. این آن را راهی امن برای ساخت کلید برای ابزارهای مجاور SSH، امضای JWT، آزمایشهای TLS، یا یادگیری نحوهی کنار هم قرار گرفتن قالبهای کلید عمومی میسازد.
برای RSA یک طول مدول 2048، 3072 یا 4096 بیت را با نمای عمومی استاندارد 65537 انتخاب میکنید، و اینکه کلید برای امضا (RSASSA-PKCS1-v1_5، SHA-256) یا رمزگذاری (RSA-OAEP، SHA-256) است. برای کلیدهای منحنی بیضوی یک منحنی NIST را انتخاب میکنید — P-256، P-384 یا P-521 — و اینکه برای امضا (ECDSA) یا توافق کلید (ECDH) است. مدولهای بزرگتر RSA و منحنیهای بالاتر قویترند اما تولیدشان کندتر است؛ بهویژه RSA-4096 میتواند در مرورگر چند ثانیه طول بکشد.
خروجی با exportKey از WebCrypto انجام میشود: کلید عمومی بهصورت SubjectPublicKeyInfo (SPKI) و کلید خصوصی بهصورت PKCS#8، کدگذاریشده با base64 و شکستهشده در 64 نویسه در هر خط درون قابهای -----BEGIN PUBLIC KEY----- / -----BEGIN PRIVATE KEY-----. کلید قالب را به JWK تغییر دهید تا بهجای آن بازنمایی JSON Web Key را بگیرید. از آنجا که تولید محلی و آفلاین است، کلید خصوصی هرگز بارگذاری نمیشود — پیش از بستن تب آن را جایی امن کپی کنید، زیرا پس از آن قابلبازیابی نیست.
پرسشهای پرتکرار
آیا کلیدهای خصوصی به سرور ارسال میشوند؟
خیر. کلیدها بهصورت محلی توسط موتور WebCrypto مرورگر شما تولید و درونصفحه صادر میشوند. کلید خصوصی هرگز دستگاه شما را ترک نمیکند و در هیچجا ذخیره نمیشود، بنابراین پیش از بستن تب آن را جایی امن کپی کنید — پس از آن قابلبازیابی نیست.
کدام اندازهی کلید یا منحنی را باید انتخاب کنم؟
RSA-2048 خط پایهی رایج است؛ 3072 یا 4096 حاشیهی بیشتری به بهای تولید کندتر و کلیدهای بزرگتر میدهند. برای EC، P-256 سریع و بهطور گسترده پشتیبانیشده است، در حالی که P-384 و P-521 سطوح امنیتی بالاتری ارائه میدهند. کلیدهای EC برای قدرت مشابه بسیار کوچکتر از RSA هستند.
تفاوت میان خروجی PEM و JWK چیست؟
PEM قالب DER با base64 پیچیدهشده در خطوط BEGIN/END است که بیشتر سرورها و OpenSSL انتظارش را دارند — SPKI برای کلید عمومی و PKCS#8 برای کلید خصوصی. JWK شیء JSON Web Key استفادهشده توسط جاوااسکریپت و کتابخانههای JOSE/JWT است. هر دو همان جفتکلید را توصیف میکنند.
امضا در برابر رمزگذاری — چه چیزی تغییر میکند؟
الگوریتمی را که کلید برای آن ساخته میشود انتخاب میکند. امضای RSA از RSASSA-PKCS1-v1_5 و رمزگذاری از RSA-OAEP استفاده میکند؛ امضای EC از ECDSA و توافق کلید از ECDH استفاده میکند. کلیدی که برای یک هدف تولید شده به آن الگوریتم مقید است، پس بر اساس نحوهی استفاده انتخاب کنید.