在對報文進行證書籤名時,報錯信息如下
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());