Проблема
Я хочу отправить https-запрос на сайт https://10.2.20.20/fido/EzPay/login.php моего собственного сервера и получить от него ответ и сохранить его, например, в строке. Я нашел несколько примеров кода в Интернете и попытаюсь проверить их на предмет моей проблемы, но они не помогают. Ниже я представляю некоторые части кодов, которые я тестировал.
Пример кода:
Я пытаюсь использовать этот код, но всегда получаю одно и то же исключение "Нет сертификата партнера" Почему?
try
{
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
// Example send http request
final String url = "https://10.2.20.20/fido/EzPay/login.php";
HttpPost httpPost = new HttpPost(url);
HttpResponse response = httpClient.execute(httpPost);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
Log.i(DownloadImageTask.class.getName(), line);
}
}
catch(IOException ex)
{
Log.e(DownloadImageTask.class.getName(), ex.getMessage());
}
Exception.
03-02 16: 58: 25.234: W/System.err(1868): javax.net.ssl.SSLPeerUnverifiedException: Отсутствует сертификат peer 03-02 16: 58: 25,238: W/System.err(1868): при org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137) 03-02 16: 58: 25.238: W/System.err(1868): при org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93) 03-02 16: 58: 25.238: W/System.err(1868): при org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381) 03-02 16: 58: 25.238: W/System.err(1868): при org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165) 03-02 16: 58: 25.250: W/System.err(1868): при org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 03-02 16: 58: 25.250: W/System.err(1868): при org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 03-02 16: 58: 25.250: W/System.err(1868): при org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 03-02 16: 58: 25.250: W/System.err(1868): при org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 03-02 16: 58: 25.250: W/System.err(1868): при org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 03-02 16: 58: 25.250: W/System.err(1868): при org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 03-02 16: 58: 25.250: W/System.err(1868): при com.https.test.DownloadImageTask.doInBackground(Https_testActivity.java:78) 03-02 16: 58: 25.250: W/System.err(1868): при com.https.test.DownloadImageTask.doInBackground(Https_testActivity.java:1) 03-02 16: 58: 25.250: W/System.err(1868): при android.os.AsyncTask $2.call(AsyncTask.java:264) 03-02 16: 58: 25.253: W/System.err(1868): при java.util.concurrent.FutureTask $Sync.innerRun(FutureTask.java:305) 03-02 16: 58: 25.253: W/System.err(1868): при java.util.concurrent.FutureTask.run(FutureTask.java:137) 03-02 16: 58: 25,253: W/System.err(1868): при android.os.AsyncTask $SerialExecutor $1.run(AsyncTask.java:208) 03-02 16: 58: 25,257: W/System.err(1868): при java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 03-02 16: 58: 25.257: W/System.err(1868): при java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:569) 03-02 16: 58: 25.257: W/System.err(1868): при java.lang.Thread.run(Thread.java:856)
Вопрос
Что я делаю неправильно и как я могу решить эту проблему. Почему я получаю исключение < Отсутствие сертификатов peer certificate "
Спасибо.
Edited
Настройки Windows Server.
<VirtualHost *:443>
ServerName 10.2.20.20
Alias /fido/EzPay/ "d:/fido/EzPay/"
Alias /fido/EzPay "d:/fido/EzPay/"
<Directory "d:/fido/EzPay/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
# These are the actual SSL directives needed to get it all working!
SSLEngine on
SSLCertificateFile C:/wamp/bin/apache/apache2.2.17/conf/ssl/fidoserver.crt
SSLCertificateKeyFile C:/wamp/bin/apache/apache2.2.17/conf/ssl/fidoserver.pem
</VirtualHost>