iPhoneのプッシュ通知の認証に使っている証明書はp12という拡張子になると思いますが、この証明書をパスワードなしで書き出した場合に、JavaのKeyStoreに読み込めないという問題があります。
証明書を読み込もうとしたらゼロ除算で例外が発生
MacでiPhoneのプッシュ通知に関する開発中、パスワードなしで書き出した証明書をKeyStoreを用いて読み込もうしたらゼロ除算の例外が発生しました。
これは以下のように問題として報告されています。
JDK-6415637 : PKCS12KeyStore exceptions
Caused by: java.lang.ArithmeticException: / by zero
at com.sun.crypto.provider.PKCS12PBECipherCore.a(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore.a(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore.a(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore.a(DashoA13*..)
パスワード入れれば済むのですが、少し気持ち悪いです。
JDK7 update 4で修正
少し辿ってみると、JDK7で修正されているという記述が見つかりました。
JDK-2221118 : enable empty password support for pkcs12 keystore
ターミナルで現在のJavaのバージョンを確認してみます。
$ java -version
java version "1.6.0_43"
JDK6のようなので、アップデートしたら直るかな、と思いアップデートしてみます。
JDKのダウンロードは、Java SE Downloadsから。
$ java -version
java version "1.7.0_25"
アップデート完了。これで実行してみたら、先ほどの例外は出なくなりました。
コメント