只今、サイトリニューアル中です。過去記事はこちらから確認できます
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

はじめに

このページでは、Webサーバーを疑似的にSSL化しレンタルサーバーと近い環境を構築する方法を紹介します

アドレス部分 「http://localhost」を「https://localhost」 でアクセスできるようにする方法です

必須ではありませんし、PCの内部を一部編集するので、PCに自信がない方はお奨めしません

以下は自己責任にてお願いします

この操作によりPCに何らかのトラブルが起きても責任は負いかねます

ApacheでSSLを有効にする

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

176行目付近にある「#LoadModule ssl_module~~」 コメントアウトを削除

#LoadModule ssl_module modules/mod_ssl.so
↓
LoadModule ssl_module modules/mod_ssl.so
httpd-ssl.confを編集する 「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>

DocumentRoot : Webフォルダ
ServerName : https://localhost などのドメイン名
SSLCertificate~~ の2つのファイルは後に作成します

「c:/srv/html」「c:/srv/SSL~~」は「Nginx」と共有します

PHPでSSLを有効にする

php.iniを編集する 「c:/srv/Apache24/php8.4/php.ini」

931行目付近にある「;extension=openssl」のコメントアウトを削除

;extension=openssl
↓
extension=openssl

Windowsのhostsに追加

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

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

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

以下を末尾に追加

127.0.0.1 localhost

「hosts」を保存したら一旦PCを再起動。後からでも可

OpenSSL設定ファイルを編集

以下以外にも方法はありますが、今回はApacheのSSL化を使った方法を紹介します

以下で作成したファイルはそのまま「Nginx」でも共有できます

「c:/srv/Apache24/conf/openssl.cnf」を「c:/srv/SSL」にコピー 「openssl-san.cnf」にリネーム
「c:/srv/SSL」がない方は空のフォルダを作成してください

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

以下を末尾に追加

[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost

「https://localhost」でアクセスする為のドメイン名
上の「hosts」と同じドメイン

サーバー証明書

これから作成する証明書は自身のPCでのみ使える疑似証明書です

以下以外にも作成する方法はありますが、唯一分かりやすく成功したものを紹介します

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

Git Bashをダウンロード、インストール

https://git-scm.com にて右の真ん中にある「Download for Windows」をクリック
次のページで表示された「Click here to download」をクリック exeファイルがダウンロードされます

ダウンロードしたexeファイルをクリック。今回は細かい設定をしないので基本そのまま「Next」をクリックしつつすすめていきます
気になるところがある場合は各自で調整してください

スタートメニューなどに「Git Bash」のアイコンがあることを確認

証明書を作成

「Git Bash」を起動

cdコマンドを使って「c:/srv/SSL」まで移動

以下を入力

$ openssl req \
 -newkey rsa:4096 \
 -keyout server.key \
 -x509 \
 -nodes \
 -out server.crt \
 -subj "//CN=localhost" \
 -reqexts SAN \
 -extensions SAN \
 -config openssl-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 -days 3650

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

このような画面が表示されれば成功です

作成したファイルの確認

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

の2つがあることを確認

証明書を認証する

以下の方法は「Chrome」でしか確認できていません
「Firefox」ではエラーになります。その他のブラウザは未確認 検証の予定もないです

古い証明書の削除

Chromeブラウザにて右上の3点印から「設定」をクリック(アドレスバーの右側)
表示されたページの左側にある「プライバシーとセキュリティ」→「セキュリティ」→下のほうにある「証明書の管理」をクリック

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

「localhost」を選択し「削除」をクリック 途中警告がでることがありますがそのまま進めます
※「localhost」がない場合はこの操作は不要です

新しい証明書の認証

「c:/srv/SSL/server.crt」をクリック
表示された証明書 「証明書のインストール」をクリック

「現在のユーザ」にチェックした状態で「次へ」をクリック
「証明書をすべてのストアに設置する」にチェックし「参照」をクリック
「信頼されたルート証明機関」を選択し「次へ」をクリック

途中警告が出ますがそのまま進めます

動作確認

Windowsのhostsに追加 の所でPCを再起動していなければここでPCを再起動

Apacheを起動後、ブラウザにて「https://localhost/info.php」など「https」でアクセスしてエラーが出なければ成功です

コメント

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