WedX - журнал о программировании и компьютерных науках

Якорь доверия для пути сертификации не найден с помощью okhttp

Итак, я всю ночь пытался заставить его работать, но, похоже, ничего не помогает ... Я продолжаю получать сообщение о том, что якорь доверия для пути сертификации не найден.

Вот как я создаю okhttpClient (я следовал https://medium.com/@sreekumar_av/certificate-public-key-pinning-in-android-using-retrofit-2-0-74140800025b)

fun provideOkHttpClient(): OkHttpClient {
    val httpClientBuilder = OkHttpClient()
            .newBuilder()

    val logging = HttpLoggingInterceptor()
    logging.level = if (BuildConfig.DEBUG)
        HttpLoggingInterceptor.Level.BODY
    else
        HttpLoggingInterceptor.Level.NONE


    val certificatePinner = CertificatePinner.Builder()
            .add(HOST, SHA)
            .build()

    val connectionSpec = ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
    connectionSpec.tlsVersions(TlsVersion.TLS_1_2).build()

    val tlsSocketFactory = TLSSocketFactory()
    return httpClientBuilder
            .certificatePinner(certificatePinner)
            .addNetworkInterceptor(logging)
            .sslSocketFactory(tlsSocketFactory, tlsSocketFactory.systemDefaultTrustManager())
            .connectionSpecs(Collections.singletonList(connectionSpec.build()))
            .build()
}

Я получил ша так: openssl s_client -connect host:port | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc-base64

и вот TLSFacotry: https://gist.github.com/pollux-/fbcc74984e110bb49497faa2d0ed5ee1#file-tlssocketfactory-java

Я действительно не понимаю, почему это не работает в этот момент.

Любая помощь будет принята с благодарностью!


  • IIRC, полный вывод LogCat покажет, с чем столкнулся OkHttp, поэтому вы можете сравнить его с тем, что у вас есть в файле certificatePinner. И я не знаю, почему у вас есть этот sslSocketFactory() звонок. 12.09.2017
  • У меня не так много информации о logcat, но вот полный журнал: /NeoDigi/60abbcdd1f650897f600afda9268837b 12.09.2017
  • Это будет не в трассировке стека, а в строках до или после него. 12.09.2017
  • Больше ничего нет, может быть там есть перехватчик или что-то, что я могу добавить, чтобы иметь больше информации, но на данный момент больше ничего нет 12.09.2017
  • Удалите все, кроме certificatePinner(), из httpClientBuilder и повторите попытку. Вы ищете ошибку закрепления сертификата! строки, как описано в документах Java для CertificatePinner. 12.09.2017
  • Когда я только добавляю certificatePinner и пытаюсь сделать так, чтобы он не работал намеренно, как в предоставленной вами ссылке, у меня все еще просто есть: якорь доверия для пути сертификации не найден. без другого журнала 12.09.2017
  • У вас достаточно актуальная версия OkHttp? Если да, то я не знаю, что посоветовать на данный момент. Насколько я знаю, вам действительно не нужен этот звонок sslSocketFactory(), так как он должен стереть ваши certificatePinner() и connectionSpecs(). 12.09.2017

Ответы:


1

Закрепление сертификата IIRC оценивается только после принятия цепочки сертификатов.

Было бы полезно иметь полную трассировку стека и хост, к которому вы пытаетесь подключиться, поскольку возможно, что он использует самозаверяющий сертификат, который ваш клиент не примет.

Сначала попробуйте заставить его работать без закрепления сертификата, а затем добавьте его. Как упоминает @CommonsWare, когда закрепление сертификата не удается, он говорит вам, что делать.

12.09.2017
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]