トップ «前の日(09-27) 最新 次の日(09-29)» 追記   RSS 1.0 FEED  

Journal InTime


2004-09-28 (Tue)

_ [ソフトウェア] mod_securityでreferer spamよけ(2)

ホスト名が30文字以上なやつは蹴ることに。

SecFilterSelective HTTP_REFERER "http:/[a-zA-Z_-]{30}" "deny,nolog,status:403"

パス部の//が/に正規化されるのは知ってたけど、http://もhttp:/に なっちゃうのは知らなくて、はまった。


2005-09-28 (Wed)

_ [プログラミング] CryptSignHash/CryptVerifySignatureとバイトオーダ

PVKの件が片付いたと思ったら、rubyでsignしたデータのverifyがどうしてもうまくいかない。 CryptVerifySignatureを呼ぶと、記憶領域が不足しているという旨のエラーが。

ゆうぞうさんに泣きついたら、署名データのバイトオーダが逆になっていることが発覚 (実は家に帰ってからもしやと思って調べてみたのだが、IRCのログを見たら ゆうぞうさんがとっくに調べていたorz...)。 それで記憶領域の不足なのね。 ところどころにこういう罠があるからWindowsは嫌だよなあ(実はそれまでもPRIVATEKEYBLOBをテキストモードで書き出していて、随分長い間はまっていたのは内緒だ)。

key = OpenSSL::PKey::RSA.new(key_data)
sign = key.sign(OpenSSL::Digest::SHA1.new, message).reverse

のようにreverseしてやったらCryptVerifySignatureで作成される署名と同じものを 作ることができた。 PKCS #1のバージョンの違いかなとか色々調べてたのがアホみたいだ。

pkcs1.rbを使おうと思ったけど、version 1.5ならOpenSSL::PKey::RSA#signでいいという ことがわかったのも収穫であった。 やっぱり、このへんのことはわからないことがあったらゆうぞうさんに聞くのが早いな。