ConoHa VPS virtualhost 設定

ConoHa VPS virtualhost 設定

バーチャルホスト設定(Apache)

を参考に
virtualhost の設定

今回使用するドメイン名は
www.snowpool.info

mkdir /var/www/html/www.snowpool.info

でvirtualhost ドキュメントルートディレクトリを作成

vim /etc/httpd/conf.d/virtualhost.conf

で未定義ホスト用virtualhost 設定ファイルを作成

内容は

<VirtualHost _default_:80>
    ServerName any
    <Location />
        Require all denied
    </Location>
</VirtualHost>

とすることで
virtualhost 未定義ホスト名でアクセスを拒否

 vim /etc/httpd/conf.d/www.snowpool.info.conf

で www.snowpool.info の
virtualhost 設定ファイルを作成

つくるファイル名は
ドメイン名.conf
となる

内容は

<VirtualHost *:80>
    ServerName www.snowpool.info
    DocumentRoot /var/www/html/www.snowpool.info
    ErrorLog logs/www.snowpool.info-error_log
    CustomLog logs/www.snowpool.info-access_log combined env=!no_log
</VirtualHost>

なお
www.snowpool.info
の部分は取得したドメインに置き換え

systemctl restart httpd

で Webサーバ再起動

echo test >> /var/www/html/www.snowpool.info/index.html

でテストファイルを用意

これで
http://www.snowpool.info/
へアクセスすると
test と表示されます

次に Lets Encript の適用を変更するので

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

で設定ファイルを開き
56行目あたりの

 <VirtualHost _default_:443>

から
218行目あたりの

 </VirtualHost>

までを削除

次に

 /usr/local/certbot/certbot-auto certonly --webroot -w /var/www/html/www.snowpool.info -m メルアド -d www.snowpool.info --agree-to

を実行すると

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the cert (limit ~5 per 7 days)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 

となるので

Let’s Encrypt の証明書の更新で「バージョンが異なる」のメッセージが出て更新できない

を参考に

2 を入力し Enter で更新

次に

vim /etc/httpd/conf.d/www.snowpool.info.conf 

を開き

<VirtualHost *:443>
        ServerName www.snowpool.info:443
        DocumentRoot "/var/www/html/www.snowpool.info"
        ErrorLog logs/ssl-www.snowpool.info-error_log
        CustomLog logs/ssl-www.snowpool.info-access_log combined env=!no_log
        SSLCertificateFile /etc/letsencrypt/live/www.snowpool.info/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.snowpool.info/privkey.pem       
        SSLCertificateChainFile /etc/letsencrypt/live/www.snowpool.info/chain.pem

        SSLProtocol all -SSLv2 -SSLv3
        SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        SSLHonorCipherOrder on
        Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

を追記

設定反映のため

systemctl restart httpd

で Webサーバを再起動

これで https アクセスになるけど
http でアクセスしてきたものを強制的に https にしたいので

CentOS7 複数ドメイン(バーチャルホスト)でSSL

を参考に

virtualhost *:80
の部分に

    RewriteEngine on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

を追記

今回の場合

<VirtualHost *:80>
    ServerName www.snowpool.info
    DocumentRoot /var/www/html/www.snowpool.info
    ErrorLog logs/www.snowpool.info-error_log
    CustomLog logs/www.snowpool.info-access_log combined env=!no_log

    RewriteEngine on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>

<VirtualHost *:443>
        ServerName www.snowpool.info:443
        DocumentRoot "/var/www/html/www.snowpool.info"
        ErrorLog logs/ssl-www.snowpool.info-error_log
        CustomLog logs/ssl-www.snowpool.info-access_log combined env=!no_log
        SSLCertificateFile /etc/letsencrypt/live/www.snowpool.info/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.snowpool.info/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.snowpool.info/chain.pem

        SSLProtocol all -SSLv2 -SSLv3
        SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        SSLHonorCipherOrder on
        Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

となりました