【发布时间】:2016-04-27 06:10:21
【问题描述】:
Paypal 已更新其沙盒 API 端点和证书以使用 sha256 而不是 sha1。 要将我的应用程序(连接到贝宝以进行快速结帐)迁移到使用 sha256,
a) 从我的贝宝帐户中删除并下载新证书并转换 它为 .p12 格式 使用 openssl 确认证书使用的是 sha256withRsa
b) 确认 /etc/ssl/certs/ca-certs.crt 具有链接中给出的威瑞信 G5 CA 证书 https://gist.github.com/robglas/3ef9582c6292470a1743
仍然无法从我使用 HttpClient 的 java 代码连接到 paypal 沙箱。握手失败
在java代码中 - 使用 SSLContext.getInstance("SSL")
使用自定义信任库
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 密钥库。
我有什么遗漏吗?请帮忙!
【问题讨论】:
-
你不需要一个自定义的 TrustManager 来做这个,而且这个也没什么用,但是你经常会看到它被发布为一个“解决方案”。不要使用此代码。
getAcceptedIssuers()
不能返回 null,整个事情是 100% 不安全的。你也可以像这样使用明文。
标签: java ssl paypal certificate rsa-sha256