SSLを用いたサイトのテストをする際、証明書を使わないと
こんなエラーが毎回表示される。表示させる方法はあるのだけれど、毎回やるのは面倒。
少し前にはSHA-1を用いた証明書をインストールする方法も公開されていたのだけれど、2017年1月からchrome等のブラウザではSHA-1を用いた証明書は安全とみなされなくなった。
そこで、XAMPP環境でSHA-256を用いたオレオレ証明書の発行をしてみる。
#xampp環境での準備
php.iniの
extension=php_openssl.dll
を有効にすればxampp環境でSSLを使う準備ができる。
#localhostでの証明書の生成
##SHA-256を指定
Apacheのルートディレクトリにあるmakesert.batを修正する。
bin\openssl req -new -out server.csr
↓
bin\openssl req -new -out server.csr -sha256
-sha256オプションを付与することで、SHA-256を使った証明書の作成ができる。
##有効期間を10年にする
デフォルトでは有効期間が1年。毎年作るのも面倒なので10年にしておく。
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
↓
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
単純に365を3650にするだけ。
#バッチの実行
makesert.batを実行する。
Common Nameに、証明書に利用するドメイン名を指定する。
xamppの場合、localhostでOK。
パスフレーズを指定するとApacheの起動時に必要になる場合があるので無しでOK。
Enter PEM pass phrase: ← パスワード入力
Verifying - Enter PEM pass phrase: ← もう1度
Country Name (2 letter code) [AU]:JP ← 日本なら
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Chiyoda
Organization Name (eg, company) []:← 組織名
Organizational Unit Name (eg, section) []:← 部課
Common Name (eg, YOUR name) []:localhost ← ドメイン名
Email Address []:mail@example.jp
A challenge password []: ← 空欄でOK
An optional company name []: ← 空欄でOK
Enter pass phrase for privkey.pem: ← 最初のパスワード
#Apacheへの証明書の指定
apache/conf以下に
- ssl.crt/server.crt
- ssl.key/server.key
が生成されているので、httpd-ssl.confファイルにて指定する。
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
#ブラウザへのインストール
server.crtファイルをダブルクリックし、「証明書のインストール」を押してウイザードを起動する。
「証明書をすべて次のストアに配置する」の「参照」を押して「信頼されたルート証明機関」を選択する
#Apacheを再起動
Apacheを再起動。https://localhostにアクセスしてエラーが表示されないことを確認する。