Android javax.net.ssl.SSLPeerUnverifiedException: нет ошибки сертификата в приложении, но браузер правильно открывает URL-адрес

Я прошел большинство вопросов по SSLPeerUnverifiedException: Нет сертификата однорангового узла на SO, но не смог найти решение для моей проблемы. Большинство решений либо предоставляют настраиваемый диспетчер доверия для принятия всех сертификатов SSL, либо предоставляют настраиваемое хранилище ключей с сертификатами по умолчанию + сертификат моего сервера и разрешают это. Но моя проблема в другом.

Я получаю javax.net.ssl.SSLPeerUnverifiedException: нет сертификата однорангового узла, когда я использую HttpClient, я также пытался сделать

    public HttpClient createHttpClient()
    {
        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
        HttpProtocolParams.setUseExpectContinue(params, true);

        SchemeRegistry schReg = new SchemeRegistry();
        schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
        ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);

        return new DefaultHttpClient(conMgr, params);
    }

Но моя ссылка открывается в браузере на моем устройстве. (Firefox, Chrome и браузер по умолчанию)

Я также не получаю сертификат сверстника при тестировании URL с помощью openssl

$ openssl s_client -connect myserver.com:443
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 225 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

Я хочу знать, как браузер открывает эту ссылку без сертификата.

Я также попробовал URL с Curl, и он, кажется, дает ответ

$ curl -v "https://www.myserver.com/url" -H "Accept:application/json"
* About to connect() to www.myserver.com port 443 (#0)
*   Trying 1XX.XX.XX.XXX... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES128-SHA
* Server certificate:
*    subject: C=US; ST=Washington; CN=*.myserver.com
*    start date: 2013-09-16 00:00:00 GMT
*    expire date: 2014-09-24 12:00:00 GMT
*    subjectAltName: myserver.com matched
*    issuer: C=US; O=DigiCert Inc; CN=DigiCert Secure Server CA
*    SSL certificate verify ok.
> GET /url HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1     zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: myserver.com
> Accept:application/json
> 
< HTTP/1.1 200 OK
< Content-Length: 486
< Content-Type: application/json; charset=utf-8
< Server: Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0
< Date: Thu, 19 Sep 2013 12:23:33 GMT
< 
* Connection #0 to host myserver.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
{"My JSON Data"}

Спасибо заранее за любую помощь

0 ответов

Другие вопросы по тегам