這是連接到HTTPS站點針對瀏覽器和jvm處理ssl證書的區別?
,當我在瀏覽器中鍵入https://myDemoSite.com當瀏覽器與SSL證書如何應對,首先我的瀏覽器從myDemoSite.com要求證書(由於HTTPS),然後myDemoSite發送證書到瀏覽器
一旦瀏覽器接收該證書,瀏覽器會檢查它是否被驗證權威機構簽署或不喜歡威瑞信
如果是從第二個步驟,那麼作爲第三步是檢查是否CE rtificate問題有哪些用戶在瀏覽器中鍵入
相同的URL現在我連通過java程序的HTTPS站點說HttpsConnectProg1.My問題是programmei.e HttpsConnectProg1將如何處理與HTTPS站點連接發佈此 證書(雖然由此https站點頒發的證書經過驗證即由經過驗證的權威機構簽署)。
我剛剛嘗試了一個小的 程序連接到發佈認證證書的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);
}
}
由知名CA頒發 –