みなさまこんにちは。お盆はいかがお過ごされましたか?私はiOSアプリの移植開発にあたり、通信周りの設定と構築をしていました。
Androidではhttp通信だけだったのですが、iOSではhttpsで通信を行う必要があって、サーバーの設定を変更し、ssl通信とhttp通信が混在できるようにしていました。
comodoからssl証明書をゲットしてapache2の設定を変えてapache2ctl configtestで構文チェックすると「SSLモジュールがありません」なるメッセージが!
なのでopensslのインストール状況をバージョンチェックで見てみるとインストールはされているみたい。じゃあ、モジュールがロードされてないんか?と思い色々チェック。
モジュールを読み込み設定を変更し、再びapache2ctl configtestで構文チェック。
“Syntax OK “
おお、okなら行けるだろうという事で本番環境でapache2を再起動。あれ!エラーが出て起動しない!本番環境だから今もプレイされている方が居るのにごめんなさい!っと慌ててconfファイルのssl追加部分をコメントアウトして起動。ふう、正常に戻った。
何が行けなかったのかエラーログを見ると「Unable to read server certificate from file /etc/ssl/pr/*****.crt」と・・・証明書が読み込めないらしい。何で読み込めないんだろ。よくあるケースでは文字コードがサーバーの設定と違っているってことが良くあるのだけど、今回は中間証明書も全てUbuntuサーバで作っているのでこれはなさそう。ではパーミッションの問題かと思い調べたがこれも問題なさそう。
じゃあ、証明書事態をopensslでチェックしてみようとopenssl x509 -in /etc/ssl/pre/****.crt -text -nooutで確認。
あれ?エラーメッセージが。証明書が読み込まれていない?なぜ?・・・
という事でviエディタで中身を見てみると・・・
-----BEGIN で始まる最初の行がNから始まっている!これじゃあ、読めないだろうという事で全てを見直し修正して、再度openssl x509 -in /etc/ssl/pre/****.crt -text -nooutで確認。
無事、読み込めました。で、あまり本番環境で何度もエラーを出すわけにはいかないのでテスト環境でapache2をリスタート。無事動きました。なので本番環境もリスタート。
現在は難なくSSLが全てのサーバーで動いています。という感じで毎日がひとつずつの地味な積み上げで進んでいます。遅れちゃってごめんなさい。気になった方は何でもお答えするのでメッセージ頂ければ幸いです。