这是连接到HTTPS站点时,浏览器与SSL证书如何应对
当我输入https://myDemoSite.com浏览器,首先我所有的浏览器请求证书从myDemoSite.com(由于HTTPS),然后myDemoSite该证书发送到浏览器
一旦浏览器接收该证书,浏览器会检查它是否被验证权威机构签署或不喜欢威瑞信
如果是从第二个步骤,那么作为第三步是检查是否证书问题有哪些用户在浏览器中输入相同的URL
现在我通过连接Java程序的HTTPS站点说HttpsConnectProg1.My问题是programmei.e HttpsConnectProg1将如何处理与HTTPS站点连接颁发此证书(尽管此HTTPS站点颁发的证书是由权威机构验证,即cerified签署)。
我只是想一个小程序连接到HTTPS站点,其发出的认证证书。 我预计像sslhandshake错误或证书错误的一些错误(因为我没加这在$ JAVA_HOME这个认证证书\ JRE \ lib \ security中的文件夹),但让我吃惊,我没有得到任何错误。
现在重要的问题是不HttpsConnectProg1检查步骤3通过浏览器完成的,因为它是非常重要的一步? 为您的网站引用它
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
public class ConnectToDemoSite {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String urlStr = "https://www.myDemoSite.com/demo1/";
URL url;
Properties reply = new Properties();
try {
url = new URL(urlStr);
URLConnection conn = url.openConnection();
if(conn instanceof HttpsURLConnection)
{
HttpsURLConnection conn1 = (HttpsURLConnection)url.openConnection();
conn1.setHostnameVerifier(new HostnameVerifier()
{
public boolean verify(String hostname, SSLSession session)
{
return true;
}
});
reply.load(conn1.getInputStream());
}
else
{
conn = url.openConnection();
reply.load(conn.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("reply is"+reply);
}
}