Home

技術系のメモと日々の雑感

Unable to read server certificate

SSL の証明書を更新したら Apache が起動しなくなったとの声が聞こえてきた。
ログを見せてもらうと

[error] Init: Unable to read server certificate from file /usr/local/apache/conf/ssl/server.crt
[error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error

とのこと。
中身が壊れてるって言っているんだね。
実はこのエラー、原因は改行コード。
元が何になっていたのか定かではないけど、LF に変えたら解決した。
覚えとこ。

stat コマンドの特定の値だけ取得する

シェルスクリプトの中でファイルのサイズを取得しようと思い、stat コマンドが使えるだろうと予想。
ところが意外なことに、巷にあるオンラインのマニュアルには特定の値だけを出力させる方法が詳しく書かれてなかった。
欲しい情報はサイズだけなのに、何も指定しないと

$ stat hoge.txt
  File: `hoge.txt'
  Size: 533             Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 205979674   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-09-30 16:48:37.000000000 +0900
Modify: 2010-09-30 16:48:37.000000000 +0900
Change: 2010-09-30 16:48:37.000000000 +0900

という具合に、たっぷりと情報が表示される。
結局、やりたかったことは

$ stat -c%s hoge.txt

でいけた。
実際にやってみないと分からないことって多いね。

Mac のブラウザだけ SSL 証明書のエラーが出る

Safari ErrorWindows の IE とか Firefox では問題ないのに、Mac の Safari だと、「Safari は Web サイト xxxxx.xxx の識別情報を検証できません。この Web サイトの証明書は不明な認証機関によって署名されています」というエラーが出るパターンに遭遇。
あ、正確に言うと Mac 上の Firefox でも同様のエラーが出る。
もちろん、ちゃんとした証明書を使ってるんだけどね。
で、クライアント側の問題かと思ってひとしきり悩んだ結果、サーバ側で中間証明書が正しく設定されてないのが原因だった。
Apache の mod_ssl を使っているので、ファイルを置いてから

SSLCertificateChainFile /usr/local/apache/conf/server-ca.crt

の行を有効にすれば解決。
これって気づきにくい現象だから、いっそ全部のブラウザでエラーが出てくれる方がいいなぁ。