XAMPPのApacheでSSLを有効にする方法
2026年 9月15日 Posted 野々瀨(フロントエンドエンジニア)
ローカルなどのXAMPP環境で、Apacheの初期の状態ではSSLが有効になっておらず、HTTPSによる接続ができません。そこで今回は、XAMPPのApacheに対してSSLを有効にする方法をご紹介しようと思います。
記事の説明環境
- Windows 11
- XAMPPインストール済み
- Apache 2.4
- PHP 8.2
opensslコマンドが実行できる環境(WSLまたはGit Bashなどインストール済み)
1. 古い証明書の削除(ある場合)
既に該当のドメインの証明書がインストールされていて、古い有効期限のものがある場合は削除を行います。
Windowsの設定画面を開き、検索入力欄に「証明書」などを入力し、ヒットした「ユーザー証明書の管理」を押して開きます。

右側のツリーから「信頼されたルート証明機関」の下にある「証明書」を開きます。左側の証明書の一覧から該当のドメインを右クリックしてコンテキストメニューを開き、「削除」を押します。

本当に削除してよいかどうかの質問ダイアログが表示されるので、「はい」を押します。

再度削除する内容を聞かれるので、「はい」を押します。

これで古い証明書の削除は完了です。
2. PHPのOpenSSLの有効化(必要がある場合のみ)
PHPの設定でOpenSSLを有効にします。「C:\xampp\php\php.ini」ファイルを開き、extension=opensslまたはextension=php_openssl.dllのコメントアウトを外します。
- ; extension=openssl
+ extension=openssl
筆者の環境では対象のモジュールは「openssl」でしたが、(おそらく)古いPHPのバージョンだと「php_openssl.dll」となります。
- ; extension=php_openssl.dll
+ extension=php_openssl.dll
サーバーを再起動します。
ブラウザーからphpinfo();でモジュールが有効になっていることを確認します。初期では「http://localhost/dashboard/phpinfo.php」で確認することができると思います。

3. 設定拡張ファイルの準備
XAMPPのインストールディレクトリーにある「apache\conf\openssl.cnf」ファイルを複製します。複製したファイル名についてはここでは仮に「openssl-san.cnf」とします。
複製したファイルを開き、末尾に次を追記して保存します。
[ SAN ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
DNS.2 = test.localhost
alt_namesセクションのDNS.番号にSSLを有効にしたいドメインを追加していきます。この例では「localhost」と「test.localhost」を対象にしています。
4. 証明書の発行
Linuxコンソールを起動し、コマンドラインで複製した設定拡張ファイルまでのディレクトリーへ移動します。
cd C:\xampp\apache\conf
次のコマンドを実行します。
openssl req \
-newkey rsa:4096 \
-keyout ssl.key/my-server.key \
-x509 \
-nodes \
-out ssl.crt/my-server.crt \
-subj "//CN=test" \
-reqexts SAN \
-extensions SAN \
-config openssl-san.cnf \
-days 3650
各オプションについては次のとおりです。
| オプション | 説明 |
|---|---|
| -newkey | 暗号の種類です。 |
| -keyout | 秘密鍵の保存先ファイルパスです。 |
| -x509 | X.509証明書であることを表します。 |
| -nodes | パスフレーズを付けなくします。 |
| -out | 証明書の保存先ファイルパスです。 |
| -subj | 証明書のユーザーです。ここでは適当なダミーの名前を指定します。 |
| -reqexts | -configで指定した設定ファイルの中にある参照するセクション名です。多くは-extensionsと同じ指定をします。 |
| -extensions | -configで指定した設定ファイルの中にある参照するセクション名です。多くは-reqextsと同じ指定をします。 |
| -config | 複製・編集したopenssl.cnfのファイルパスを指定します。 |
| -days | 有効期限です。日数で指定します。(3,650…… およそ10年) |
5. 証明書のインストール
発行した証明書をインストールします。-outオプションで指定したファイルを右クリックし、コンテキストメニューから「証明書のインストール」を押します(表示されない場合はShiftキーを押しながら右クリックすると、全てのコンテキストメニューが表示されます)。

「保存場所」を「現在のユーザー」にチェックを入れ、「次へ」ボタンを押します。

「証明書をすべて次のストアに配置する」にチェックを入れ、「証明書ストア」の「参照」ボタンを押します。

ストアの一覧から「信頼されたルート証明機関」を選択し、「OK」ボタンを押します。

「証明書ストア」の入力欄に「信頼されたルート証明機関」が表示されたら「次へ」ボタンを押します。

最終確認画面が表示されますので、内容を確認し「完了」ボタンを押します。

セキュリティ警告ダイアログが表示される場合は、「はい」ボタンを押します。

「正しくインポートされました。」とメッセージダイアログが表示されたら「OK」ボタンを押してインストール完了です。

6. Apacheの各ドメイン
XAMPPのインストールディレクトリーにある「apache\conf\extra\httpd-ssl.conf」ファイルを開き、SSLにしたい環境を追記します。
<VirtualHost *:443>
DocumentRoot "C:/web/test/public_html"
ServerName test.localhost
SSLEngine on
SSLCertificateFile "conf/ssl.crt/my-server.crt"
SSLCertificateKeyFile "conf/ssl.key/my-server.key"
<Directory "C:/web/test/public_html">
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
SSLEngineディレクティブをonにすることでSSLを有効にします。SSLCertificateFileディレクティブに証明書のファイルパスを指定します。SSLCertificateKeyFileディレクティブに秘密鍵のファイルパスを指定します。
Apacheを再起動すれば完了です。
7. ブラウザーで動作確認
ブラウザーを起動し、httpsでの接続を確認します。正しく表示されれば無事SSL対応が完了です。

