プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

Arch Linuxでマイナンバーカードでのログイン認証をしてみる

時間があるので、マイナンバーカードのPAM認証をArch Linuxでやってみました。
今回の環境は、ThinkPad X201で構築しています。

まずは参考文献から。
www.osstech.co.jp
www.osstech.co.jp
www.r-cnct.com

今回使用するのは「SCR80」という接触式カードリーダーです。今だと、Amazonで色々買えますが、数年前に安くてOSの依存がほぼない(独自ドライバインストール不要)なのはこれだったんですよね。

microSDカードなども読み書きできるので便利です。付属の小さなCDは捨てましょうw。

さて、環境を作っていきます。今回はyayを使っています。

yay -i opensc

openscは、community/openscを選んでいます。

yay -i p11

p11は、community/libp11だったかな?

yay -i pam_p11

pam_p11は、aur/pam_p11ですね。Arch Linuxだと、pam-p11ではないので注意。

yay -i pcsc-tools
yay -i ccid

ccidは、community/ccidを選んでいます。
ここまできたら、pcscdサービスを有効にして起動します。

sudo systemctl enable pcscd
sudo systemctl start pcscd

pkcs15-toolが使えるようになるはずです。

pkcs15-tool --list-info

f:id:kaias1jp:20210513151048j:plain
f:id:kaias1jp:20210513151132j:plain
読み取れれば次に進みます。

今回は、sshは無視するのでeidの方で。

cd
mkdir .eid
chmod 0700 .eid

パーミッションについては、.sshのやり方に合わせてみました。

pkcs15-tool --read-certificate 1 >> ~/.eid/authorized_certificates
chmod 0600 ~/.eid/authorized_certificates

あとは、pam関連の変更です。

sudo vi /etc/pam.d/system-auth

/etc/system-auth

#以下を追加
auth  [success=2 default=ignore] pam_p11.so  opensc-pkcs11.so
#「2」を「1」に変更
auth  [success=1 default=ignore] pam_unix.so  try_first_pass nullok
#systemd-homedは削除

悩んだのは「pam_p11.so」ですね。どうやら、これに集約されているらしい。
my.eng.utah.edu

間違えていなければ、rebootするとマイナンバーカードのPINでログインできるはずです。
f:id:kaias1jp:20210513153124j:plain