PKCS12 not found 的一種解決方案

在對報文進行證書籤名時,報錯信息如下 

com.ly.asgw.job.allinpay.util.AIPGException: 加簽失敗 keyfile=E:/certs/Allinpay/20058400002509504.p12 pass=111111 CAUSE: PKCS12 not found
	at com.ly.asgw.job.allinpay.util.AIPGSignature.signMsg(AIPGSignature.java:88)
	at com.ly.asgw.job.allinpay.util.DemoUtil.buildSignedXml(DemoUtil.java:75)
	at com.ly.asgw.job.allinpay.demo.Tranx100014.main(Tranx100014.java:45)
Caused by: java.security.KeyStoreException: PKCS12 not found
	at java.security.KeyStore.getInstance(KeyStore.java:940)
	at com.ly.asgw.job.allinpay.util.AIPGSignature.signMsg(AIPGSignature.java:58)
	... 2 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: PKCS12, provider: BC, class: org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore)
	at java.security.Provider$Service.newInstance(Provider.java:1684)
	at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
	at sun.security.jca.GetInstance.getInstance(GetInstance.java:218)
	at java.security.Security.getImpl(Security.java:726)
	at java.security.KeyStore.getInstance(KeyStore.java:937)
	... 3 more
Caused by: java.lang.IllegalArgumentException: can't create cert factory - java.security.NoSuchProviderException: no such provider: BC
	at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.<init>(Unknown Source)
	at org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore.<init>(Unknown Source)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.security.Provider$Service.newInstance(Provider.java:1662)
	... 7 more

解決方案如下:添加一行 在初始化 KeyStore 之前

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章