エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

バーチャルホストのSSLで手間取ったのでメモ

同じクラウドサーバー(ニフティクラウド)にドメインを2つ乗せて、その2つともにSSLを設定する場合の注意点をまとめてメモしておく

(元々バーチャルホストやってないaaa.comに、運用開始後にbbb.comを乗せるような場合)

 

ドメインA aaa.com

ドメインB bbb.com

 

バーチャルホストの設定ファイルは下記のとおり

/etc/httpd/conf.d/aaa_domain.conf

/etc/httpd/conf.d/bbb_domain.conf

 

 

/etc/httpd/conf.d/ssl.conf

ここにSSLのデフォルト設定が書いてあった

下記の内容は、httpsのアクセスに対して、バーチャルホストごとの

設定で当てはまるドメイン名が無い場合に当てられる。

 

<VirtualHost _default_:443>

~ 色々と

<VirtualHost>

 

ここにaaa.comに対するssl設定が記述されていた。

これをbbb.com用に書き換えると当然元々のSSLが当たらなくなるので、ダメ。

 

bbb_domain.confに443に対するSSLの記述をしておけば、そちらが優先して適用される。

 

ので、設定ファイルにこんな感じに個別の設定を書く。

<VirtualHost 111.171.207.204:443>

~

~
SSLEngine on
SSLCertificateFile /home/bbb/ssl/server.crt
SSLCertificateKeyFile /home/bbb/ssl/server.key

<VirtualHost>

 

 

危険なのがSSLパスフレーズ

apacheの再起動にはカギのパスフレーズが必要なため、自動でパスフレーズを引き当てるための記述をするのが普通。というかマスト。

 

このパスフレーズだけは、バーチャルホストごと(SSL証明書ごと)に設定ができない。

ssl.confを開き、下記を確認した。

SSLPassPhraseDialog builtin
SSLPassPhraseDialog exec:/tmp/ssl.sh

 

今回のケースでは、aaa.comの証明書がパスフレーズ付きでそのパスフレーズを/tmp/ssl.shに記述してある。

 

この場合に対応するためには、下記のどちらかをやる。

・カギのパスフレーズを無しにする

・カギのパスフレーズを変更して、bbb.comの証明書のパスフレーズをaaa.comと同一にする

 

パスフレーズの変更、解除は下記URLを参考にしよう

d.hatena.ne.jp