Home 暗号プロセッサ OpenICF3


html5jcup

myuOpen > PKCS#11でSSH

PKCS#11でSSH (FreeBSD編)

PKCS#11を使ってSSHの公開鍵をICカードに入れます。FreeBSD 8.1で動作することが 確認されました。まずmyuOpenのPKCS#11をコンパイルする前にccidとpcsc-liteを インストールします。
# pkg_add -r ccid
FreeBSD 8.1ではccidをインストールするとpcsc-liteも自動的に追加されました。 FreeBSD 8.2ではデフォルトのftpサイトにccidがなくdevel/ にあるので、この方法では うまくいかないようです。ICカードリーダがNTT CommunicationsのSCR3310-NTTComの場合、 動作しない可能性があるので、FreeBSD 8.1の選択が無難かもしれません。
# cd /usr/local/etc
# cp reader.conf.sample reader.conf
# vi /etc/devd.conf


attach 100 {
   device-name "ugen[0-9]+";
   action "/usr/local/sbin/pcscd -H";
};

detach 100 {
   device-name "ugen[0-9]+";
   action "/usr/local/sbin/pcscd -H";
};

# vi /etc/rc.conf


pcscd_enable="YES"

ICカードリーダを挿入してリブートします。ccidがサポートしていない ICカードリーダは、それぞれの方法でドライバをインストールしてください。
myuOpenのドライバのソースコードを展開したディレクトリに移動し、 makesoファイルを次のように修正してください。 (ページの都合でg++コマンドの途中に改行が多数入っているので注意)


#!/bin/sh

g++ -shared -I/usr/local/include
    -I/usr/local/include/PCSC
    -O2 -fPIC -fno-strict-aliasing
    -o icardmodmc8k.so icardmodmc8k.cpp
    -L/usr/local/lib -lpcsclite

for i in icardmodpk wilicode
do
g++ -I/usr/local/include
    -I/usr/local/include/PCSC
    -O2 -c -fPIC -fno-strict-aliasing
    -o $i.o $i.cpp
done
g++ -shared -o icardmodpk.so 
    icardmodpk.o wilicode.o 
    -L/usr/local/lib -lpcsclite -lssl

コンパイルが成功したら /usr/local/libにPKCS#11のファイルをコピーします。
# cp icardmodpk.so /usr/local/lib
# cp icardmodmc8k.so /usr/local/lib
これでLinuxと同じように ssh-keygen や ssh が使えるようになります。 ICカードリーダを認識していないようであれば、一度、リブートしてみてください。

PKCS#11でSSH (Windows編)

PKCS#11を使ってSSHの公開鍵をICカードに入れます。LinuxではOpenSSHが標準でインストールされていますが、 Windowsでは、PKCS#11に対応したSSHクライアントが必要です。ここではCygwinのOpenSSHの説明をします。Cygwinが信頼できるのであれば便利かもしれません。Linuxのようにコンパイルする必要はなくWindows版のバイナリが利用できます。もちろんご自身でコンパイルしても問題はありません。現在のCygwinの最新バージョンは1.7.9-1でOpenSSHのバージョンは5.8p1です。
電子証明書が入ったICカードを挿入し次のコマンドを入力

ssh-keygen -D C:/windows/system32/icardmodpk.dll

次のようなテキストが出力されます

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC5JpQ4oFB0iBTO7 31oCH/XliwYbMe5OimUN0ZlGazWtIX+4CNcykZLpyQE20/RvYlkD+ 8K/hMl2RD0FJK83sKt7G5JgHeLTmIwCvSJioCGuT7jzZeUm5kE6Iy hzSoZ69tno4MN9DBpLReRr/bjc0xSsfCpDjXQqonKX3vPbpVaWw==

リモートのSSHサーバが適切に設定されていれば、上記テキストをリモートの.ssh/authorized_keys に追加すればOKです。

ssh -I c:/windows/system32/icardmodpk.dll id@1.2.3.4

すると、ICカードのPINを聞いてくるので、入力すると、リモートのマシンにログインできます。

64bit版のWindowsでも同一のコマンドで動作します。ただしmyuOpenの32bitのバイナリが C:\Windows\SysWOW64 にコピーされている必要があります。


AdMax広告