pemって言ったら改行も仕様に含むんだよもん
冗談じゃねぇ、と思ったけどPEMはBASE64を使っていてBASE64はMIMEの仕様の一部で、とたどっていった結果、一行あたりの制約がPEMの仕様に漏れでてくる、ということのようだ。
というあれ。この改行に意味があったんだよ(ナンダッテー) という話。知ってるか。
(ちなみに、上記のものはUbuntuの中でmod_sslがデフォルトで使っているサーバ証明書)
#でも、Javaやってるときに文句言われたこと、ないんだよなぁ
どうしてそんなことになったかというと、OpenSSLで鍵を読み込んでいるときに、ファイル経由でpemを読んだら問題なかったのに、それをメモリ上にのっけてやってみたらだめだったという事件の流れ。データの違いは改行の違いだけで「この改行って意味があるの!?」とかびびった。
具体的には、PEM_read_bio_PrivateKey() が "bad base64 decode" とか言い出した。そんなわけあるんかいな、と思ったら、あったのだ。
メモリ上にマッピングするときに「改行なんて要らないよね」とか言った自分が悪い。いや、しかし……
PEMというのは
-----BEGIN CERTIFICATE----- MIICnjCCAYYCCQCvgY9YjPLo2DANBgkqhkiG9w0BAQUFADARMQ8wDQYDVQQDEwZ1 YnVudHUwHhcNMTIxMDAzMDkyOTM1WhcNMjIxMDAxMDkyOTM1WjARMQ8wDQYDVQQD EwZ1YnVudHUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8lP+hcVM3 ... Qjyuxx//vDtL53k92bKb2orQkL/3u/cF4ynwy6p646UkEyrQAtbUS1O/F91ZG6k9 GigCBfK8xKa5yMJ7vQQk/vmkrI+pfqc0G4uKV/lvCSmPkXqjxgA/6OvRStazr9Jt LA0gcsiaR0HwBMYe4ESZb3vzKyQKQZwr4SbfLQWPr8DA09kC3nxBo2hAhLYWptlz c9u9i7DWOPMNDxDQvXl+ibG/jqSumEONN+493z5uj/awqSt9lUyPVU7Ngn54FeVN 1iU= -----END CERTIFICATE-----
というあれ。この改行に意味があったんだよ(ナンダッテー) という話。知ってるか。
(ちなみに、上記のものはUbuntuの中でmod_sslがデフォルトで使っているサーバ証明書)
#でも、Javaやってるときに文句言われたこと、ないんだよなぁ