XAMPPのローカルサーバーでSSL対応をする方法

どうも、タカフです。

Chrome68のアップデートに伴っていよいよ全サイトに対してSSL対応が極めて必須に近い状態になりました。

今となってはAWSやさくらサーバー等の各種レンタルサーバーで無料SSLが使えるようになり、またそうしたドキュメントも公式や個人ブログなどたくさん紹介されているので、リモートサーバーでは大分簡単にSSL証明書を入れられるようになりました。

しかしローカルのWebサーバーではちょいと手順が必要なので、本記事ではlocalhostをhttpsアクセスできる方法として備忘録を兼ねて記事にしたいと思います。

1. php_openssl.dllの有効化

sslを使う為のモジュールphp_opensslを有効化しておきましょう

php.ini
;extension=php_openssl.dll
↓
extension=php_openssl.dll

2. openssl.cnfのコピー

以下のファイルを同じディレクトリにコピーします。
[xamppディレクトリ]apache\conf\openssl.cnf
↓コピー
[xamppディレクトリ]apache\conf\openssl-san.cnf

コピーしたらopenssl-san.cnfファイルをテキストエディタで開いてファイル最後に以下を追加します。

openssl-san.cnf
[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost
# 他に認証したいドメインがあれば以下に増やしていきます
#DNS.2 = local.my-site.com
#DNS.3 = local.my-blog.com

3. SSL証明書の発行

opensslコマンドがデフォルトで使えるgit bashのターミナルを使用します。インストールしてない人は、Git for Windows からインストールしてください。
インストール出来たらgit bashのターミナルを開いて以下のコマンドを打っていきます。

git bash

# apacheのconfディレクトリに移動
$ cd [xamppディレクトリ]/apache/conf/
# 証明書の発行
$ openssl req \
    -newkey     rsa:4096 \
    -keyout     my-localhost.key \
    -x509 \
    -nodes \
    -out        my-localhost.crt \
    -subj       "//CN=localhost" \
    -reqexts    SAN \
    -extensions SAN \
    -config     openssl-san.cnf \
    -days       3650

4. apacheのconfファイルに追記

httpd-ssl.conf
<VirtualHost *:443>
    ServerName localhost
    DocumentRoot "[80ポートと同じDocumentRoot]"
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/my-localhost.crt"
    SSLCertificateKeyFile "conf/ssl.key/my-localhost.key"
</VirtualHost>

5. 証明書のインストール

先程作ったmy-localhost.crtファイルをダブルクリックします。Windows標準の証明書がインストーラーが動くので、現在のユーザー証明書をすべて次のストアに配置する にして、信頼されたルート証明機関でインストールを進めます。

ブラウザ確認

無事に自己証明書でlocalhostをSSL対応出来ました。

localhost以外にローカルサーバーへのドメインを増やしてそれもSSL化対応したい時は、2.で追記したopenssl-san.cnfにそのドメインを追記してapacheを再起動してやるだけで、追加可能です。

現場からは以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です