0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

古いApacheで中間CA証明書が認識されていなかった

Posted at

TL; DR

  • Apache 2.4.8 以降と以前で中間CA証明書の設置方法が違う
  • 古いApacheの場合、中間CA証明書は SSLCertificateChainFile で指定しないとダメ
    • (2.4.8以降と同様に) SSLCertificateFile に連結していても読み込まれない

はじめに

中間CA証明書の設定は、例えうまく設定されていなくてもブラウザによってはきちんと表示されるので見落としがちな問題である。
しかし、スマートフォンからの通信や、Facebook などのサイトでシェアする場合の OGP タグ情報の読み込みなどを行う場合、中間CA証明書が正常にインストールされていないとうまく通信ができない。

そこで何が起きてるのかを調べると初めて知ったことがあったので記載。

中間CA証明書ファイルの配置方法

Apache・nginx ともに以下のコマンドで中間CA証明書を含んだ1ファイルを参照する記載が多かったです。

# ミドルウェアから ssl.crt を証明書として参照する
$ cat [ssl証明書] [CA中間証明書] > ssl.crt
$ cat ssl.crt
-----BEGIN CERTIFICATE-----
(SSL証明書)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(中間CA証明書)
-----END CERTIFICATE-----

しかし、Apache 2.4.8 以前では中間CA証明書を指定するディレクティブとして SSLCertificateChainFile が存在し、これで中間CA証明書ファイルを指定してあげる必要がありました。 2014年ぐらいの変更ですので、SSL証明局のページでも説明が併記してあることもあります。

最初、既存の設定ファイルを見たときには「古い中間CA証明書ファイルの指定方法は消えたけれど、SSLCertificateFile で指定しているファイル内に中間CA証明書は書かれているので、中間CA証明書は有効になっているだろう」と考えていたのですが、これが大間違いでした。
古いバージョン ( SSLCertificateChainFile ディレクティブが有効なバージョン) のApacheでは このディレクティブで指定しない限り中間CA証明書は有効になりません 。 なお、中間CA証明書を併記した crt ファイルは中間CA証明書を含まないSSL証明書として正常に認識されます。

まとめ

古い Apache が動いているサーバーに対する curl -I https://... が失敗する場合は、このあたりの設定が古い Apache ベースのものになっているかを確認するようにしましょう。

私がSSL周りをやり始めたのが 2014年以降なので、このあたりの勘違いを起こしたというのはあります。

ミドルウェア バージョン SSL証明書指定 中間CA証明書指定
Apache 2.4.8 以降 SSLCertificateFile $(cat [SSL証明書] [中間CA証明書]) 不要 (SSL証明書指定に含まれる)
Apache 2.4.8 以前 SSLCertificateFile [SSL証明書] SSLCertificateChainFile [中間CA証明書]
nginx (指定なし) ssl_certificate $(cat [SSL証明書] [中間CA証明書]) 不要 (SSL証明書指定に含まれる)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?