2016-06-17 3 views
1

Я пытаюсь настроить самозаверяющий сертификат с Android с помощью переоснащения и следуя инструкциям на сайте: https://adiyatmubarak.wordpress.com/2016/01/19/adding-ssl-certificate-to-retrofit-2/Ошибка при добавлении самостоятельно подписанный сертификат в Android

После делать это, я получаю следующий Ошибка:

06-17 00:36:01.574 9898-9898/com.creardigitalm.samsungconciergeargentina  
    E/checkIfS7OrS7EdgeByModel: onFailure: Hostname ec2-54-187-245-213.us-west-2.compute.amazonaws.com not verified:certificate:sha1/x+YzLQ11jAtlgEG6qJg8W9cqp/k= 
    DN:1.2.840.113549.1.9.1=#161e6c7569732e6a6172616d696c6c6f40637265617264697469616c2e636f6d,CN=54.187.245.213,OU=IT,O=Crear Digital,L=Cali,ST=Valle del Cauca,C=co 
    subjectAltNames: [] 
    javax.net.ssl.SSLPeerUnverifiedException: Hostname ec2-54-187-245-213.us-west-2.compute.amazonaws.com not verified: 
    certificate: sha1/x+YzLQ11jAtlgEG6qJg8W9cqp/k= 
    DN:1.2.840.113549.1.9.1=#161e6c7569732e6a6172616d696c6c6f40637265617264697469616c2e636f6d,CN=54.187.245.213,OU=IT,O=Crear Digital,L=Cali,ST=Valle del Cauca,C=co subjectAltNames: [] 
    at okhttp3.internal.io.RealConnection.connectTls(RealConnection.java:197) 
    at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:145) 
    at okhttp3.internal.io.RealConnection.connect(RealConnection.java:108) 
    at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:188) 
    at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:127) 
    at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) 
    at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:289) 
    at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:241) 
    at okhttp3.RealCall.getResponse(RealCall.java:240) 
    at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198) 
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) 
    at okhttp3.RealCall.access$100(RealCall.java:30) 
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127) 
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:33) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 

Я признателен, если кто-то может помочь мне с этим.

+0

Я думаю, что ваше приложение получило это исключение из-за 'CN = 54.187.245.213', как вы установили свой HostnameVerifier? Прочтите https://developer.android.com/training/articles/security-ssl.html#CommonHostnameProbs – BNK

ответ

0

Вы можете следить за этим Android-телефоном documentation. Ознакомьтесь с разделами с заголовками «Unknown certificate authority» и «Self-signed server certificate».

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

  1. нагрузки УЦ определенного InputStream
  2. Создать KeyStore, содержащий наш доверенный УЦ
  3. Создание TrustManager, которое доверяет УЦ в нашем KeyStore
  4. Создание SSLContext, который использует наш TrustManager
  5. Поведать URLConnection использовать SocketFactory из нашего SSLContext

Код here.

+0

Да, это именно те шаги, которые я выполняю, но я все равно получаю ошибку. – luisjar

Смежные вопросы