ローカル環境に HTTP Server を作る SSL/TSL化

でローカル環境への Apache + PHP の導入、ルート証明書のインストール、サーバ証明書の用意ができたので Https 接続できるようにしていく。

ここでは今までの手順でApacheの導入などをしている事を前提としている。

環境

Windows10 pro 64bit
Apache HTTP Server 2.4.48
PHP 8.0.10

Apacheのコンフィグファイルの編集

Apache24\conf\httpd.conf

初期設定では、 socache_shmcb_module ssl_module の読み込みが行われていないので読み込むようにする。

[修正前]
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
[修正後]
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

初期設定では、ssl のコンフィグのインクルードが行われていないので行うようにする。

[修正前]
#Include conf/extra/httpd-ssl.conf
[修正後]
Include conf/extra/httpd-ssl.conf

Apache24\conf\extra\httpd-ssl.conf

サーバ証明書( SSLCertificateFile )と秘密鍵( SSLCertificateKeyFile )のパス設定を実際に使うファイルパスに書き換える。

SSLCertificateFile "${SRVROOT}/conf/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/server.key"

※ サーバ証明書と秘密鍵のファイルは外部からアクセス不可能な場所に置いておくこと。
 (コンフィグファイルで設定している DocumentRoot フォルダの中などには決して配置しないように)

DocumentRoot と ServerName を httpd.conf で指定しているものに合わせる。(ポートだけ 80(http) ではなく 443(https))

[修正前]
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.example.com:443
[修正後]
DocumentRoot "C:\server\storage\public_html"
ServerName localhost:443

Httpsアクセスが可能になったかを確認する

Apacheを再起動させる。

ブラウザから「https://localhost」でアクセスしてページが表示されるかを確認する。
実際に Google Chrome での確認。アドレスバーの左に鍵マークが表示され、証明書も有効になっていることが確認できる。

apache-ssl-tsl-ok

「https://localhost/phpinfo.php」にアクセスしてPHPも動作しているか確認する。

php-intro-ok-page