0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

マイナンバーカードでSSH認証 on Windows

Last updated at Posted at 2023-05-09

MAC でマイナンバーカードSSH認証をする方法が紹介されています。

今回、Windows 10/11 の GUI SSHクライアント( WinSCP や Teraterm ) でマイナンバーカードSSH認証を試してみました。SSHクライアントは直接スマートカード認証をサポートしていませんので、pagaent 経由で認証します。このため、SSHクライアントは pagaent を使った認証をサポートしていなければなりません。

準備

ICカードリーダでマイナンバーカードが読み取れる状態になっているものとします。

SSH設定

1. Putty-CAC 入手

pagaent.exe のみ必要
image.png

2. OpenSC 入手

puTTY-CAC が64ビットであれば OpenSCは 64ビット版を入手
Pkcs#11 モジュールのみ必要

image.png

3. クライアント認証用公開鍵を ssh-key 形式で抽出

マイナンバーカードには2つのスロットがあります。仮想スロット0はクライアント認証用、仮想スロット1は署名用の証明書、公開鍵、秘密鍵が含まれています。

仮想スロット 0 (クライアント認証用)

証明書( 公開部分 )
Digital Signature Certificate CA id=4
User Authentication Certificate CA id=3
User Authentication Certificate   id=1

公開鍵(公開部分)
Digital Signature Certificate CA   id = 4
User Authentication Certificate CA   id = 3
User Authentication Public Key      id = 1

秘密鍵(秘密部分)
User Authentication Key id = 1

仮想スロット1 (署名用)

証明書(秘密部分)
Digital Signature Certificate id=2

公開鍵(公開部分)
Digital Signature Public Key id = 2

秘密鍵(秘密部分)
Digital Signature Key id = 2

秘密部分にアクセスするにはスロット用の PIN が必要です。

SSH認証に必要なのは、仮想スロット0のクライアン認証用公開鍵( User Authentication Public Key id=1 ) 。PINは不要。これを ssh-key形式で取り出して、SSHサーバのログインするユーザのホームフォルダ内の .ssh フォルダ authorized_keys ファイルに貼り付けます。

一発で取り出す方法が見つからなかったため、専用のプログラムを用意しました。実行すると ssh-key 形式の公開鍵を表示。表示されたものをコピーして、sshサーバのauthorized_key に貼り付けます。

image (1).png
(ssh-rsa から4行コピー)

4. Putty-CAC pagaent 設定

puTTY-CAC のpageant.exe を起動
image (2).png

スクリーン右下のシステムトレイに表示されるアイコンを右クリック。メニューで"View Keys & Certs" を選択。開いたダイアログで "Add PCKS Cert" ボタンをクリック

pkcs#11 モジュールのパスを選択。ファイルダイアログで opensc-pkcs11.dll (puTTY-CAC が64ビットであれば、64ビットDLL、32ビットであれば32ビットDLL)を選択。するとマイナンバーカードのクライアント認証証明書が表示されるはず。その証明書を選択するとリストボックスに表示されます。

最後にダイアログ下の Fingerprint Type を必ず "SHA256 including" に設定(**重要**)

"Close"ボタンでウィンドウを閉じます( pageant はシステムトレイに残っています )

5. pageant 対応の SSHクライアント(WinSCP/TeraTerm 等)でSSH認証

SSHサーバのホームフォルダ内の .ssh - authorized_keyに公開鍵を設定したユーザでログイン。
認証は必ず pagaentを使うように設定します。

image (5).png

image (4).png

認証処理中に PuTTY Authentication ダイアログが表示されパスワードを求められたらクライアント認証用 PIN を入力 (3度間違えるとロックしてしまいます)

マイナンバーカードでパスワードレスでSSHサーバにログイン完了

やってみての感想

マイナンバーカードでSSH認証はできましたが、あえてマイナンバーカードを使うようなケースは個人的にはあまり思い浮かびません。マイナンバーカードを使い慣れるためにやってみるというのもありだと思います。今回何度もやっているうちにマイナンバーカードに使い慣れたような気がします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?