マイナンバーカードの公開鍵を使ってSSHする方法


検証環境

Open SCのインストール

ICカードを読み込むために必要。

https://github.com/OpenSC/OpenSC/releases/tag/0.20.0
OpenSC-0.20.0.dmgをダウンロードしてインストールした。

公開鍵の取得

ssh-keygen -D /Library/OpenSC/lib/opensc-pkcs11.so

公開鍵が3つ取得できたが、試した結果、一番最初に表示された公開鍵を使った場合にSSHできた。

この方法では取得できず。

pkcs15-tool --read-ssh-key 1

SSHする方法

  1. SSHしたいサーバーの.ssh/authorzed_keysに取得した公開鍵を追加
  2. ICカードリーダーを接続してマイナンバーカードを読み取れるようにしておく
  3. SSHコマンドを実行
ssh -I /Library/OpenSC/lib/opensc-pkcs11.so user@hostname

PIN入力のプロンプトが出るので、そこで利用者証明用電子証明書に設定したパスワードを入力する。

Enter PIN for 'JPKI (User Authentication PIN)':

マイナポータルにログインする際に使用する利用者証明用電子証明書については3回連続でパスワードを間違って入力した場合、パスワードロックがかかってしまい、当該電子証明書は利用できなくなってしまいます。署名用電子証明書については、5回連続でパスワードを間違って入力した場合、ロックがかかります。住民票がある市区町村の窓口にてパスワードのロック解除とともに、パスワード初期化申請をし、パスワードの再設定を行ってください。

3回連続でパスワードを入力を間違えるとロックされてしまい、ロック解除するのに住民票がある市区町村の窓口に行く必要があるのでご注意ください。

実行例のログ

$ ssh -I /Library/OpenSC/lib/opensc-pkcs11.so user@hostname
C_GetAttributeValue failed: 5
failed to fetch key
Enter PIN for 'JPKI (User Authentication PIN)':
Welcome to Ubuntu 19.10 (GNU/Linux 5.3.0-64-generic x86_64)