Поскольку мне было поручено задавать этот вопрос в моем собственном вопросе, я делаю это здесь.
Чтобы посмотреть Original Topic, в котором я сначала задал свой вопрос (удалил сейчас).Volley Request over https работает только с Wi-Fi (wlan), но не для 3G/GPRS (umts)
Я застрял с той же проблемой, и, к сожалению, ответы автора не помогают.
Чтобы представить мою проблему немного подробнее, я работаю с самоподписанным сертификатом на моем сервере Tomcat 8 (v8.0.15) в Интернете с Java 8 (v8.0.25 - JDK). Там я размещаю приложение Java EE, которое является бэкэнд для моего приложения для Android. Соединитель SSL Tomcat работает так, как должен. Когда я тестирую бэкэнд с RESTClient, я получаю результат, как ожидалось.
Я создал хранилище ключей с одним сертификатом:
keytool -genkey -alias tomcat -keystore tomcat.keystore
-storepass MYKEYSTOREPASS -keyalg RSA -keysize 2048 -validity 365
Затем я извлек сертификат:
keytool -export -alias tomcat -storepass MYKEYSTOREPASS
-keystore tomcat.keystore -file tomcat.cer
Наконец я создал новое хранилище ключей в формате BKS для моего Android Применение:
keytool -import -alias tomcat -file tomcat.cer -keypass MYKEYSTOREPASS
-keystore tomcat.bks -storetype BKS -storepass MYKEYSTOREPASS
-providerClass org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath $PATH_TO_BC_LIBRARY/bcprov-jdk16-146.jar
(упомянуто here "-экспорт" »и« -импорт »являются предыдущими выпусками, но все еще пригодными для использования. Таким образом, вы могли бы также знать эту команду параметры, как «-exportcert» и «-importcert»)
После завершения этого шага я пытался соединить и все пошло нормально. Но только до тех пор, пока я не отключил/не отключил WLAN-соединение. Тогда он больше не работает и приносит «javax.net.ssl.SSLPeerUnverifiedException: no peer certificate».
Я действительно не понимаю этого поведения.
Чтобы скрасить сторону андроида немного больше:
Я использовал классы/библиотеки от this tutorial точно так же.
Если что-то не хватает, просто комментарий, и я приведу информацию.
Большое спасибо!
Вы используете локальный сервер tomcat? –
Hi Suhail Mehta, я отредактировал мой вопрос. –
Что вы подразумеваете под «расположенным в www», означает ли это, что на каком-то сервере, который является внешним по отношению к вашей Wi-Fi сети? – Ognyan