xamppが役に立つのは、もう、誰もが知る所(いいすぎ ^^;)
ですが、最近使ってて気になることが2点。一つはxamppの更新。もう一つがSSL使ってアクセスすると証明書エラーが生じること。今回は前者についての記事となります(というか、後者はまだ解決できず・・・)
xamppで立てたサーバにchrome + SSLでアクセスすると「この接続ではプライバシーが保護されません」と表示され、毎回いちいち「大丈夫だよ!」とchromeに教えてあげないといけません(危険なことを承知でアクセスしますか?的なクリックを2回)。これが非常に面倒です。
対処方法は、
- apacheの証明書設定
- OSへの証明書インストール
です。
なお確認環境は「Win7」「xampp1.8.1」「chrome 46」です。また、バーチャルホストで複数ドメイン運用している場合となります。
1. apacheの証明書設定
まずひとつ目、apacheの証明書設定です。大まかにいうと証明書を生成して読み込むよう設定します。
1.1. 証明書を生成
xampp apache同梱のmakecert.batを使います。ただ、このまま使うとSHA-1という古い署名方式になってしまい、これはこれでchromeさんのお気に召さないみたいです。そこでmakecert.batを修正します。csrを生成するコマンドに-sha256というオプションをつけます。ついでに証明書の有効期間をずばっと10年に広げてみます。
変更前
bin\openssl req -new -out server.csr ・・・ bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
変更後
bin\openssl req -new -out server.csr -sha256 ・・・ bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
このあとmakecert.batを実行しますが、いくつか質問されます。最初のPEM Passphraseとその確認、飛んでCommon Nameにバーチャルホストのドメイン名を入力、最後にPEM Passphraseを再入力すればOKです。詳しくはmakecert.batで検索してもらえれば。
これによりapache/conf以下に
- ssl.crt/server.crt
- ssl.key/server.key
が生成されます。これらのファイルセットをバーチャルドメインごとに生成しますので、生成後、適当な名前(バーチャルドメインがわかるようなものがベター?)に変えます。この作業をバーチャルドメイン分繰り返します。
1.2. 証明書の設定
httpd-ssl.conf(今回だとapache/conf/ext/以下)で、先ほど生成したcrt, keyを指定します。デフォルトでSSLCertificateFileはserver.crt, SSLCertificateKeyFileはserver.keyを指定しているので、そこを書き換える形が簡単です。
変更前
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
変更前
SSLCertificateFile "conf/ssl.crt/[変更した名前].crt"
SSLCertificateKeyFile "conf/ssl.key/[変更した名前].key"
変更前
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
変更前
SSLCertificateFile "conf/ssl.crt/[変更した名前].crt"
SSLCertificateKeyFile "conf/ssl.key/[変更した名前].key"
SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key"
変更前
SSLCertificateFile "conf/ssl.crt/[変更した名前].crt"
SSLCertificateKeyFile "conf/ssl.key/[変更した名前].key"
SSLCertificateFile "conf/ssl.crt/[変更した名前].crt" SSLCertificateKeyFile "conf/ssl.key/[変更した名前].key"
apacheの証明書設定は以上です。
2. OSへの証明書インストール
これでapacheから証明書を提示されるようになりましたが、この証明書、生成したばかりで、OSにとっては見知らぬ証明書、「危険じゃないかな?」と勘ぐられてしまいます。そこで、安全な証明書であることをOSに教えてあげる(インストール)必要があります。生成したcrtファイルをダブルクリックするとインストールウィザードが表示されるのでその指示に従えばOKです。このとき、「証明書ストア」という設定にて「証明書をすべて注ぎのストアに配置する」→「信頼されたルート証明機関」を設定してください。
以上で設定は終了です。apacheを立ち上げ、chromeでアクセスするとURL横のバツ印はついたままなものの、当初でていたエラー画面ではなく、通常の画面が表示されるようになります。クリック数が減って、開発効率が向上すること間違いなし!?