マイナンバーカードにはRSAの鍵が入っている。これを利用して、SSH公開鍵認証をしてみた。
「ssh マイナンバー」でググってもLinuxかmacOSの情報しか無かったので、Windows 10(20H2)でやってみる。手順はLinux/macOSとほぼ同じだが……。
前提・準備
公開鍵を持ってくる
OpenSCのpkcs15-toolでSSH用の公開鍵を持ってくる方法があるが当環境ではうまく行かなかったので、OpenSSHの鍵生成ツールを利用する。
> ssh-keygen -D "c:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll"
マイナンバーカードをリーダーにセットした状態でssh-keygenをコマンドラインから叩く。 -DオプションでOpenSCのPKCS#11ライブラリを指定する。
C_GetAttributeValue failed: 5 failed to fetch key ssh-rsa AAAA…… ssh-rsa AAAA…… ssh-rsa AAAA……
するとssh-rsaから始まる公開鍵が3つ表示されるが、そのうち一番上の公開鍵をコピーし、ログインしたいサーバー・ユーザーの~/.ssh/authorized_keysに公開鍵を追記しておく。
ログインしてみる
上記と同じくマイナンバーカードをリーダーにセットした状態でsshコマンドを叩く。-IオプションでOpenSCのPKCS#11ライブラリを指定する。小文字のiではなく大文字のI(アイ)であることに注意。
> ssh -I "c:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll" hoge@example.com
うまくいくと
Enter PIN for 'JPKI (User Authentication PIN)':
と表示されるので、マイナンバーカードに設定した利用者証明用暗証番号(数字4桁)を入力。暗証番号が合っていれば以下のようにログインできるはず。
なお、利用者証明用暗証番号は3回間違えるとロックされ、役所でリセットしてもらう必要があるので注意。