rozwiązaniem jest tu w stanie usunąć wersji prolem
tworzenia pliku BKS android klienta
szczegóły instalacji oprogramowania wymagane do utworzenia BKS plik:
Pobierz oprogramowanie kluczy Explorer z linkiem http://keystore-explorer.sourceforge.net/
Pobierz UnlimitedJCEPolicyJDK7 z http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
Rozpakuj plik ZIP i skopiuj US_export_policy i local_policy do folderu C:/programes file/java/jre7/lib/security.
zainstalować oprogramowanie Keystore Explorer.
kroki, aby wygenerować plik BKS: (Need plik, plik certyfikatu CA, klucz plików i .p12 plik i.e.PKCS (jeśli są dostępne)
1). Tworzenie pliku za pomocą zaufania CA plik .crt pomocą oprogramowania kluczy.
Kroki:
oprogramowanie Open
Go File-> New-> wybierz .bks z kreatora Aby zaimportować plik certyfikatu CA Go od narzędzi> Importuj zaufany certyfikat -> wybierz plik .crt CA -> Entert hasło -> (spowoduje to, że będzie to wyjątek, jeśli certyfikat jest samopodpisem), plik importu będzie wymuszony.
4.Zapisz plik z rozszerzeniem .bks.
2) Tworzenie pliku klucza, używając .p12 plik za pomocą oprogramowania kluczy
Kroki
oprogramowanie Open Go File-> New-> wybierz .bks z kreatora
Importuj> plik p12 Go Narzędzie -> Importuj parę kluczy -> wybierz PKCS # 12 z kreatora -> wprowadź hasło do odszyfrowywania plików i plików przeglądanych na brwiach -> Wprowadź nazwę aliasu (jeśli chcesz zmienić, aby inne pozostały bez zmian) -> Wprowadź nowe hasło
Zapisz plik za pomocą .bks exte nsion.
3) Tworzenie pliku za pomocą klucza jeśli .p12 nie jest dostępny plik za pomocą oprogramowania kluczy
Steps
oprogramowanie Open
Go File-> New-> wybierz .bks z kreatora importu > p12 plik Go Tool -> Importuj parę kluczy -> wybierz OpenSSL z kreatora -> niezaznaczone hasło do deszyfrowania pliku, przegląda plik .key i .crt (Plik certyfikatu nie jest CA) -> Wprowadź nazwę aliasu (jeśli chcesz zmienić coś innego, możesz zachować tak jak jest) -> Wprowadź nowe hasło
Zapisz plik z rozszerzeniem .bks.
Skopiuj oba pliki w folderze res/raw (oba pliki BKS są obowiązkowe).
Kod:
static final String ENABLED_CIPHERS[] = {
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_RSA_WITH_RC4_128_SHA",
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
"TLS_RSA_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"SSL_RSA_WITH_RC4_128_SHA",
"SSL_RSA_WITH_RC4_128_MD5",
};
// put this in a place where it can be reused
static final String ENABLED_PROTOCOLS[] = {
"TLSv1.2", "TLSv1.1", "TLSv1"
};
private void sslCon()
{
try {
// setup truststore to provide trust for the server certificate
// load truststore certificate
InputStream trustStoresIs = getResources().openRawResource(R.raw.client_ca);
String trustStoreType = KeyStore.getDefaultType();
KeyStore trustStore = KeyStore.getInstance(trustStoreType);
trustStore.load(trustStoresIs, "spsoft_123".toCharArray());
//keyStore.setCertificateEntry("ca", ca);
// initialize trust manager factory with the read truststore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(trustStore);
// setup client certificate
// load client certificate
InputStream keyStoreStream = getResources().openRawResource(R.raw.client_cert_key);
KeyStore keyStore = null;
keyStore = KeyStore.getInstance("BKS");
keyStore.load(keyStoreStream, "your password".toCharArray());
KeyManagerFactory keyManagerFactory = null;
keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, "your password".toCharArray());
// Create an SSLContext that uses our TrustManager
SSLContext context = SSLContext.getInstance("SSL");
context.init(keyManagerFactory.getKeyManagers(), tmf.getTrustManagers(), null);
SSLSocketFactory sslsocketfactory = (SSLSocketFactory)context.getSocketFactory();
InetAddress serverAddr = InetAddress.getByName("192.168.11.104");
sslSocket = (SSLSocket) sslsocketfactory.createSocket(serverAddr, 5212);
//String[] ciphers = sslSocket.getEnabledCipherSuites();
sslSocket.setEnabledCipherSuites(ENABLED_CIPHERS);
// put this right before setEnabledCipherSuites()!
//sslSocket.setEnabledProtocols(ENABLED_PROTOCOLS);
//InputStream inputStream = sslSocket.getInputStream();
OutputStream out = sslSocket.getOutputStream();
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_SHORT).show();
sslSocket.close();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Nie zapomnij użyć SHA-256, bo SHA-1 nie jest już używany z Androidem 23+ i jest domyślnie ... – Cukic0d