Windows11 Apache+PHP SSL化

Apache

このページでは「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でSSLを有効にする

Apacheの「httpd.conf」を開きます
176行目付近「LaodModule ss_module~~」のコメントアウトを削除

#LoadModule ssl_module modules/mod_ssl.so
↓
LoadModule ssl_module modules/mod_ssl.so

Apacheフォルダ内にある「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>

DocumentRoot : Webファイルがある場所
ServerName : http://localhost などのドメイン
SSLCertificate~~ の2つのファイルは後に作成します

PHPでSSLを有効にする

PHPフォルダにある「php.ini」を開きます
952行目付近にある「extension=openssl」のコメントアウトを削除

;extension=openssl
↓
extension=openssl

Windowsのhostsに追加

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

C:/Windwos/System32/drivers/etc/hosts

末尾に以下を追加

127.0.0.1 localhost

※上記ファイルを編集した場合、PCの再起動が必要(後からでも可)

OpenSSL設定ファイルを編集

「c:/srv/Apache24/conf/openssl.cnf」を「c:/srv/SSL」にコピー、「openssl-san.cnf」にリネーム
「c:/srv/SSL/openssl-san.cnf」
以下を末尾に追加

[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost

※DNS.2 = local2 などバーチャルドメインの追加も可能

サーバー証明書を作成

証明書を作成するには「OpenSSL」をインストールし、コマンドプロンプトでの操作が必要になりますが、今回は「Git Bash」を使って作成します。「Git Bash」ならそのままopensslコマンドが使えます

$ cd c:/server/SSL/

$ openssl req \
  -newkey rsa:4096 \
  -keyout server.key \
  -x509 \
  -nodes \
  -out server.crt \
  -subj "//CN=localhost" \
  -reqexts SAN \
  -extensions SAN \
  -config opsanssl-san.cnf \
  -days 3650

\を入力した後「Enter」を押すと「>」が出るので続けて入力

\ [Enter]で改行しています
\ [Enter] の代わりに半角スペースでも可

$openssl req -newkey rsa:4096 -keyout server.key -x509 -nodes -out server.crt -subj "//CN=localhost" -reqexts SAN -extenstions SAN -config openssl-san.cnf -days3650

入力ミスによりエラーが出てもカーソルの上をクリックすると直前に入力したものが表示されるので修正しつつ実行すれば大丈夫です

このような画面が出れば成功

作成したファイルの確認

c:/srv/SSL/server.crt
c:/srv/SSL/server.key

証明書を認証する

古い証明書の削除

chromeブラウザにて右上の3点印から「設定」をクリック
左側にある「プライバシーとセキュリティ」→「セキュリティ」→下の方にある「証明書の管理」

「Windowsからインポートした証明書を管理する」をクリックで証明書が表示
「信頼された証明機関」のタブをクリック

「localhost」を選択し「削除」をクリック 途中警告が出る場合がありますがそのまま進めます

新しい証明書の認証

c:/srv/SSL/server.crtをクリック
「証明書のインストール」をクリック
「現在のユーザー」にチェックした状態で次へ
「証明書をすべてのストアに配置する」にチェックし「参照」をクリック「信頼されたルート証明機関」を選択し次へ
途中警告が出ますがそのまま進めます

動作確認

「hosts」のこともあるので一旦PCを再起動
ブラウザで「https://localhost/info.php」など「https」を入れて任意のページへアクセスしエラーが出なければ成功です

コメント

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