概要

Apacheにバーチャルホストの複数サイトに、同じSSLの証明書でSSL接続させる設定です。(俺流です) サーバーはさくらのVPS

  • Apache
  • Cerbotで無料SSL証明書
  • IPアドレスは1個
  • ドメイン2種

前提

Cerbotのインストールが済んでいて、1個のサイトのSSL証明書はすでに入っているものとします。
http.confとssl.confの設定は最低限済んでいるとする。

httpd.confの設定

以下が書いてあるか確認
NameVirtualHost *:80
NameVirtualHost *:443

ssl.confの設定

##
## SSL Virtual Host Context
##
↑この行以降をカットします。
 

/etc/httpd/conf.d/vhost.confの設定

 
一つのファイルにこのように書いています。
通常のhttpに来たアクセスをhttpsにrewiteするようになります。(全SSL化)
samuraishockdo.infoともう一つのドメインとの2種の設定です。
キモはSSL設定のところ、同じ証明書などで2つの違うドメインを設定してます。
ちなみに、このサーバーで使っている設定です。
 
【注意】そのままコピペしても動きません、ご自分のサイトにあわせて書き直してくださいね。
 
<VirtualHost *:80>
    ServerName samuraishockdo.info    
    ServerSignature Off
    RewriteEngine On
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]
    ErrorLog /var/log/httpd/redirect.error.log
    LogLevel warn
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/html
    ServerName samuraishockdo.info
    SSLCertificateFile  /filepath/cert.pem
    SSLCertificateKeyFile /filepath/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateChainFile /filepath/chain.pem
</VirtualHost>

<VirtualHost *:80>
    ServerName もう一つのドメイン    
    ServerSignature Off
    RewriteEngine On
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]
    ErrorLog /var/log/httpd/redirect.error.log
    LogLevel warn
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/filepath
    ServerName もう一つのドメイン
    ServerAlias  ドメイン名
    CustomLog logs/もう一つのドメイン-access.log common
    ErrorLog  logs/もう一つのドメイン-error.log
    AddDefaultCharset UTF-8
    <Directory "/var/www/filepath">
	AllowOverride All
    </Directory>
    SSLCertificateFile  /filepath/cert.pem
    SSLCertificateKeyFile /filepath/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateChainFile /filepath/chain.pem
</VirtualHost>

まとめ

この設定で複数バーチャルホストがそれぞれSSL接続、証明書は1個っていう良い感じの設定となりました。