SSH鍵の生成
SSH Key Generator
コメントを付けたOpenSSHの鍵ペアを作り、フィンガープリントも表示します。秘密鍵はパスフレーズなしで出力されるので、必要ならssh-keygen -pで自分でかけてください。
同じ鍵の生成ツールを、OpenSSHのタブで開いたものです。`authorized_keys`の1行と、それに対応する`openssh-key-v1`の秘密鍵を、ブラウザの中で作ります。既定はEd25519で、求めるホストのためにECDSAとRSAもあります。
小さく、速く、現代的です。2014年以降、SSHの既定値です。
OpenSSH 公開鍵の行の末尾に付きます。
crypto.subtle.generateKey)がこのタブの中で生成し、タブの外へは出ません。送信も記録も保存もしません。出力形式はこのプロジェクトのテストで OpenSSH 自身と突き合わせて確かめています。できるなら、秘密鍵を置く機械そのもので生成してください。ブラウザのタブに存在した鍵は、そのタブのメモリに存在した鍵です。使い方
コメントを付けます
公開鍵の行の末尾に付きます。慣例は`you@machine`です。2年後、項目が十数個ある`authorized_keys`の中で、どの行が自分のものなのかを見つけさせてくれるのが、これです。
公開鍵をサーバーに入れます
1行を、ホストの`~/.ssh/authorized_keys`に付け足すだけです。秘密鍵は手元に残ります。
秘密鍵を保存して、締めます
`id_key`としてダウンロードしたら、`chmod 600 id_key`をしてください。sshは、ほかのアカウントから読める秘密鍵を拒否します。そして`ssh-keygen -p -f id_key`でパスフレーズを掛けます。
よくある質問
秘密鍵が暗号化されていないのはなぜですか
`openssh-key-v1`の鍵を暗号化するにはbcrypt-pbkdfが要りますが、ここでそれをするには、すべてのパラメータについてOpenSSHと突き合わせて検証できないKDFの実装を掲げることになります。手元で`ssh-keygen -p`を使ってパスフレーズを掛けるほうが、OpenSSH自身のコードを使うことになるので明確に優れています。
本当にブラウザでSSHの鍵を作ってもいいのですか
使い捨てのホスト、実習の環境、あるいは手元に端末が無いときなら、理にかなった便利さです。何も送信しませんし、出力の形式はこのプロジェクトのテストで`ssh-keygen`自身と突き合わせています。本番を開ける鍵なら、その鍵を持つことになる機械の端末を使ってください。
サーバーがまだパスワードを尋ねてきます
たいていは権限です。ホスト側で`~/.ssh`は700、`authorized_keys`は600でなければならず、手元の秘密鍵は600でなければなりません。`ssh -v`がどの検査で引っかかったのかを教えてくれますが、ほとんど常にこれです。
1つの鍵を複数のサーバーに使ってもいいですか
使えますし、よくあるやり方です。対価は被害の広がりです。秘密鍵が1つ漏れれば、その鍵を登録したすべての場所が開きます。環境ごとに鍵を分ければ——ノートパソコンから本番へ、CIからステージングへ——登録の行が1つずつ増えるだけで、被害の範囲を狭められます。
ここから渡せます
次の一手
このツールが出したものをそのまま受け取れる道具です。
証明書デコーダー
Certificate Decoder
PEMやDERの証明書・CSRを解いて、サブジェクト・SAN・有効期間・鍵用途とチェーンの手がかりを示します。
鍵ペア生成
Key Pair Generator
RSA・ECDSA・Ed25519の鍵ペアを作り、PEM・JWK・OpenSSHで書き出します。
ランダムキー生成
Random Key Generator
暗号学的な乱数バイトを指定した長さで16進・Base64・Base64URLとして生成し、アプリのシークレットに使えるようにします。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。
文字列のハッシュ
Text Hash
文字列のMD5・SHA-1・SHA-256・SHA-384・SHA-512・CRC-32を計算し、大文字表記とBase64での出力も選べます。