Я делаю банковское приложение для взаимодействия клиента и сервера в безопасных целях, используя HTTP, для этого я должен добавить закрепление SSL в Android с помощью шаблона отдыха. Я проверил много ссылок на повторный шаблон кода, но он не работает должным образом. Это правильно или нет для закрепления SSL в Android? Я нашел этот код в Google.Developer.android
Я добавил сертификат сертификата в свое приложение, но как подключиться с помощью restemplate:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream is = ctx.getResources().openRawResource(R.raw.cedgenetbankingin); // Place your 'your_cert.crt' file in `res/raw`
InputStream caInput = new BufferedInputStream(is);
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}
// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
// Create a TrustManager that trusts the CAs in our KeyStore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
// Create an SSLContext that uses our TrustManager
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
Log.i("JJ","true--");
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
Примечание: для добавления сертификата достаточно, верно? Из папки raw я добавил файл crt. Если я внесу некоторые изменения в файл, я получу исключение, поэтому resttemplate не вызывает. Если файл правильный, значит он работает?
Код повторной установки:
RestTemplate restTemplate = new RestTemplate();
// RestTemplate restTemplate = new RestTemplate();
try {
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
HttpHeaders headers = createHttpHeaders();
HttpEntity<String> entity = new HttpEntity<>(str_encodedparams, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);
System.out.println("Result - status (" + response.getStatusCode() + ") has body: " + response.hasBody());
System.out.println(response.getBody());
respo = response.getBody();
System.out.println(respo);
} catch (Exception eek) {
eek.printStackTrace();
System.out.println("** Exception: " + eek.getMessage());
}