-1

我使用 PuttyGen 生成一个paypal.pem 如此处所述的(但另存为 .ossh)。

好的,最后我像这样配置 Paypal:

PayRequest request = new PayRequest();
   ...
HashMap<String, String> configurationMap = new HashMap<String, String>();
configurationMap.put("acct1.UserName", "XXX");
configurationMap.put("acct1.Password", "XXX");
configurationMap.put("acct1.CertKey", "XXX");
configurationMap.put("acct1.CertPath", "src/test/resources/PayPal09-2013.ossh");
AdaptivePaymentsService s = new AdaptivePaymentsService(configurationMap);
s.pay(request);

在最后一行抛出一个SSLConfigurationException

com.paypal.exception.SSLConfigurationException: toDerInputStream rejects tag type 45
    at com.paypal.core.DefaultHttpConnection.setupClientSSL(DefaultHttpConnection.java:42)
    at com.paypal.core.APIService.makeRequestUsing(APIService.java:165)
    at com.paypal.core.BaseService.call(BaseService.java:258)
    at com.paypal.svcs.services.AdaptivePaymentsService.pay(AdaptivePaymentsService.java:589)
    at com.paypal.svcs.services.AdaptivePaymentsService.pay(AdaptivePaymentsService.java:552)
          ...
Caused by: com.paypal.exception.SSLConfigurationException: toDerInputStream rejects tag type 45
    at com.paypal.core.SSLUtil.setupClientSSL(SSLUtil.java:129)
    at com.paypal.core.DefaultHttpConnection.setupClientSSL(DefaultHttpConnection.java:40)
    ... 30 more
Caused by: java.io.IOException: toDerInputStream rejects tag type 45
    at sun.security.util.DerValue.toDerInputStream(DerValue.java:847)
    at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1221)
    at java.security.KeyStore.load(KeyStore.java:1214)
    at com.paypal.core.SSLUtil.p12ToKeyStore(SSLUtil.java:92)
    at com.paypal.core.SSLUtil.setupClientSSL(SSLUtil.java:115)
    ... 31 more
4

1 回答 1

2

错误消息的第一个 Google 命中表明臭名昭著的不合作 Java Crypto API 要求密钥文件为 PKCS12 格式,并且您可以使用 OpenSSL 将文件转换为 PKCS12,如下所示:

openssl pkcs12 -export -in paypal.pem -out paypal.pkcs12
于 2013-09-19T10:23:06.557 回答