code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BadPaddingException when Java + APNs (Apple Push Notification service)

java-apnsを使ってiOS向けPush通知を実装中。

次のような例外が出て処理が進まなかった。検索すると証明書が悪いとか、JDKのバージョンは?といった回答が出てくる。

結局、次のふたつが悪かった。

  • p12ファイルとしてエクスポートする時は証明書と秘密鍵の両方を選択した状態で書き出す。
    Local and Push Notification Programming Guideに次のように書いてあった。
    Select both the certificate and key, choose File > Export Items, and export them as a Personal Information Exchange (.p12) file.
  • 書き出したときのパスワードとJavaで呼び出すときのパスワードが合っていなかった。パスワードをプロパティファイルに書いていたのだが何故かプロパティ名をApnsServiceBuilder.withCertに渡していた。
com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
	at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:102) ~[apns-0.1.6.jar:na]
	at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:139) ~[apns-0.1.6.jar:na]
Caused by: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
	at sun.security.pkcs12.PKCS12KeyStore.engineLoad(Unknown Source) ~[na:1.7.0_10]
	at java.security.KeyStore.load(Unknown Source) ~[na:1.7.0_10]
	at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:87) ~[apns-0.1.6.jar:na]
	... 3 common frames omitted
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811) ~[sunjce_provider.jar:1.7.0_10]
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676) ~[sunjce_provider.jar:1.7.0_10]
	at com.sun.crypto.provider.PKCS12PBECipherCore.implDoFinal(PKCS12PBECipherCore.java:355) ~[sunjce_provider.jar:1.7.0_10]
	at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40.engineDoFinal(PKCS12PBECipherCore.java:462) ~[sunjce_provider.jar:1.7.0_10]
	at javax.crypto.Cipher.doFinal(Cipher.java:2087) ~[na:1.7.0_10]
	... 6 common frames omitted
関連記事
タグ:Java APNs java-apns
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。