Windows の Apache を SSL(HTTPS) 化する方法
以前,「Windows への Apache インストール方法」で,Windows パソコンに Apache を入れてローカルでホームページを確認できるようにする方法を書いた.
今回はその続きとして,そのローカル環境を SSL 化(HTTPS 化)する方法を書いておく.
本番のサイトが HTTPS になっている場合,ローカルが HTTP のままだと Cookie の Secure 属性や,混在コンテンツ(Mixed Content)まわりの動作が本番と食い違うことがある.
ローカルも HTTPS にしておけば,そのあたりの検証も含めて本番に近い状態で確認できる.
mkcert の準備
オレオレ証明書を自分で作ってブラウザに信頼させる方法もあるが,mkcert を使うと手間がかからない.
mkcert が生成した CA を Windows の証明書ストア(信頼されたルート証明機関)に登録してくれるので,証明書エラーの警告が出なくなる.
インストール
mkcert の GitHub のリリースページを開き,一覧の中から Windows 用のファイルをダウンロードする.
mkcert-v1.4.4-windows-amd64.exe のように windows と書かれているものを選ぶ.(バージョン番号の部分は最新のものでよい.64bit の Windows なら amd64,32bit なら 386 を選ぶ.自分のパソコンが 32/64bit のどちらか分からない場合は,ほとんど 64bit なので amd64 で問題ない.)
ダウンロードしたファイルは分かりやすい場所に置く.
以下では C ドライブの直下に mkcert という名前のフォルダを作り,そこに置いたと仮定する.
C:\mkcert
ダウンロードしたファイルの名前は長いので,このフォルダの中で mkcert.exe という名前に変更しておく.(拡張子 .exe はそのまま.ファイル名の部分だけ mkcert に変える.)
実行方法について
mkcert は環境変数 Path を通さなくても使える.
コマンドプロンプトは,今いるフォルダ(カレントディレクトリ)の中も実行ファイルの探索対象にしてくれるので,mkcert.exe を置いた C:\mkcert に移動してから mkcert と入力すれば,それだけで実行できる.
cd C:\mkcert
mkcert -version
バージョン番号が表示されれば問題ない.
以降の mkcert のコマンドは,このように C:\mkcert フォルダに移動してから実行するものとして進める.
(すでに C:\mkcert に移動した状態のコマンドプロンプトを開いたままにしておけば,そのつど cd し直す必要はない.)
ローカル CA の登録
C:\mkcert フォルダの中で,以下を実行する.
mkcert -install
これで mkcert 用のローカル CA が作成され,Windows の証明書ストアに登録される.
これ以降,この CA から発行した証明書はブラウザから信頼された状態になる.
証明書の作成
test というホスト名でアクセスできるようにする場合,同じく C:\mkcert フォルダの中で以下のように実行する.(ホスト名は前回の記事と同じく test を例にする.)
mkcert test
同じディレクトリに
test.pem
test-key.pem
という 2 つのファイルが生成される.
これを Apache から参照できる場所に置く.
仮に
C:\apache24\conf\ssl\
に置いたと仮定する.
httpd.conf の設定
C:\apache24\conf\httpd.conf
を編集して,SSL 用のモジュールを有効にする.
「# コメントを外す」と書いてある部分は左端に # でコメントアウトされている場合にそれを外して有効化するということです.
LoadModule ssl_module modules/mod_ssl.so # コメントを外す
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so # コメントを外す
Listen 443 # 追記
Apache 同梱の httpd-ssl.conf は使わず,前回作成した httpd-vhosts.conf の中に 443 番の VirtualHost を追記していく方針にする.
ホストが増えても 1 つのファイルにまとまっていたほうが管理しやすいためである.
httpd-vhosts.conf の設定
C:\apache24\conf\extra\httpd-vhosts.conf
を編集する.
前回作成した 80 番の VirtualHost に,443 番へのリダイレクトを追記する.
<VirtualHost *:80>
ServerName test
DocumentRoot "c:/home/test/"
ErrorLog "logs/test-error.log"
CustomLog "logs/test-access.log" common
Redirect permanent / https://test/ # 追記
<Directory "c:/home/test">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
そのすぐ下に,443 番用の VirtualHost を追記する.
<VirtualHost *:443>
ServerName test
DocumentRoot "c:/home/test/"
ErrorLog "logs/test-ssl-error.log"
CustomLog "logs/test-ssl-access.log" common
SSLEngine on
SSLCertificateFile "c:/apache24/conf/ssl/test.pem"
SSLCertificateKeyFile "c:/apache24/conf/ssl/test-key.pem"
<Directory "c:/home/test">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
証明書のパスは Windows でも / 区切りで書いて問題ない.\ で書く場合はエスケープが必要になるので, / で統一したほうが分かりやすい.
起動テストと反映
まず設定ファイルの構文に間違いがないか確認する.
cd C:\apache24\bin
httpd -t
Syntax OK と表示されれば問題ない.エラーが出た場合はメッセージに従って設定ファイルを見直す.
サービスとして登録済みの場合は以下で再起動する.
httpd -k restart
まだサービス登録していない場合は,一度 httpd を止めてから起動し直す.
ブラウザで
https://test/
にアクセスして,アドレスバーに鍵マークが表示されれば設定は成功である.
うまくいかない場合
mkcert コマンドが認識されない
「'mkcert' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません.」と表示される場合,以下を順に確認する.
- 今のフォルダが C:\mkcert になっているか.コマンドプロンプトの入力行に表示されているパスを確認する.違う場合は cd C:\mkcert で移動する.
- C:\mkcert の中に,mkcert.exe という名前のファイルが実際にあるか.ダウンロード時のファイル名のまま(例えば mkcert-v1.4.4-windows-amd64.exe のまま)になっていないか.
- 別のフォルダから実行したい場合は,C:\mkcert\mkcert.exe のようにフルパスで入力する.
443 番ポートが使われている
IIS や Skype など,他のソフトが 443 番を使っていることがある.
以下のコマンドでどのプロセスが使っているか確認できる.
netstat -ano | findstr :443
該当のソフトを止めるか,ポートを変更する.
証明書が信頼されない
mkcert -install を実行したユーザーと,ブラウザを使っているユーザーが違うと信頼されないことがある.
管理者権限のコマンドプロンプトから mkcert -install を実行し直す.
mod_ssl が読み込めない
エラーログに mod_ssl.so が読み込めない旨のエラーが出る場合,Apache の 32/64bit と PHP や環境の 32/64bit が合っていないことが多い.
ダウンロードし直したものと bit 数が揃っているか確認する.
お問い合わせ・無料試用お申し込みフォーム
ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.
ホームページアクセスログ解析
追跡・トラッキング機能
ページ閲覧解析システム
アンケートフォーム
認証付きダウンロード機能
メール配信システム
営業支援システム
システムと繋がるMCPサーバー
名刺管理
パスワード不要な会員サイト
会員制不要なオンライン展示会
販促/ホームページ支援の流れ
ホームページ制作勉強会
ホームページ制作&コンサル
商品企画コンサルティング
営業コンサルティング
ホームページメンテナンス