apacheからnginxへの移行時の証明書周りの設定

歴史的な理由もあり学科のweb周りはapacheが元気に稼働しているケースが多い。

とはいえもうapacheの面倒を見るよりはnginxに移行したほうが何かと便利そうなので、現在apacheからnginxへの乗り換えを仕込んでいる。

先週の台風の際に学科システムへのダメージを減らすために、学科システムを一時的に停止させ、クラウドにおいてあるwebの予備サーバーを使うことになった。その時にタイミングを合わせて試しにnginxでwebを構築しようとしたところ、ちょっとSSL周りで詰まったのでそのメモ。

apache側では次のように証明書を指定している。

SSLCertificateChainFileはいわゆる中間証明書。

SSLCertificateFile /etc/pki/tls/private/ie.u-ryukyu.ac.jp/ie.u-ryukyu.ac.jp.cer
SSLCertificateKeyFile /etc/pki/tls/private/ie.u-ryukyu.ac.jp/ie.u-ryukyu.ac.jp.key
SSLCertificateChainFile /etc/pki/tls/private/ie.u-ryukyu.ac.jp/nii-odca3sha2ct.cer

ググったところ SSLCertificateChainFileに対応するnginxの設定項目は無いらしい。

どうもnginxの場合はSSL証明書と中間証明書を連結させたファイルを作る必要がある模様。

blog.steven266.de

ということでこんな感じのコマンドを実行して連結させたpemファイルを生成する。

$cat ie.u-ryukyu.ac.jp.cer nii-odca3sha2ct.cer > ssl.pem

生成したpemファイルをnginxのserverコンテキスト内に指定する。

    ssl_certificate /etc/pki/tls/private/ie.u-ryukyu.ac.jp/ssl.pem;
    ssl_certificate_key /etc/pki/tls/private/ie.u-ryukyu.ac.jp/ie.u-ryukyu.ac.jp.key;

こうするといい感じに動く。証明書周り難しいね...。