PHPStoemでローカルに立てたサーバにsslで接続するとエラーになる場合の対処法


発生した現象

PHPStormでhttps://localhostに接続してJavascriptのデバッグをしようとしたら、例外が発生して接続できませんでした。発生した例外は以下のもの。

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

原因

PHPStormはJDK6を使っているが、OSX 10.9 MarvericksにはJDK7しか入っていないため。
JDK6が入っていたとしても、https://localhostの自己証明書がJava6に登録されていないため接続できない。

対処法

JDK 6を入れる

Mac Developer Centerにログインして対応したJava6をダウンロードしてインストール。Homeフォルダのシンボリックリンク書き換えなど、下記のページを参考にしました。

JDK6にlocalhostの証明書を登録

cd /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security
cp cacerts cacerts_org
keytool -import -file /path/to/server.crt -keystore /cacerts -alias localhost
  • keytoolでlocalhostの証明書をJDK6に追加する。
  • cacertsを念のためバックアップとっておく。
  • server.crtはlocalhostにssl接続するために作った時の証明書。
  • keytoolを実行すると、cacertsファイルのパスワードを聞かれる。デフォルトのパスワードはchangeit
  • バージョンによってはchangemeであるという情報も見たが詳細は不明。

上記を行って、PHPStormを再起動するとJavascriptをデバッグできるようになった。

その他

PHPのProjectのツリーで、Document Rootのフォルダで右クリックして、Mark Directory As > Resource Rootを設定してやれば、デバッグに使うファイルをそのフォルダから読み込むようになるので、上記の対応はいらないかも・・。(あとから気づいたが真意は不明)