Мы пытаемся настроить соединение Wi-Fi Hotspot 2.0 с помощью нашего приложения.
Вот как выглядит создание учетных данных Passpoint EAP-TTLS:
WifiEnterpriseConfig wifiEnterpriseConfig = new WifiEnterpriseConfig();
wifiEnterpriseConfig.setDomainSuffixMatch("hotspot.example.com");
wifiEnterpriseConfig.setRealm("hotspot.example.com");
wifiEnterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TTLS);
wifiEnterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.MSCHAPV2);
wifiEnterpriseConfig.setIdentity("example");
wifiEnterpriseConfig.setPassword("example");
wifiEnterpriseConfig.setCaCertificate(cert); // getting cert part is omitted
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.FQDN = "hotspot.example.com";
wifiConfiguration.providerFriendlyName = "hotspot.example.com";
wifiConfiguration.roamingConsortiumIds = new long[]{111111};
wifiConfiguration.enterpriseConfig = wifiEnterpriseConfig;
int netId = wifiManager.addNetwork(wifiConfiguration);
wifiManager.enableNetwork(netId, true);
Устройство пытается подключиться к Wi-Fi, но на этапе проверки сертификата сервера Radius сервера ssl происходит сбой со следующей ошибкой:
2019-03-05 16:52:30.718 22634-22634/? W/wpa_supplicant: TLS: Certificate verification failed, error 2 (unable to get issuer certificate) depth 1 for '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=Thawte RSA CA 2018'
2019-03-05 16:52:30.718 22634-22634/? I/wpa_supplicant: wlan0: CTRL-EVENT-EAP-TLS-CERT-ERROR reason=1 depth=1 subject='/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=Thawte RSA CA 2018' err='unable to get issuer certificate'
Наш сервер Radius имеет сертификат, который подписан промежуточным сертификатом. Промежуточный сертификат подписан корневым сертификатом, которому доверяют в системе (дважды проверил его). Таким образом, мы указываем Промежуточный сертификат, используя метод wifiEnterpriseConfig.setCaCertificate
. Правильно ли мы это делаем или что-то упустили?
Почему мы вообще должны устанавливать какой-либо сертификат вручную? Почему сервер redius не может быть проверен просто корневыми сертификатами системы?
Кто-нибудь знает, почему проблема возникает и как ее решить? Любые советы приветствуются!