只今、サイトリニューアル中です。過去記事はこちらから確認できます
PR

Windows11 Apache+PHP+SSL バーチャルホスト化

Webサーバー

このページでは「Apache」と「Nginx」を同じPCに導入した場合のパスを指定しています
パスに関しては一例です。各自の環境に合わせて適宜変更してください

ApacheNginx
サーバーc:/srv/Apache24c:/srv/nginx
Webファイルc:/srv/html
PHPc:/srv/Apache24/php8.4(8.3)c:/srv/nginx/php8.4(8.3)
MariaDBc:/srv/MariaDB
SSLc:/srv/SSL

Apacheでのバーチャルホスト有効化

httpd.confを編集 「c:/srv/Apache24/conf/httpd.conf」

183行目 「#LoadModule vhost_alias_module modules/mod_vhost_alias.so」 コメントアウトを削除

#LoadModule vhost_alias_module modules/mod_vhost_alias.so
↓
LoadModule vhost_alias_module modules/mod_vhost_alias.so

510行目 「#Include conf/extra/httpd-vhosts.conf」 コメントアウトを削除

#Include conf/extra/httpd-vhosts.conf
↓
Include conf/extra/httpd-vhosts.conf
httpd-vhost.confを編集 「c:/srv/Apache24/conf/extra/httpd-vhost.conf」

23行目以降を適宜変更していきます

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "${SRVROOT}/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "${SRVROOT}/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/srv/html"
    ServerName localhost
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/srv/html/test"
    ServerName test
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

編集が必要なのは2か所
・DocumentRoot Webフォルダまでのパス
・ServerName ドメイン名 「http://localhost」 や 「http://test」 など

 ※「localhost」や「test」の部分がドメイン名になります

<VirtualHost *:80>
    DocumentRoot "c:/srv/html/phpmyadmin"
    ServerName phpmyadmin
</VirtualHost>

上記を下部に追加することで 「http://phpmyadmin」でアクセスできるようになります
※「phpmyadmin」など複数のドメインを追加するには「hosts」の追加も必要です

好きなドメインを好きなだけ増やすことも可能です
※自身のPC内でのみ

SSLでのバーチャルホスト有効化

デフォルトエリアの編集

※このエリアを編集しないと、いくら複数のドメインを追加しても反映されません

httpd-ssl.confを編集 「c:/srv/Apache24/conf/extra/httpd-ssl.conf」
121行目 <VirtualHost default:443> があることを確認

124行目 DocumentRoot “${SRVROOT}/htdocs”
125行目 ServerName www.example.com:443
144行目 SSLCertificateFile “${SRVROOT}/conf/server.crt”
154行目 SSLCertificateKeyFile “${SRVROOT}/conf/server.key”

の部分を変更します

DocumentRoot "${SRVROOT}/htdocs"
ServerName www.example.com:443
↓
DocumentRoot "c:/srv/html"
ServerName localhost

SSLCertificateFile "${SRVROOT}/conf/server.crt"
↓
SSLCertificateFile "c:/srv/SSL/server.crt"

SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
↓
SSLCertificateKeyFile "c:/srv/SSL/server.key"

DocumentRoot Webフォルダまでのパス
ServerName ドメイン名

「SSLCertificateFile」「SSLCertificateKeyFile」は Windows11 Apache+PHP+ SSL化 で作成した 証明書 までのパス

バーチャルホストエリアを追加

httpd-ssl.conの末尾に追加 「c:/srv/Apache24/conf/extra/httpd-ssl.conf」
<VirtualHost *:443>
    DocumentRoot "c:/srv/html"
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "c:/srv/SSL/server.crt"
    SSLCertificateKeyFile "c:/srv/SSL/server.key"
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "C:/srv/html/test"
    ServerName test
    SSLEngine on
    SSLCertificateFile "c:/srv/SSL/server.crt"
    SSLCertificateKeyFile "c:/srv/SSL/server.key"
</VirtualHost>

※デフォルトエリアと同じ「localhost」エリアも必ず追加

「DocumentRoot」 と 「ServerName」 は 「httpd-vhost.conf」 と同じにする

更に追加してみる

末尾に

<VirtualHost *:443>
    DocumentRoot "c:/srv/html/phpmyadmin"
    ServerName phpmyadmin
    SSLEngine on
    SSLCertificateFile "c:/srv/SSL/server.crt"
    SSLCertificateKeyFile "c:/srv/SSL/server.key"
</VirtualHost>

を追加することで「https://phpmyadin」でアクセスができるようになります(この時点ではアクセスエラーになります)

上記の「httpd-vhost.conf」で追加したドメインの数だけこちらにも追加が必要
※自身のPCのみ

Windowsの「hosts」に追加

自身のPCで複数のドメインでアクセスできるように追加していきます

 ここからWindows内部の編集になります。自己責任でお願いします

メモ帳を「管理者として実行」
「hosts」を開く

c:/Windows/System32/drivers/etc/hosts

以下を追加

127.0.0.1 localhost //既にある場合は以下を追加
127.0.0.1 test
127.0.0.1 phpmyadmin //phpmyadminを追加した場合

hosts を保存したら一旦PCを再起動

SSL証明書を書き換える

こちらと同じやり方になりますが、一部追加しながら書き換えが必要になります

SSL設定ファイルの編集

openssl-san.cnf 「c:/srv/SSL/openssl-san.cnf」

末尾にて

[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost

は、既に書かれていると思うので、SSLに追加したいドメインを追加していきます

[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost
DNS.2 = test
DNS.3 = phpmyadmin //お好みで

※追加するドメインの順番にも注意 特に「hosts」と同じにする

サーバー証明書を作成

上記で「openssl-san.cnf」を書き換えたので証明書に反映させる為に、再度証明書を作り直します

Apache+PHP SSL化 証明書を作成 以降と同じ作業をします

もし、エラーが出る場合は「c:/serv/SSL/server.key」と「c:/srv/SSL/server.crt」を削除して再度試してみてください

「新しい証明書の認証」 まで進めます
※古い証明書の削除も忘れないように

動作確認

年の為、PCを再起動

ブラウザで「https://localhost」や「https://test」 などにアクセスしエラーがでなければ成功です

コメント

タイトルとURLをコピーしました