我正在使用模数.io托管我的应用程序。他们允许SSL在其通配符* .onmoulus.net证书上搭载,也可以使用自己的特定于自定义域的证书。我一直在使用他们的证书,并使用运行良好的AndroidHttpClient实例连接到https://myapp.onmodulus.net,但尝试在我自己的自定义域名上使用ssl时遇到了一些问题。
我已经为我的域购买并安装了thawte的证书,当我使用浏览器进行连接时,一切都很好。我看到小锁图标,当我检查正在使用的证书时是我的解冻证书,而不是* .onmodulus.net证书。在安装我自己的证书之前,它显示“此连接不受信任”警告,并且我可以看到正在使用* .onmodulus.net证书。
但是,当我尝试在android应用中进行连接时,我获得的成功较少。当打开一个网址并像这样管理httpsURLConnection时:
URL myURL = new URL("https://www.myapp.com");
HttpsURLConnection myConnection = (HttpsURLConnection) myURL.openConnection();
try {
System.out.println("Response Code : " + myConnection.getResponseCode());
Certificate[] certs = myConnection.getServerCertificates();
for(Certificate cert : certs){
System.out.println("Cert Details: " + cert.toString());
}
一切顺利,站点正确响应,并显示我的thawte证书,仅使用了我的thawte证书。* .onmodulus.net证书根本不显示。但是,当我尝试使用DefaultHttpClient这样连接时:
DefaultHttpClient myClient = new DefaultHttpClient();
HttpGet getRequest = new HttpGet("https://www.myapp.com");
HttpResponse rawResponse = myClient.execute(getRequest);
我得到:
javax.net.ssl.SSLException: hostname in certificate didn't match: <www.myapp.com> != <*.onmodulus.net> OR <*.onmodulus.net> OR <onmodulus.net>
我不确定如何更仔细地检查证书,但现在似乎正在使用通配符* .onmodulus.net证书,而不是我的thawte证书,我也不知道为什么。我已经使用HttpClient实例编写了我的应用程序,因此实际上更希望能够以这种方式进行连接,而不是尽可能使用第一种解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句