Paypal证书升级到sha256

时间:2016-01-21 05:50:20

标签: java ssl paypal certificate rsa-sha256

Paypal已更新其沙箱API端点和证书,以使用sha256而不是sha1。 要迁移我的应用程序(连接到PayPal进行快速结账)以使用sha256,

a)从我的paypal帐户中删除并下载了新证书并进行了转换 它到.p12格式 使用openssl确认证书使用sha256withRsa

b)确认/etc/ssl/certs/ca-certs.crt具有链接中给出的verisign G5 CA证书 https://gist.github.com/robglas/3ef9582c6292470a1743

仍然无法从使用HttpClient的java代码连接到paypal沙箱。握手期间失败

在java代码中 - 使用SSLContext.getInstance(" SSL")

使用自定义Truststore

Class CustomTrustManager implements X509TrustManager {

public boolean checkClientTrusted(java.security.cert.X509Certificate[] chain) {
    return true;
}

public boolean isServerTrusted(java.security.cert.X509Certificate[] chain) {
    return true;
}

public java.security.cert.X509Certificate[] getAcceptedIssuers() {
    return null;
}

public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}

public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}

}

我正在使用实例SunX509的KeyManagerFactory并将其初始化为pkcs12密钥库。

我错过了什么。请帮忙!

2 个答案:

答案 0 :(得分:1)

这更适合评论,但我没有足够的声誉。 我在过去与其他服务有类似的问题,问题是java 7默认使用旧的ssl算法,如果可以的话尝试使用java 8。如果您必须坚持使用当前的Java版本,请尝试使用不同的算法,或者查看是否可以从paypal获取有关ssl配置的一些信息。这link可能会有所帮助

答案 1 :(得分:0)

问题在于open-jdk 7版本。看来open jdk默认具有JCE无限强度策略文件(需要支持256位密码)。但是有些版本禁用了密码(可能是一个错误)。将open jdk升级到版本1.7.0_91解决了这个问题。