マルチドメインの場合のSSLの設定
複数のドメインを管理している場合のウェブサーバーで、SSLの設定をします
証明書の取得等は下記サイトを参考にしました
さくらVPSでApache+SSL環境の構築
一つ問題となったのがssl.confを書き換えるところです
ssl.confを書き換えてしまうと対応できるドメインが一つに限られてしまうという点です
使用するファイル
ファイル | 説明 |
---|---|
CSR | 認証局に申請するのに必要なデータです 秘密鍵と一緒に作成されます |
秘密鍵 | SSLの設定に必要なデータです CSRと一緒に作成されます ***.keyという名前で保存します |
証明書 | SSLの設定に必要なデータです 認証局から発行されます ***.crtという名前で保存します |
中間証明書 | SSLの設定に必要なデータです 認証局から発行されます ***.crtという名前で保存します |
CSRと秘密鍵の作成はツールを使うと便利です
CSR・秘密鍵生成
SSLの設定にはSSLのモジュールが必要になりますので、インストールしておきましょう
インストール時に/etc/httpd/conf.d/以下にssl.confが作成されます
yum install mod_ssl
設定方法
SSLの設定の方法を調べるとssl.confを直接書き換えているところが多いですが、今回はssl.confは書き換えません
/etc/httpd/conf.d以下に新しいファイルを作成して設定します
既にバーチャルホストの設定を行っているものがあればそれを利用しても構いません
ssl.confの設定を見ると実はデフォルトの設定を行うファイルになっています
<VirtualHost _default_:443>
...
</VirtualHost>
新しく作ったファイルにSSLの設定をしていきます
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot /var/www/html # ディレクトリ
ServerName example.com # ドメイン
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/example.crt # 証明書
SSLCertificateKeyFile /etc/pki/tls/certs/example.key # 秘密鍵
SSLCertificateChainFile /etc/pki/certs/rapid.crt # 中間証明書
<Directory "/var/www/html"> # .htaccessで上書きできます
AllowOverride All
</Directory>
</VirtualHost>
80番ポートも書き込みます
使わないのでhttpsにリダイレクトするなりしましょう
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html # ディレクトリ
ServerName example.com # ドメイン
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</VirtualHost>
NameVirtualHost *:443
...
マルチドメインの場合は同じ要領でNameVirtualHostの下にVirtualHostタグを増やしていけばできます
設定の反映
CentOS7では勝手に443ポートが開いていないので、ファイアウォールの設定をします
なぜかhttpsを開けるとhttpが接続できなくなるので、両方開けるようにしましょう
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
ウェブサーバーの再起動をします
ウェブサーバーの起動時に/etc/httpd/conf.d/以下のファイルが読み込まれるため、そこに配置したssl.confとnew.conf(名前は何でもいい)が読み込まれます
systemctl restart httpd.service
まとめ
ssl.confの設定は443ポートのVirtualHostのデフォルト設定でした
直接ファイルを書き換えずに、新しいファイルから設定を上書きするようにしましょう