Android Https-Verbindung

undertaker

Mitglied
Hallo nochmal,

ich dachte ich mache nochmal einen neuen Thread auf. Es geht um eine Https-Verbindung die ich zu einem Server aufbauen will (auf meinem Android Tablet). Außerdem benutze ich ein eigenes Zertifikat mit eigenem Keystore.

Ich erhalte folgende Exception:
Java:
javax.net.ssl.SSLException: Connection closed by peer

Java:
HttpsURLConnection httpsUrlConnection = 
		(HttpsURLConnection) new URL(URLSTRING).openConnection();
httpsUrlConnection.setRequestMethod("POST");
httpsUrlConnection.connect(); // Hier fliegt die Exception

Könnte es damit zu tun haben, dass das Zertifikat nicht verwendet wird oder etwas in der hinsicht?
Wenn ich eine andere URL benutze bekomme ich:
Java:
 javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Deshalb gehe ich mal davon aus, das mit dem Zertifikat und Keystore usw. alles funktioniert hat?
Wenn mehr Code benötigt wird einfach kurz schreiben.
 

schlingel

Gesperrter Benutzer
Die Fehlermeldung schaut danach aus als hätte es nicht mit dem Zertifikat funktioniert. Denn die Exception sagt schon alles, es wird dem Zertifikat einfach nicht vertraut. Ist das Zertifikat selbst erstellt?

Du musst dann entweder selbst eine Klasse erstellen die deinem Zertifikat vertraut oder du fügst es zu Androids trusted certificates hinzu.
 

undertaker

Mitglied
Ich habe das Zertifikat von einem dritten aus der Firma, welches eben benötigt wird um auf den Server zu kommen.

Ich dachte eigentlich, dass ich mit dieser Klasse dem Zertifikat vertraue:

Java:
public class TrustManagerFactory 
{
	private static X509TrustManager serverTrustManager;
	private static KeyStore keystore;
	private static final String keystorePasswort = "...";
	
	private static class MyX509TrustManager implements X509TrustManager 
	{
		private MyX509TrustManager() {}
		
		public static X509TrustManager getInstance()
		{
			return new MyX509TrustManager();
		}
		
		public void checkClientTrusted(X509Certificate[] chain, String authType) 
				throws CertificateException	{}
	
		public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException 
		{
			try 
			{
				serverTrustManager.checkServerTrusted(chain, authType);
				chain[0].checkValidity();
			}
			catch (CertificateException e) 
			{
				throw new CertificateException(e.toString());
			}
		}
	
		public X509Certificate[] getAcceptedIssuers() 
		{
			return new X509Certificate[] {};
		}
	}
	
	public static void ladeKeyStore(InputStream is) throws CertificateException 
	{
		try
		{
			Log.d(BackendTestActivity.TAG, "In ladeKeyStore");
			
			keystore = KeyStore.getInstance("BKS");
			Log.d(BackendTestActivity.TAG, "KeyStore instanz geholt");
			keystore.load(is, keystorePasswort.toCharArray());
			Log.d(BackendTestActivity.TAG, "KeyStore geladen");
			javax.net.ssl.TrustManagerFactory tmf = javax.net.ssl.TrustManagerFactory.getInstance("X509"); 
			tmf.init(keystore);
			TrustManager[] tms = tmf.getTrustManagers();
			
			if (tms != null)
			{
				for (TrustManager tm : tms)
				{
					if (tm instanceof X509TrustManager) 
					{
						serverTrustManager = (X509TrustManager) tm;
						Log.d(BackendTestActivity.TAG, "tm ist instanz von X509TrustManager");
						break;
					}
				}
			}
		}
		catch (Exception e) 
		{
			keystore = null;
			Log.d(BackendTestActivity.TAG, "Exception in ladeKeyStore");
			throw new CertificateException(e);
		}
	}
	
	public static X509TrustManager get()
	{
		return MyX509TrustManager.getInstance();
	}
		
	public static KeyStore getKeyStore() 
	{
		return keystore;
	}
}

Wäre echt nett wenn du mal drüber schauen könntest.
Und wie im anderen Thread schon gesagt habe ich mich an diese Lösung gehalten: pdf

Edit: Im PDF steht auch folgendes:
Wenn wir einen X509TrustManager selbst implementieren, müssen
wir dabei seine Methode checkServerTrusted überschreiben. Denn hier
findet die Prüfung des Servers beim SSL-Handshake statt.

Und die Methode checkServerTrusted beschwert sich ja in keiner weise das etwas nicht stimmt. Also wirklich ein Zertifikat-Problem?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Android HTTPS-Verbindung mit Client-Authentifizierung Android & Cross-Platform Mobile Apps 0
S Android Probleme beim Verbinden mit einer HTTPS Seite Android & Cross-Platform Mobile Apps 4
A https tutorial Android & Cross-Platform Mobile Apps 11
missy72 Kotlin SSH Verbindung mit JSch Android & Cross-Platform Mobile Apps 5
J Android VPN Verbindung herstellen? Android & Cross-Platform Mobile Apps 4
B Android TCP-Verbindung zum Server über welche Prozess auslagerung nutzen? Android & Cross-Platform Mobile Apps 1
M Problem bei Werteübergabe, MSQL verbindung Android & Cross-Platform Mobile Apps 3
H WIFI, Bluetooth und NFC Verbindung überwachen Android & Cross-Platform Mobile Apps 1
H Android 3G TCP Socket Verbindung zum PC durch NAT Android & Cross-Platform Mobile Apps 8
T Android MSSQL Verbindung herstellen - Android Studio Android & Cross-Platform Mobile Apps 2
M Android Server-Client-Verbindung in Android-App mit Sockets aufbauen Android & Cross-Platform Mobile Apps 5
R Socket Verbindung AsycTask Android & Cross-Platform Mobile Apps 5
F Android USB Verbindung zu Windows Programm Android & Cross-Platform Mobile Apps 3
K Java ME Bluetooth verbindung parameter Android & Cross-Platform Mobile Apps 3
N Java ME Server-Client Verbindung über Wifi Android & Cross-Platform Mobile Apps 6
A Problem mit HTTP- Verbindung Android & Cross-Platform Mobile Apps 4
N Handy -PC Verbindung Android & Cross-Platform Mobile Apps 2
G Blutooz-Verbindung ... ich schaffs nicht Android & Cross-Platform Mobile Apps 5
F Server - Client Verbindung mit Java ME Android & Cross-Platform Mobile Apps 3
G Bluetooth Verbindung zwischen Handy und PC Android & Cross-Platform Mobile Apps 5
G Bluetooth Verbindung Android & Cross-Platform Mobile Apps 2
O Bluetooth Verbindung zwischen 2 Handys Android & Cross-Platform Mobile Apps 5
K HTTP-Verbindung mit J2ME.... Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen


Oben