1

Я могу использовать самозаверяющий сертификат, который я создал с помощью openssl.Самостоятельный сертификат в Android

Единственная проблема, которую я получаю при использовании сертификата в своем HttpsURLConnection, принадлежит HostnameVerifier.

Если я поставить свой собственный HostnameVerifier, который всегда return true как:

HostnameVerifier hostnameVerifier = new HostnameVerifier() { 
     @Override 
     public boolean verify(String hostname, SSLSession session) { 
      return true; 
     } 
    }; 

в

urlConnection.setHostnameVerifier(hostnameVerifier); 

это работает.

Есть ли способ предоставить подтверждение для нашего собственного хоста, а не для всех?

И

Будет HostnameVerifier работа по локальной сети (локальный IP-адрес) также

ответ

1

Давайте предположим, что ваше приложение сервера хостинг в серверной машине, которая имеет сертификат сервера, в котором "Issued to" является "localhost", например. Затем, внутри verify способ можно проверить "localhost".

HostnameVerifier hostnameVerifier = new HostnameVerifier() { 
    @Override 
    public boolean verify(String hostname, SSLSession session) { 
     HostnameVerifier hv = 
      HttpsURLConnection.getDefaultHostnameVerifier(); 
     return hv.verify("localhost", session); 
    } 
}; 
Смежные вопросы