Https Basic Auth

最近测试 Https 连接,遇到了些问题。

1. Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

对方使用的是JDK 1.8,他们默认的是TLSV1.2, 我使用的是1.7, 我这边是1.0 的。
造成一直认证失败,开始以为要导入证书。设置请求默认1.2,就可以了。

System.setProperty("https.protocols", "TLSv1.1,TLSv1.2");
System.setProperty("jsse.enableSNIExtension", "false");


2.授权 401. 加密采用 Basic 认证,java自带的Base64 有些bug,网上找了个Base 64.

URL url = new URL("https://");
URLConnection uc = url.openConnection();

HttpURLConnection conn = (HttpURLConnection) uc;
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");

String user_pass = username + ":" + password;
String encoded = Base64.encode(user_pass.getBytes());

conn.addRequestProperty("Accept", "application/xml");
conn.setRequestProperty("Content-Type", "application/xml");
conn.setRequestProperty("Authorization", "Basic " + encoded);


3. Https 证书导入,实际上两步骤,已经可以请求成功了,为了测试还是导入了证书。

Key tool 导入cert file to cacerts

C:\Program Files\Java\jdk1.7.0_80\jre\bin>keytool -import -keystore cacerts -storepass changeit -keypass changeit -alias e-xx.com -file D:\cert\staging.gate.crt

C:\Program Files\Java\jdk1.7.0_80\jre\bin>keytool -list -v -alias e-xx.com -keystore cacerts -storepass changeit

4.httpClient 忽略cert file, 指定 TLSV1.2,不设置系统参数,enableSNIExtension,因为会影响到其他ssl链接。
见附件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值