solución está aquí, capaz de eliminar la versión prolem
Creación de archivo de BKS para el cliente androide
detalles de la instalación de software necesarios para crear BKS archivo:
Descargar software de almacén de claves desde el Explorador de enlace http://keystore-explorer.sourceforge.net/
Descargar UnlimitedJCEPolicyJDK7 de http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
Extracto zip y copiar US_export_policy y local_policy a la carpeta C: archivo/programes/java/jre7/lib/security.
instalar el software Keystore Explorer.
pasos para generar el archivo BKS: (Necesita archivo CA, Certificado archivo, archivo de clave y el archivo .P12 i.e.PKCS (si está disponible)
1.) La creación de archivo de confianza utilizando .crt CA utilizando el software de almacén de claves.
Pasos:
software abierto
Ir Archivo-> Nuevo-> seleccione .bks desde el asistente Para importar archivo de certificado CA Ir Herramientas-> Importar certificado de confianza -> seleccione .crt CA -> ENTERT contraseña -> (Lanzará una excepción si el certificado es un auto-signo) importa el archivo con fuerza.
4. Guarde el archivo con extensión .bks.
2) Creación de archivo mediante .p12 el uso de software de almacén de claves
Pasos
software abierto Ir Archivo-> Nuevo-> seleccione .bks desde el asistente
Importar> archivo de p12 Go Herramienta -> Importar par de claves -> seleccionar PKCS # 12 desde el asistente -> ingresar la contraseña de descripción para el archivo de archivos y cejas -> Ingresar alise nombre (si quiere cambiar else puede mantener como está) -> Ingresar nueva contraseña
Guarde el archivo con .bks exte nsion.
3) Creación de archivo mediante .P12 si no está disponible el archivo usando el software de almacén de claves
Pasos
software abierto
Ir Archivo-> Nuevo-> seleccione .bks del asistente de importación > archivo p12 Ir a la herramienta -> Importar par de claves -> seleccionar OpenSSL desde el asistente -> contraseña de descripción sin marcar para el archivo, las cejas .key y .crt (archivo de certificado no CA) archivo -> Ingresar alise nombre (si desea cambiar más puede mantener tal como está) -> Ingrese la nueva contraseña
Guarda el archivo con la extensión .bks.
Copie ambos archivos en la carpeta res/raw (Ambos archivos BKS son obligatorios).
Código:
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();
}
}
}
No olvides usar SHA-256, porque SHA-1 ya no se usa con android 23+, y es por defecto ... – Cukic0d