皆さまこんにちは、ウチイダです。
先日、お仕事でWebサーバの構築をやったのですが、その際にSSL証明書の設定でちょっとハマりましたので、また同じ轍を踏むことがないようにメモしておくことにします。
はじめに要約
Apacheのバージョンをよく確認していなくて、2.4.8以降での設定を2.4.6のサーバーで行ったためにエラー出してました。
2.4.6は 証明書と中間証明書のファイルを分割して、それぞれ SSLCertificateFileとSSLCertificateChainFileでパスを設定する必要がありました。
事象が発生したサーバの環境
- Cent OS 7.6.1810
- Apache 2.4.6
何の変哲もない、公式リポジトリからインストールしただけのApacheサーバです。
CMSの編集画面はIPでの制限かけていますが、ポート80と443は開放していました。
一部環境で、「SSL証明書に問題があります」の表示が出る
設定手順の通りにインストールを行って、いくつかの端末でhttpsアクセスができたことを確認したのですが、
社内の人から「自分のスマートフォンでアクセスできない」という報告が。
その後、PCからのアクセスでも、古いChromeとかFirefoxだと同様の事象が発生することがわかりました。
今回インストールしている証明書はワイルドカード付で、既にほかのサーバにインストールして問題なく稼働しています。
そのため、証明書自体には問題はないはず…まあ、証明書を疑う前に自分のミスを疑うのが筋ってもんです。
やっぱり、SSL設定がちゃんとできてない?
とりあえず発生している事象に関連するキーワードで検索します。
あっさり発見。デジサート様のサイトで、類似の事象についての対策が記載されていました。
参考:スマートフォン等、携帯端末の一部のみ「証明書が信頼できない」と警告が表示されます
https://knowledge.digicert.com/ja/jp/solution/SO24003.html
これの通りに設定を変えれば解決するはず…と思って、SSHでconfファイル開いてみたものの、
参考ページと同じようにちゃんと設定されていました。
おかしいなーと思って証明書ファイルの内容も比べてみても完全一致。なぜなのでしょう…。
念のため、SSLの設定をチェックしてくれるサービス(無料!)で確認かけてみることに。
参考:Qualys SSL Labs
https://www.ssllabs.com/ssltest/analyze.html?
URLを入力して「Submit」ボタンをクリック後、結果画面で何やらエラーが出ていました。
画面キャプチャは撮ってませんでしたが、以下の内容でした。
This server’s certificate chain is incomplete. Grade capped to B.
証明書のチェーン?が正しくない、という内容のエラーなので、やっぱりSSLの設定が間違っているということのようです。
でも設定内容は指定の通りになってるし…。わからん、これはハマったかも。
原因:Apacheのバージョンが違う
解決の糸口を見失いつつも、関係しそうなキーワードで検索を続けていたところ、以下のページに行き当たりました。
参考:apache 2.4におけるSSL証明書の設定
https://qiita.com/bageljp@github/items/6b9876b7571852284ead
※CentOS 7系の標準apacheだと2.4.6のため、ここで記載するapache 2.2の方の設定になります。注意。
apache 2.4におけるSSL証明書の設定
ぎゃあ、思いっきりこれだ!Σ(・□・;)
2.4.6のくせに2.2扱いって…。デジサート様のページでそこ補足しておいてほしかった…。
参考ページの記載通り、証明書と中間証明書のファイルを分割して、それぞれ
SSLCertificateFileとSSLCertificateChainFileでパスを設定したらすんなり解決しました。
サーバー系はあまり扱ったことがないので壁にぶち当たりましたが、もしかしてこの界隈では常識だったのでは…?
2.4.6ってそんなに古いバージョンなのかなあ、と気になって、リリースノートを調べてみました。
2.4.6のリリースは2013年7月26日。2.4.8はnot releasedで、2.4.9は2014年3月17日でした。
どっちも5年以上前なんですね…。
まとめと反省
今回はSSL証明書の設定でつまづきましたが、今後もきっと、こういうちょっとしたことでハマる事態がたくさんありそうです。
というか、ハマるポイントって大半はちょっとしたことが原因なんですけどね。。。
とりあえず、初動対応としての原因切り分けの際には、ソフトウェアのバージョンをもっときちんと把握するようにしようと肝に銘じました。
以上、同じところでつまづいた方の参考になれば幸いです。
それでは、最後までお読みいただきありがとうございました(/・ω・)/
コメント