XAMPPでOpenSSLを設定する
公開日:2020.01.07
更新日:2020.01.09
そろそろ自分の開発環境下でも自作証明書でhttps化を行おうと思います。 わたしは普段XAMPPを使用しているので、それで作成します。
そんな難しくないようなのでサクッと出来ることを祈ります。
まずはバージョン確認。
おまけ)バージョン確認方法
https://gyazo.com/7fceddd5179dd86732af232b09787b03
code:.sh
# httpd -v
Server version: Apache/2.4.33 (Win32)
Apache Lounge VC15 Server built: Mar 28 2018 12:12:41
# openssl version
OpenSSL 1.1.0h 27 Mar 2018
# php -v
PHP 7.3.13 (cli) (built: Dec 17 2019 13:17:19) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.13, Copyright (c) 1998-2018 Zend Technologies
証明書のバージョンはV3が必要です。
OpenSSLのバージョンが1.0.2未満なら新しいXamppを再インストールしてください。
XAMPPのバージョンはコンパネのApache Adminで確認するか、XAMPPフォルダ内のReadmeで確認できます。
が、5.5.33以上であれば、XAMPPのバージョンは内包しているPHPと同じです。
1 php.iniの編集
※ 設定ファイルを触る時は絶対にバックアップ!
code:xampp\php\php.ini
;extension=php_openssl.dll
extension=php_openssl.dll
これは古いPHPを使いっぱなしでなければデフォルトで有効なはず。
2 httpd-ssl.confの編集
code:xampp\apache\conf\extra\httpd-ssl.conf
<VirtualHost *:443>
DocumentRoot "C:/DEV/xampp/htdocs/ssl" # SSL化したいフォルダ
ServerName test.ssl.jp # hostsに指定しているものと同じ
SSLEngine on
SSLCertificateFile "conf/ssl.crt/dev-ssl.crt" # 作成する証明書名に揃える
SSLCertificateKeyFile "conf/ssl.key/dev-ssl.key" # 作成するkey名に揃える
</VirtualHost>
末尾に追加します。
3 openssl.cnfの編集
まずはコピペしてリネーム
openssl.cnf → openssl-san.cnf
リネームした方の末尾に以下を追記
code:xampp\apache\conf\openssl-san.cnf
subjectAltName = @alt_names
DNS.1 = httpd-sslで書いたServerName
DNS.2 = 追加時はここに増やしていきます
DNS.3 = こんなかんじに増やします
4 Git Bushでkeyの作成
Git Bushが無い場合でもkeyを作成できますが、そのままだと必要モジュールが足りておらず、 少し手間がかかります。
今回はGit Bushでkeyを作成します。
Git Bushを開いて、cdコマンドで移動します。
code:.sh
user@USER MINGW64 ~ (BARE:master) # ~ が今いるところ
$ cd /c/xampp/apache/conf # xamppが置いてあるフォルダを指定してください
user@USER MINGW64 /c/DEV/xampp/apache/conf
$
そして、以下を長いけど頑張ってうちます。
\ を打ってenterキーを押すと複数行の入力ができます。
(> は最初からあるので、- から打ちます。)
code:xampp\apache\conf.sh
$ openssl req \ > -newkey rsa:4096 \
-keyout dev-ssl.key \ # 鍵ファイル名(httpd-sslで書いたやつ)
-x509 \
-nodes \
-out dev-ssl.crt \ # 証明書ファイル名(httpd-sslで書いたやつ)
-subj "//CN=localhost" \ # httpd-sslで書いたServerName(CN=ServerName)
-reqexts SAN \ > -extensions SAN \
-config openssl-san.cnf \ > -days 3650
これでxampp\apache\conf\に証明書と鍵が作られたはずです。
https://gyazo.com/29d278a36486d1c0dcb5ae67a9d03ec5
いました(*'▽')
dev-ssl.crtを直下のssl.crtへ、dev-ssl.keyを直下のssl.keyへ移動します。
5 証明書の認証
xampp\apache\conf\ssl.crt\内の、先程移動したdev-ssl.crtをダブルクリックします。
https://gyazo.com/aa830587f8ec8e72b9f18db4eda032f3
するとこんな画面が。
「証明書のインストール」を押します。
すると証明書のインポートウィザードが始まります。
保存場所 → 現在のユーザー → 次へ
証明書ストア → 証明書をすべて次のストアに配置する → 参照 → 信頼されたルート証明機関 → 次へ → 完了
セキュリティ警告 → はい
6 確認
それでは早速ブラウザで確認!
の前に、XAMPPとブラウザを再起動します。
ChromeとIE、Edgeなら問題なく見られるはずです。
(近い将来セキュリティ強化された場合どうなるかは…)
Firefoxはこんなかんじ…
https://gyazo.com/bf6e9607e00c6d206c129732ff20bb47
Firefoxは今現在(2020/1)だとセキュリティ例外に加えるしか方法はなさそうなので、「詳細情報...」を押した後
「危険性を承知で続行」を押してください。
https://gyazo.com/ebe974ac5d6d8e91984887a6a8cac7ba
これで一応見れるようにはなりました。
7 他のテスト環境を追加する
Windowsのhostsファイルに追記し、項目2以降を再度実行してください。
8 なんかうまくいかない
ブラウザ・XAMPPの再起動を行ってください。(ブラウザは一旦全部閉じる)
以下のように一度インストールした証明書を削除してから実施してから、証明書の再認証(項目5)をしてブラウザ・XAMPPを再起動してください。
https://gyazo.com/ebc9ec95ffbc031fc9c5c0c109905552
設定 → 詳細設定 → 証明書の管理
https://gyazo.com/43e4d9454e7d017cd0c3c165be87a8bc
信頼されたルート機関 → 発行した証明書 → 削除
記述に誤りがないか確認してください。
バージョンが古くないか確認してください。
楽しいTLS / SSLライフを!😊