ことの発端
ここ数年で「パスワードのみの認証」は無くなり、2要素認証、多要素認証が主流になることは間違いないです。
そんな中、 USB デバイスを使用した認証モジュールが出現してきて、中でも Yubico
社の YubiKey
は有名だったりします。
一般的には FIDO2(WebAuthn)
で、この YubiKey
を認証方法として登録したりするのですが、今回は GitHub
や BitBucket
などの ssh の公開鍵認証方式で YubiKey
を使うことになりました。
なお、 公開鍵認証方式で YubiKey
を使用するためには YubiKey
シーリーズの中でも YubiKey 5 シリーズ
のように、PIV (Personal Identification Verification)という ICカード 機能を搭載しているものを使用する必要があります。
この記事では YubiKey 5 シリーズ
の設定を行い、公開鍵を取得するまでをまとめています。
取得した公開鍵を使って、 GitHub
を使用する手順については別の記事とさせていただきます。
作業の流れ
一度、流れが分かれば、そんなに手数が多いわけではないので、簡単だと思いますが、画面キャプチャが多くて見通しが悪いので、やることを下記にまとめます。
1. インストールと起動
2. PIN を設定
3. PUK を設定
4. Managemenet Key を設定
5. 証明書を登録
6. 公開鍵を取得
1. インストールと起動
YubiKey の各種設定は YubiKey Manager
を使用すると簡単です。
-
下記 URL より
YubiKey Manager
をインストールします。
https://www.yubico.com/support/download/yubikey-manager/
2. PIN を設定
YubiKey の PIN を指定します。
この PIN は PIV のみならず FIDO2 などでも使用します。
-
Current PIN
(初回設定時 1 はUser default
にチェックを入れます)、New PIN
、Confirm new PIN
を入力してChange PIN
をクリックします。
3. PUK を設定
PUK は PINロック解除キー(PIN Unlock Key)
と呼ばれるもので、 PIN を3回連続失敗してロックした YubiKey を復旧するための文字列を設定します。
-
Current PUK
(初回設定時 2 はUser default
にチェックを入れます)、New PUK
、Confirm new PUK
を入力してChange PUK
をクリックします。
4. Managemenet Key を設定
個人で使用する分には、この設定は行わずにデフォルトを使用した方が無難です。「何となく設定したい」レベルなら設定しないことをオススメします。
Managemenet Key
を変更した後、この Managemenet Key
を忘れたなんて事になると、もう証明書の追加・変更・削除ができなくなります。 3
設定するケースとしては、企業内のセキュリティ担当者が証明書を登録し、むやみに証明書を変更したり削除したりしないようにする場合です。
(仮に紛失や盗難に遭ったとしても、最終的には PIN
で保護されます)
ウチの会社みたいに YubiKey
を社員に配布して、「勝手に設定して使ってね」というケースでは、デフォルトのままで使うことをルールとしています。
-
Current Management Key
(初回設定時 4 はUser default
にチェックを入れます)、Generate
をクリックしたらNew Management Key
をメモしておきましょう。 その後、Protect with PIN
にチェックを入れてFinish
をクリックします。
5. 証明書を登録
YubiKey には証明書を4つ保存することができますが、今回は Authentication(Slot 9a)
に証明書を登録します。
ちなみに、他のスロットでも問題ないのですが、 Authentication(Slot 9a)
と Key Management(Slot 9d)
は1回 PIN
入力を実施すると YubiKey
を抜去(切断)するまで使用できます。
-
Algorithm
はRSA2048
を選択して 5 、Next
をクリックします。
-
Subject
に 適当な名前を入力して、Next
をクリックします。(Subject
の文字列中に、このスロットの用途やスロット名Authentication (Slot 9a)
などを示した方が、後々の選択画面で迷わないのでオススメします。)
-
Management key
入力してOK
をクリックします。(出荷時から変更していなければUser default
にチェックを入れます)
6. 公開鍵を取得
一度、 YubiKey に入れた秘密鍵は二度と外に出すことはできません。秘密鍵を用いた暗号化・複合化は YubiKey 内部で実行されるため、秘密鍵が外に出ることがなく、これにより安全性を担保しています。
従って、この節でのエクスポートは公開鍵のエクスポートになります。
エクスポートした公開鍵を、各種サービスに登録することで認証サービスを使用できるようになります。
-
エクスポートされるファイルは CRT形式なので、必要に応じて下記コマンドにて ssh の公開鍵に変換します。(例として、エクスポート時のファイル名称を
yubikey_9a.crt
とし、yubikey_9a.pub
が変換後のファイルになります。)
openssl x509 -in yubikey_9a.crt -pubkey -noout > yubikey_9a.pub.tmp
ssh-keygen -f yubikey_9a.pub.tmp -i -m PKCS8 > yubikey_9a.pub