- blogs:
- cles::blog

PacketiX VPN のスマートカード認証に YubiKey 4 Nano を使う



SoftEther の商用版である PacketiX ではユーザー認証にスマートカードが使えるという機能がありますが、肝心の一般の人が気軽に手に入れられる スマートカード(というか、PKCS#11 トークン)がないという問題がありました。今回、いろいろと検証したところ、個人でも購入可能な YubiKey 4 Nano が使えることが分かりました。
YubiKey からは秘密鍵は取り出せないので、VPN の安全性を高めることができます。
以下、設定方法のメモ。
† YubiKey の準備
まず、YubiKey の方は PIV Tools を使って、PIN(暗証番号)の設定と証明書の生成を済ませておきます。
証明書は必ず RSA にするようにします。キー長は PacketiX の仕様では 1024bit までとなっていたはずですが、検証したところ YubiKey 4 Nano では 2048bit でも動きました。CN や署名方法については VPN サーバのポリシーに従ってください。とりあえず使えれば良いのであれば、自己署名(self-signed)にして、CN も適当なもので大丈夫です。
画面の指示に従うと、以下のような画面になるはずです。
PacketiX 側に設定する証明書が必要になるので、「Export certificate」ボタンを押して、証明書ファイルを取得しておきます。
† PacketiX サーバ側の準備
YubiKey の準備の最後に取得した証明書ファイルを、ユーザーの認証方法に指定します。
具体的にはユーザーの認証方法を「固有証明書認証」に設定し、「証明書の指定」から取得した証明書ファイルを指定します。
† PacketiX クライアント側の準備
クライアントが Windows 機であると仮定すると、PKCS#11 ドライバとして OpenSC をインストールしておく必要があります。自身の環境 ( 32bit / 64bit )に合わせたインストーラーをダウンロードし、インストールを行います。
インストールが完了したら%WINDIR%\system32\opensc-pkcs11.dll というファイルができているはずなので、これを %WINDIR%\system32\P11STD9A.DLL にコピーしてやります。これは PacketiX や SoftEther が読み込む PKCS#11 ドライバの DLL 名が SoftEtherVPN/Secure.h を見ると分かるとおり、プログラム中にハードコーディングされているためです。マニュアルにもその旨の記載*1があります。ここではこれを回避するために DLL の名前を変更して PacketiX に YubiKey を LGWAN IC Card として認識させています。
DLL が読み込まれるようにするため、PacketiX クライアントを既に起動している場合には一旦終了させてから、再度起動します。あとはクライアントの接続設定で、スマートカードを指定します。以下のような感じで証明書の指定ができるはずです。途中で PIN を求められるので、正しく入力してください。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9364
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . これが本物の「Amazon セキュリティ警告」(5820)
3 . リモートデスクトップで Alt + PrtSc と同じことをするには(5415)
4 . 「日次」は「にちじ」じゃない?(4477)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(4230)