ようこそゲストさん

CPA-LABテクニカル

2008/09/03(水) PHPで電子署名openssl_pkcs7_signのはまりどころ

現在、Qdmailを電子署名できるように作業中。
Qdmailの当初リリース時は、PGP対応にしようと思っていたのだけれど、PHPでは、S/MIMEの方が簡単に対応できるのと、どうもPGPよりS/MIMEの方が最近は優勢のようなので、S/MIMEにまずは対応させようとしている。
が、そこではまったことが。。。。
S/MIMEで署名するには、openssl_pkcs7_signという関数を使うのだけど、メッセージファイルの指定の仕方にクセがある。。(PHP4.2.5)

openssl_pkcs7_sign(
    "元メッセージフルパス",
    "出力ファイルフルパス",
    "file://公開鍵ファイルフルパス",
    array("file://秘密鍵ファイル", "パスワード"),
    array("To" => "address@example", // ヘッダー情報
          "From"=>"spok <spok@example.com>", 
          "Subject" => "test")
    );
フルパスでなく、相対パスの場合は、なぜかapacheのインストールディレクトリが、カレントディレクトリとして扱われるようだ。
思ったところとは全く違うところにファイルが出力されていたので、かなり戸惑った。

とにかく、フルパスが無難ということで。

名前:  非公開コメント   

  • TB-URL  http://www.cpa-lab.com/tech/0176/tb/