Архив метки: сертификат

Запрос выбора SSL сертификата в компоненте WebView

Задача: при открытии страницы https необходимо позволить пользователю выбрать необходимый сертификат ssl из установленых в хранилище.

Решение:

private class NocWebViewClient extends WebViewClient {
    @Override
    public void onReceivedClientCertRequest(WebView view, final ClientCertRequest request) {
        Log.v(getClass().getSimpleName(), "===> certificate required!");

        KeyChain.choosePrivateKeyAlias(Form1.this, new KeyChainAliasCallback(){
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void alias(String alias) {
                Log.v(getClass().getSimpleName(), "===>Key alias is: " + alias);
                try {
                    PrivateKey changPrivateKey = KeyChain.getPrivateKey(Form1.this, alias);
                    X509Certificate[] certificates = KeyChain.getCertificateChain(Form1.this, alias);
                    Log.v(getClass().getSimpleName(), "===>Getting Private Key Success!" );
                    request.proceed(changPrivateKey, certificates);
                } catch (KeyChainException e) {
                    Log.e(getClass().getSimpleName(), Util.printException(e));
                } catch (InterruptedException e) {
                    Log.e(getClass().getSimpleName(), Util.printException(e));
                }
            }
        },new String[]{"RSA"}, null, null, -1, null);
    }
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url){

    }

WGET и закачка файлов с https с сертификатом p12

«Из коробки» wget с данным сертификатом работать не будет:

pavel@pavel-All-Series:~/Рабочий стол$ wget https://eiufherue.ru/index.php --no-check-certificate --certificate=erferdya1.p12
--2015-03-20 17:10:48--  https://erferwf.ru/index.php
OpenSSL: error:0906D06C:PEM routines:PEM_read_bio:no start line
OpenSSL: error:140AD009:SSL routines:SSL_CTX_use_certificate_file:PEM lib
SSL отключается из-за непредвиденных ошибок.

Но! Оказывается мы можем сконвертировать сертификат p12 в формат pem, и wget его спокойно «переварит»:

pavel@pavel-All-Series:~/Рабочий стол$ openssl pkcs12 -nocerts -in Vwfdewra1.p12 -out servkey.pem -nodes
Enter Import Password:
MAC verified OK
pavel@pavel-All-Series:~/Рабочий стол$ openssl pkcs12 -clcerts -nokeys -in Vierferya1.p12 -out servcert.pem -nodes
Enter Import Password:
MAC verified OK

Теперь пробуем закачать страницу:

wget --certificate=servcert.pem --private-key=servkey.pem --server-response 'https://werfewrr.ru/index.php' --no-check-certificat

--2015-03-20 17:33:46--  https://nweferfrfer.ru/index.php
Распознаётся noc.nweferfrfer.ru (noc.nweferfrfer.ru)… 176.107.208.10
Подключение к noc.yarteleservice.ru (noc.nweferfrfer.ru)|176.107.208.10|:443... соединение установлено.
ПРЕДУПРЕЖДЕНИЕ: невозможно проверить сертификат noc.nweferfrfer.ru, выпущенный «/C=RU/ST=YAR/L=YAR/O=nweferfrfer LLC/OU=GY Internet Department/CN=noc.nweferfrfer.ru/emailAddress=admin@nweferfrfer.ru»:
  Обнаружен самостоятельно подписанный сертификат.
HTTP-запрос отправлен. Ожидание ответа... 
  HTTP/1.1 200 OK
  Date: Fri, 20 Mar 2015 14:33:02 GMT
  Server: Apache/2.2.29 (FreeBSD) PHP/5.3.27 with Suhosin-Patch mod_ssl/2.2.29 OpenSSL/0.9.8y DAV/2
  X-Powered-By: PHP/5.3.27
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Transfer-Encoding: chunked
  Content-Type: text/html
Длина: нет данных [text/html]
Сохранение в: «index.php»

    [ <=>                                                                                                                                                                                                                                   ] 20 304      --.-K/s   за 0,1s    

2015-03-20 17:33:47 (168 KB/s) - «index.php» сохранён [20304]