Edited at

マルチドメインでのSSLの設定(CentOS7)

More than 1 year has passed since last update.


マルチドメインの場合の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の設定を見ると実はデフォルトの設定を行うファイルになっています


ssl.conf

<VirtualHost _default_:443>

...
</VirtualHost>

新しく作ったファイルにSSLの設定をしていきます


new.conf

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にリダイレクトするなりしましょう


new.conf

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のデフォルト設定でした

直接ファイルを書き換えずに、新しいファイルから設定を上書きするようにしましょう