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密钥库。
我错过了什么。请帮忙!
答案 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解决了这个问题。