公開鍵(ECDSA鍵)を発行する

公開鍵(ECDSA鍵)を発行するサーバ

はじめに

最近は何かと公開鍵でアクセスを、と言われます。なので、公開鍵認証のために証明書の作り方をまとめておきます。

一度発行すると、秘密鍵を失くしたり漏れたりなどしない限りは発行処理をしない方が多いと思います。

でも、定期的に発行し直したり、使う端末が増えたりなど、発行をする機会というものは意外と多いものです。そういうときに限って発行の仕方を忘れているため、あんちょこを作っておきます。

あんちょこ

鍵の発行

ssh-keygen -t ecdsa -b 521 -C "{コメント}" -f "{ファイル名}"

コメントを付けておくと、~/.sshに鍵が溢れてきたときに判別が付きやすいです。ごちゃごちゃになって結局再発行となるのは無駄ですよね😉

生成中にパスフレーズや保存ファイル名を聞かれます。
パスフレーズはともかく、保存ファイル名を入力するときにタブが効かないので、手入力をしないといけません。地味に面倒なので、コマンドに入れておくのが良いと思います。

fオプションは書く場所によって意味合いが変わります。上記コマンドでうまくいかない場合はオプションの順番を変えてみてください。

公開鍵の中身をコピー

pbcopy > {公開鍵のパス}

.pubがついているほうが公開鍵です。間違えないように!

ぱぱっと機械的にコマンドを打っているとうっかり秘密鍵をコピーしていることがあります。気が付かずに進めてしまうとセキュリティインシデント事案になりますのでご注意を!
よくあるヒヤリハット。

それでも秘密鍵のコピーが必要なケースもあります。重ね重ねよく確認を!

公開鍵をコピーするんだったっけ?秘密鍵をコピーするんだったっけ?

サーバで行うことは、ログインしてきた者が本当に本人かどうかの確認です。
この確認を公開鍵認証で行うためには、

  • 「自分しか知り得ない情報(=秘密鍵)」でログイン情報の暗号化を行う
  • 「みんなが知ってる情報(=公開鍵)」で送られてきた暗号を復号して中身を確認する

という流れ(荒い)になります。
このざっくりイメージから考えると、サーバに置くのは「公開鍵」。

ちなみに、暗号化の反対は「復号」らしいです。どうしても「化」を付けたければ、「平文化」でしょうか?あまり聞き馴染みの無い単語ですが。

サーバ側に配置

chmod 400 .ssh
cd ~/.ssh
vi authorized_keys
(コピーした公開鍵をそっくりそのまま貼り付け)
chmod 600 authorized_keys

何らかの方法でサーバにログインします。もし.sshがホームディレクトリになければ作ってください。

viを使ってますが、お好みのエディタにしてください。

任意のサービスに設定

これは公開鍵認証を行う各サービスの詳細を確認してください。
たいてい、ログインしてからSSHがついているメニューにて設定できると思います。また、サービスによってはECDSA鍵を使えない場合があるかもしれません。その時はRSAなど他の種類に変えてください。

ssh-keygen -t rsa -b 2048 -C "{コメント}"

ちなみに、お好みに応じて4096bitにしてもいいですが、生成に長時間要します。

メンテあんちょこ

公開鍵を作る

ssh-keygen -yf {秘密鍵パス}

必要に応じてどうぞ。

ちなみに、公開鍵から秘密鍵は作ることはできません。できたら鍵の意味がありません。

パスフレーズを変更

ssh-keygen -p -f {秘密鍵のパス}

パスフレーズを変更できますが、古いパスフレーズが必要です。忘れた場合は鍵を作り直ししないといけません。

鍵を作り直したときは、それまでに使っていた鍵の両方(公開鍵と秘密鍵)を消します。パスフレーズがわからないといっても、ね?秘密鍵が残っていれば公開鍵を作ることができるし、ね?

補足

あんちょこを使うにあたって

よくある免責の言い訳ですが、あんちょこは無保証です。公開鍵認証は結構クリティカルなことが多いとおもわれます。実際にあんちょこを使うときはひと呼吸置いてよく確認ください。

なお、間違いなどあれば随時更新するかもしれません。

公開鍵は秘密鍵とずっと一緒に持っておかないといけないの?

公開鍵は秘密鍵からいくらでもお好きなだけ作ることができます。サーバ側への配置などが済んだら、消して大丈夫です多分。

鍵の種類

このあんちょこではECDSA鍵を生成しています。詳細は楕円曲線DSA(Wikipedia)をみてね。

強力な鍵としてEd25519鍵というのもあるようです。

実務上は破られにくく処理が重くない手法を使えればそれで大丈夫だと思います。でも、難解な数学的な話や暗号化の理屈を聞きかじって知っておくのは有用です。Wikiを入り口に暗号の世界へどうぞ。

ビット数が521て!512やろ!やーいタイポしてやんの!

誤植と思ったあなた。521で正しいです。

楕円曲線暗号に 512 bit は存在しない | はったりエンジニアの備忘録
OpenSSH の楕円曲線暗号に 512 bit が存在しない理由を調べてみました。
Curipha Networks
タイトルとURLをコピーしました