
1 yangff 2016 年 2 月 3 日 via Android 内部用的?自己签嘛。。 |
2 wy315700 2016 年 2 月 3 日 把根证书加进去 |
3 realpg OP PRO @wy315700 我 google 的结果,根证书只能加入本地的 jre keystore ,用命令行指令 在代码中添加证书信任, google 到的结果并测试通过的只有把服务当前的证书加入,这个操作可以代入根证书而不是当次连接的证书么? |
10 7654 2016 年 2 月 3 日 写个脚本自动做啊 |
11 realpg OP PRO |
12 kaneg 2016 年 2 月 3 日 如果客户端代码是自己写的,可以设置信任所有证书(当然安全自负了)。我以前用 apache 的 http client 做过,如果楼主需要我明天找找那段代码发给你 |
13 realpg OP PRO @kaneg 谢谢,这个我会的。 sslSF.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 但是不能这么写。 我说了劫持很严重,这里面有问题,不敢这么信任 我发这个贴就是想问问,有没有 runtime 临时信任一个根证书的方法 |
14 vibbow 2016 年 2 月 4 日 记得好像可以手动指定一个 keystore |
15 kaneg 2016 年 2 月 4 日 @realpg 你这个是是否校验 hostname ,如果证书链不被信任,还是无法通过的。你要有选择性的信任一个或多个证书链,可以参考以下方式: SSLSocketFactory mysf = new SSLSocketFactory(new TrustStrategy() { public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { //这里检验你的证书链是否被信任 return false; } }); Scheme https = new Scheme("https", 443, mysf); client.getConnectionManager().getSchemeRegistry().register( https); |
16 realpg OP PRO @kaneg sslSF.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 事实上,这段代码现在就存在于我的 JAVA 程序内,只要注释掉就报错,恢复程序就能正常使用。 看 ALLOW_ALL_HOSTNAME_VERIFIER 是效验域名,实际上,加上这个,我这里就根本不检测证书链了直接无报错了 |
17 wql 2016 年 2 月 5 日 via Android 建议改用 Start SSL |
21 zhxq 2016 年 2 月 6 日 说到 Java 证书吧 我就想起来当初两三年前我申请了个 StartSSL 个人某网站用 免费啊…… 然后因为用户主要在国内 所以接入了支付宝接口。 死活接收不到支付宝的异步通知(将已收款信息写入数据库) 无奈 咨询支付宝客服。 支付宝客服告知 只支持 Java 1.5 的默认支持根证书列表…… 无奈,看到有 GeoTrust 的 RapidSSL 和 COMODO 的 PositiveSSL ,看前者贵( 7.99$/年,怕便宜的 PositiveSSL 不好用)然后买了一个,一切搞定。 结果吧,新的一年又有某个新网站需要证书。知道 StartSSL 不好使了,于是乎先买了个 COMODO 的,感觉还挺便宜,三年也就 15$(对我来说在学校约等于一顿饭钱……资本主义国家的大学伤不起,食堂照样是学校垄断的……) 结果还是不好使!!仍然接收不到异步通知! 然后乖乖买了 PositiveSSL ……换上了之后,一切正常…… 坑爹的支付宝啊…… @realpg 这事儿我在群里讲过 23333333333 |