實用工具

RSA / ECDSA / Ed25519 金鑰對產生器

在瀏覽器裡產生 RSA 2048–4096、ECDSA P-256/P-384 或 Ed25519 金鑰對,同時輸出 PEM 與 OpenSSH 格式。

瀏覽器本機執行雜湊與加密3.1萬
免費

結果

結果會顯示在這裡。

有時候馬上就需要一組金鑰:簽測試用的 JWT、替預備環境設定 TLS、給 CI 工作單獨配發一把 SSH 部署金鑰——偏偏手邊這台電腦沒裝 OpenSSL。本頁用瀏覽器內建的 WebCrypto 產生金鑰,也就是瀏覽器執行 TLS 時用的那套實作,私鑰在你的裝置上產生,其他任何地方都不存在。輸出包括 PKCS#8 PEM 私鑰(或 OpenSSH 私鑰檔)、SPKI PEM 公鑰,以及可以直接放進 authorized_keys 的單行 OpenSSH 公鑰。對應的命令列工具是 OpenSSL(openssl/openssl,30k+ star,Apache-2.0),本工具寫出的每個 PEM 檔它都能直接讀取。

它是怎麼運作的

  • 金鑰由 crypto.subtle.generateKey 產生:RSA 公開指數固定為 65537,ECDSA 使用 NIST 曲線,Ed25519 則視瀏覽器是否支援而定。
  • PEM 部分是標準容器 BEGIN PRIVATE KEY(PKCS#8)與 BEGIN PUBLIC KEY(SPKI),OpenSSL、Node.js、Java、Go 以及各種 JWT 函式庫都能直接載入,不必轉換。
  • OpenSSH 公鑰依 RFC 4253、5656、8709 編碼,測試中與 ssh-keygen 產生的金鑰逐位元組比對過,SHA256 指紋也與 ssh-keygen -l 的輸出一致。
  • 私鑰格式選擇 OpenSSH 時,會寫出未加密的 openssh-key-v1 檔案,這是 OpenSSH 7.8 起 ssh-keygen 的預設格式。

你的資料去了哪裡

哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。

本工具會接觸金鑰與憑證,因此任何一次執行都不會被儲存,連你自己的歷史裡也不會有。

它要花多少

本工具完全免費,不需要登入,也不消耗點數。

常見問題

該選哪種金鑰類型?
SSH 用 Ed25519,並把私鑰格式選為 OpenSSH:金鑰短、速度快,沒有容易選錯的參數;而且部分 ssh 版本(包括 macOS 內建的)無法載入 PKCS#8 格式的 Ed25519 私鑰。TLS 憑證和 JWT 選 ECDSA P-256,現代用戶端支援最廣。只有老舊或要求嚴格的系統才需要 RSA;NIST SP 800-57 認為 2048 位元 RSA 到 2030 年都夠用,之後建議 3072 位元。4096 位元在瀏覽器中產生可能要好幾秒。
私鑰沒有密碼保護,要怎麼加上?
存成 OpenSSH 格式後執行 ssh-keygen -p -f 你的私鑰檔,就能直接設定密碼。PKCS#8 檔案可以用 openssl pkcs8 -topk8 -v2 aes-256-cbc -in key.pem -out key.enc.pem 輸出一份加密副本。儲存 SSH 私鑰後記得 chmod 600,否則 ssh 會拒絕使用。
我需要的是 BEGIN RSA PRIVATE KEY,不是 BEGIN PRIVATE KEY。
那是較早的 PKCS#1 容器,裡面是同樣的數值。在 OpenSSL 3 下用 openssl rsa -in key.pem -traditional -out key.rsa.pem 即可轉換。不過包括 OpenSSH 在內的大多數現行軟體都直接接受 PKCS#8,請先確認是否真的需要舊格式。
怎麼確認這組金鑰沒問題?
對 OpenSSH 私鑰執行 ssh-keygen -y -f 私鑰檔,會印出由私鑰推導出的公鑰,應與頁面上那一行完全相同。PEM 私鑰可以用 openssl pkey -in key.pem -pubout 輸出 SPKI 公鑰,應與 PUBLIC KEY 區塊逐位元組相同。
選 Ed25519 出現錯誤怎麼辦?
Ed25519 加入 WebCrypto 的時間比 RSA 和 ECDSA 晚,版本太舊的瀏覽器可能不支援;目前版本的 Chrome、Edge、Firefox、Safari 都已支援。更新瀏覽器即可,或改用最接近的 ECDSA P-256。

背後的開源專案

本工具是獨立實作,並未打包第三方函式庫。openssl/openssl(Apache-2.0)在程式碼層面做的是同一件事——如果你需要在自己的程式裡實作它,從那裡開始,而不是呼叫一個網頁。

openssl/openssl

也常被稱作

  • rsa 金鑰產生
  • 線上產生 ssh 金鑰
  • rsa 公鑰私鑰產生
  • ed25519 金鑰產生
  • pem 金鑰產生
  • ssh-keygen 線上