以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

Windows環境でマイナンバーカードを使ってSSH公開鍵認証する(コマンドライン)

https://rita.xyz/blog/irasutoya/key-w200-fs8-zf.pngマイナンバーカードにはRSAの鍵が入っている。これを利用して、SSH公開鍵認証をしてみた。
ssh マイナンバー」でググってもLinuxmacOSの情報しか無かったので、Windows 10(20H2)でやってみる。手順はLinux/macOSとほぼ同じだが……。

前提・準備

  • マイナンバーカード及びマイナンバーカードが読める機材を用意する。ここでは(Aff)ソニー PaSoRi RC-S380を使用。
  • Windows 10の設定→アプリ→アプリと機能→オプション機能からインストールできる「OpenSSH クライアント」でインストールされるsshコマンドを使っている。
    • バージョンは"OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2"。
  • OpenSCをインストールしておく。最新版である0.21.0を使用した。

公開鍵を持ってくる

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桁)を入力。暗証番号が合っていれば以下のようにログインできるはず。
f:id:abyssluke:20210514173438p:plain

なお、利用者証明用暗証番号は3回間違えるとロックされ、役所でリセットしてもらう必要があるので注意。