• HOME > 
  • PHP > 
  • XAMPPでSSLを有効にする方法【httpsでアクセスでき...

XAMPPでSSLを有効にする方法【httpsでアクセスできるようにする】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像
広告
広告
2024年10月2日訂正

当ページにおいて、記述ミスのご指摘を頂きましたので修正を行いました。

「opnessl」と書いてしまっておりましたが、正しくは「openssl」です。

ご迷惑をおかけし、大変申し訳ございません。

XAMPPはSSL化できる?

WordPressなどをローカル環境で開発できて便利なXAMPPですが、初期設定ではSSL化に対応していないためブラウザでは以下のような表示が出ます。

保護されていない

無理やりhttpsでアクセスしようとすると警告画面が表示されます。

保護されていない

サイトを公開するにあたってはSSL化はほぼ必須であると言えます。本番環境ではSSL化しているのに、ローカル環境は非SSL化のままだと、開発や修正のたびに設定を変える必要が出るなと不都合が生じる場合があるので、当記事では筆者がXAMPPをSSL化した手順を備忘録としてまとめます。

あくまで私の環境下で成功した事例をご紹介するので、すべての環境でうまくいくかは保証できかねますのでご容赦ください。

XAMPPにWordPressをインストールする方法について詳しくはこちらのページをご覧ください。

XAMPPをSSL化する手順

XAMPPをSSL化してhttpsでアクセスできるようにするには、設定ファイルの変更と証明書の作成が必要です。

なお、ご紹介する手順は筆者の環境下で成功した事例です。それ以外の環境では予期せぬ不具合をもたらす場合もございますので作業の実施はあくまでも自己責任でお願い致します。

検証環境Window10XAMPP for Windows 8.2.4

古い証明書を削除しておく

まずはじめに、今の時点で古い証明書があれば削除しておきます。

Chromeの右上の「・・・」を押して「設定」を開きます。

Chromeの設定

設定ページが表示されたら「プライバシーとセキュリティー」をクリックします。

プライバシーとセキュリティー

「セキュリティー」を開きます。

セキュリティー

「証明書の管理」を選択します。

証明書の管理

「証明書」ウィンドウが表示されたら、「信頼されたルート証明機関」タブを選択します。

信頼されたルート証明機関

古い「localhost」証明書があれば削除しておきます。古い証明書が無ければ何もせず閉じて次の作業に進みます。

証明書があれば削除

php.iniのコメントアウトを外す

\xampp\php\php.iniの984行目付近にある「extension=php_openssl.dll」にコメントアウト(「;」)が付いていたら外して保存します(デフォルトでは外れているはずです)。

php.ini

extension=php_openssl.dll   

openssl-san.cnfを作成する

\xampp\apache\conf\openssl.cnfファイルをコピペで複製し、複製したファイルを「openssl-san.cnf」という名前にリネームします。

続けて、openssl-san.cnfを開いたら末尾に以下を追記します。

openssl-san.cnf

#追記
[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost

httpd-ssl.confを編集

\xampp\apache\conf\extra\httpd-ssl.confの末尾に以下を追記します。

「ssl-server.crt」と「ssl-server.key」は任意のファイル名なのですが、後ほどコマンドで生成するファイルの名前と同じにするということを覚えておいてください。

httpd-ssl.conf

#追記
<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
SSLEngine on
SSLCertificateFile "conf/ssl.crt/ssl-server.crt"
SSLCertificateKeyFile "conf/ssl.key/ssl-server.key"
</VirtualHost> 

コマンドで証明書を生成する

Windows Git Bashを使用してコマンドで証明書を生成します。

confディレクトリに移動します。

cd /c/xampp/apache/conf

以下のようにコマンドを実行してcrtとkeyの2つのファイルを生成します。最後の-days 3650を実行して「....+....」というように表示されたら成功です。

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

\xampp\apache\confに「ssl-server.crt」と「ssl-server.key」が生成されます。

生成したファイルを移動する

出来上がった2つのファイルを同じ階層にある「ssl.crt」と「ssl.key」というディレクトリにそれぞれ移動させます。

証明書のインストール

ssl.crtディレクトリに移動した「ssl-server.crt」ファイルをダブルクリックし、「証明書のインストール」を押します。

証明書のインストール

証明書のインポートウィザードが始まるので「現在のユーザー」を選んで「次へ」を押します。

インポートウィザード

「証明書をすべて次のストアに配置する」を選んで、証明書ストアを参照の中から「信頼されたルート証明機関」にして「次へ」を押します。

証明書の配置

「完了」を押してインポートを終了します。

インポートウィザードの完了

セキュリティー警告が出たら「はい」を押して完了させます。

SSL化されているか確認する

これでXAMPPのSSL化設定は完了です。

XAMPPのコントロールパネルからApacheもMySQLも一度「STOP」してから再起動します。

Chromeも一度全て閉じて開き直します。

Chromeのアドレスバーに「https://localhost」と入力してXAMPPのダッシュボードページを開きます。「localhost」だけだとhttp通信になると思います。自動でhttps通信にしたければhtaccessでリダイレクト設定を行う必要があります。

以下のように「この接続は保護されています」となっていればSSL化完了です。

この接続は保護されています

まとめ

以上がXAMPPでSSLを有効にしてhttpsでアクセスできるようにする方法です。

公開中のWordPressサイトをXAMPP環境に複製した際に、SSL化プラグインによって強制的にhttpsにリダイレクトされてしまいアクセスできなくなるという不具合にあったこともあるので、ローカル環境もSSLに対応しておいた方が無難だと思っています。

広告
広告

関連する記事

サムネイル

PHPで配列内を検索してインデックス番号を取得する【arra……

2024年07月03日
array_searchは、配列内から特定の値を検索し、見つかった場合はその値のキー(インデックス番号)を返す関数です。該当する値が複数ある場合は、はじめに見つかったインデックス番号を返します。
サムネイル

PHPで配列内に値が存在するか判定する【in_array】

2024年07月02日
PHPのin_arrayは、配列内に特定の値が存在するかを判定して、結果をtrueかfalseで返してくれる関数です。第一引数に「調べたい値」、第二引数に「対象の配列」を指定して判定を行います。
サムネイル

PHPで配列から特定の値を持つキーを全て取得する【array……

2024年07月02日
HPのarray_keys関数は対象の配列からすべてのキー、もしくは特定の値を持つキーを取得して新しい配列として返してくれる関数です。基本的には引数に配列と検索する値をセットして使用します。
サムネイル

PHPで多次元配列の並び替え(ソート)を行う【array_m……

2024年06月13日
PHPで配列のソートを行う方法は他にもありますが、array_multisort関数を使えば、とても簡潔なコードで多次元配列を任意の条件・順序で並び替えを行うことができます。
サムネイル

PHPで配列の最小値や最大値を取得する【minとmax】

2024年06月13日
PHPのmin関数とmax関数はそれぞれ配列の最小値と最大値を取得できる関数です。引数に対象の配列を指定すると最小値や最大値を返します。
サムネイル

PHPで多次元配列から特定のカラムの値を取得する【array……

2024年05月29日
PHPのarray_columnは多次元配列の中から指定したカラムの値のみを抽出することができる関数です。抽出した値は新しい配列に格納されて返ってきます。