實用工具
結果
結果會顯示在這裡。有時候馬上就需要一組金鑰:簽測試用的 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 線上