使用HttpURLConnection 越过ssl证书访问htts协议接口
·
使用HttpURLConnection 越过ssl证书访问htts协议接口
```java
static HostnameVerifier hv = new HostnameVerifier() {
@Override
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName + " vs. "
+ session.getPeerHost());
return true;
}
};
private static void trustAllHttpsCertificates() throws Exception {
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new miTM();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext
.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
.getSocketFactory());
}
static class miTM implements javax.net.ssl.TrustManager,
javax.net.ssl.X509TrustManager {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
}
使用时申明调用
public static String check(String key,String uri){
trace.info("auth check uri "+uri);
String responsestr="fail";
URL wsurl;
HttpURLConnection uconn=null;
PrintWriter out1;
char Readbuf[];
BufferedReader in1;
StringBuffer respb;
int len;
String key1 = "key="+key;
String params=key1;
try {
trace.info("auth check "+key);
try {
trustAllHttpsCertificates();
HttpsURLConnection.setDefaultHostnameVerifier(hv);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
wsurl=new URL(uri);
uconn=(HttpURLConnection) wsurl.openConnection();
uconn.setRequestMethod("POST");
uconn.setAllowUserInteraction(false);
uconn.setDoOutput(true);
uconn.setDoInput(true);
uconn.setUseCaches(false);
uconn.setConnectTimeout(3000);
uconn.setReadTimeout(5000);
out1=new PrintWriter(uconn.getOutputStream());
out1.write(params, 0, params.length());
out1.close();
in1=new BufferedReader(new InputStreamReader(uconn.getInputStream()));
Readbuf =new char[1024];
respb=new StringBuffer(1024);
while((len=in1.read(Readbuf))!=-1){
respb.append(Readbuf,0,len);
}
in1.close();
responsestr=respb.toString();
} catch (MalformedURLException e) {
trace.error(key+ " Authentication MalformedURLException "+e.getMessage());
} catch (IOException e) {
trace.error(key+" Authentication IOException "+e.getMessage());
}finally{
if(uconn!=null){
uconn.disconnect();
trace.info("disconnect "+key);
}
}
return responsestr;
}
引用之后就可以使用了
更多推荐



所有评论(0)