VeriSignの個人用電子証明書をメールで送信

ベリサインの個人証明書を買った。justsystemshurikenを利用しているのでjustsystemから買った。 2500円。

で、これjustsystem製品専用って書いてあるんだけど、普通にsendmailから送って大丈夫かなと思ったら大丈夫でした。 ライセンスも複数のPCで使っていいと書いてあるので問題ないと思う。

これはPKCS12形式(なにそれ?)なんだけど、これをSMIMEで電子署名して送信する

Crypt::SMIMEってモジュールがあって日本の方が作ったもののようだけど、これPEM形式じゃないとだめらしい。 ぐぐったらPKCS12からPEMに変換する方法があったので( http://carosuke.seesaa.net/article/87706777.html )

PEMにしてからCrypt::SMIMEでごにょって、Email::Sendで送信。

use Crypt::SMIME;
use Email::Send;
use IO::All;

    my $plain = <<'EOF';
From: test@example.com
To: test@example.com
Subject: Crypt::SMIME test


This is a test mail. Please ignore...
EOF

    my $smime = Crypt::SMIME->new();
    $smime->setPrivateKey(
	io('/home/oreore/mail.key.pem')->all,
	io('/home/oreore/mail.crt.pem')->all,
    );
    my $message = $smime->sign($plain);
    my $sender = Email::Send->new({mailer => 'Sendmail'});
    $sender->send($message);

利用したモジュール
http://search.cpan.org/~mikage/Crypt-SMIME-0.09/lib/SMIME/JA.pod
http://search.cpan.org/~rjbs/Email-Send-2.194/lib/Email/Send.pm
http://search.cpan.org/~ingy/IO-All-0.39/lib/IO/All.pod