Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@oinuman

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

More than 3 years have 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のデフォルト設定でした
直接ファイルを書き換えずに、新しいファイルから設定を上書きするようにしましょう

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
oinuman
最近React始めて勉強中です Ruby on Rails、Python、Drupalなどを使ってます

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?