Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
MemorizingTrustManager — Ein "Plugin" für Android Java, um den Benutzer nach SSL-Zertifikaten zu fragen. | Kitploit
Tools/GitHubGitHub/ge0rg/memorizingtrustmanager
Android-SicherheitDefensivwerkzeugeNetzwerksicherheitKryptographieMobile SicherheitAuthentifizierung
GitHubge0rg/memorizingtrustmanager

MemorizingTrustManager

Ein "Plugin" für Android Java, um den Benutzer nach SSL-Zertifikaten zu fragen.

Repository anzeigen
1818913vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

MemorizingTrustManager – Private-Cloud-Unterstützung für Ihre App

MemorizingTrustManager (MTM) ist ein Projekt, das einen intelligenteren und sichereren Einsatz von SSL auf Android ermöglicht. Wenn ein unbekanntes SSL-Zertifikat erkannt wird, fragt es den Benutzer, ob er das Zertifikat einmalig, dauerhaft akzeptieren oder die Verbindung abbrechen möchte. Dies ist ein Schritt zur Verhinderung von Man-in-the-Middle-Angriffen durch blindes Akzeptieren ungültiger, selbstsignierter und/oder abgelaufener Zertifikate.

MTM zielt darauf ab, eine nahtlose Integration in Ihre Android-Anwendung zu ermöglichen; der Quellcode ist unter der MIT-Lizenz verfügbar.

Screenshots

MemorizingTrustManager dialog MemorizingTrustManager notification MemorizingTrustManager server name dialog

Status

MemorizingTrustManager wird im yaxim XMPP client produktiv eingesetzt. Es ist nutzbar und einfach zu integrieren, unterstützt jedoch noch keine Hostnamen-Validierung (die Java-API macht die Integration schwierig).

Integration

MTM lässt sich einfach in Ihre eigene Anwendung integrieren. Folgen Sie diesen Schritten oder werfen Sie einen Blick in die Demo-Anwendung im Verzeichnis example.

1. MTM zu Ihrem Projekt hinzufügen

Laden Sie den MTM-Quellcode von GitHub herunter oder fügen Sie ihn als git submodule hinzu:

# plain download:
git clone https://github.com/ge0rg/MemorizingTrustManager
# submodule:
git submodule add https://github.com/ge0rg/MemorizingTrustManager

Fügen Sie dann eine Bibliotheksprojekt-Abhängigkeit zu default.properties hinzu:

android.library.reference.1=MemorizingTrustManager

2. Die MTM-(Popup-)Activity zu Ihrem Manifest hinzufügen

Bearbeiten Sie Ihre AndroidManifest.xml und fügen Sie das MTM-Activity-Element direkt vor dem Ende Ihres schließenden </application>-Tags ein.

		...
		<activity android:name="de.duenndns.ssl.MemorizingActivity"
			android:theme="@android:style/Theme.Translucent.NoTitleBar"
			/>
	</application>
</manifest>

3. MTM als Standard-TrustManager für Ihren Verbindungstyp einhängen

Einbinden von MemorizingTrustmanager in HTTPS-Verbindungen:

// register MemorizingTrustManager for HTTPS
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(
	mtm.wrapHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier()));

Für SSLSocket sollten Sie Folgendes tun:

// register MemorizingTrustManager for all SSLSockets
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
HostnameVerifier hv = mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier());
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
SSLContext.setDefault(sc);

// connect a socket
SSLSocket s = ...;
s.startHandshake();
if (!hv.verify(your_domain_name, sslSocket.getSession())) {
    throw new CertificateException("Server failed to authenticate as " + your_domain_name);
}

Oder für Smack können Sie setCustomSSLContext() verwenden:

org.jivesoftware.smack.ConnectionConfiguration connectionConfiguration = …
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
connectionConfiguration.setCustomSSLContext(sc);
connectionConfiguration.setHostnameVerifier(
	mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));

Standardmäßig greift MTM auf den System-TrustManager zurück, bevor es den Benutzer fragt. Wenn Sie der Systemeinrichtung nicht vertrauen, können Sie einen Dialog bei jeder neuen Verbindung erzwingen, indem Sie dem Konstruktor einen Parameter defaultTrustManager = null übergeben:

MemorizingTrustManager mtm = new MemorizingTrustManager(this, null);

Wenn Sie einen anderen zugrunde liegenden TrustManager verwenden möchten, z. B. AndroidPinning, übergeben Sie diesen einfach an den MTM-Konstruktor:

X509TrustManager pinning = new PinningTrustManager(SystemKeyStore.getInstance(),
	new String[] {"f30012bbc18c231ac1a44b788e410ce754182513"}, 0);
MemorizingTrustManager mtm = new MemorizingTrustManager(this, pinning);

4. Profitieren Sie davon!

Protokollierung

MTM verwendet java.util.logging (JUL) für Protokollierungszwecke. Wenn Sie keinen Handler für JUL konfiguriert haben, protokolliert Android standardmäßig alle Meldungen der Stufe Level.INFO oder höher. Um auch die Debug-Protokollmeldungen (Stufe Level.FINE oder niedriger) zu erhalten, müssen Sie einen entsprechenden Handler konfigurieren. Das MTM-Beispielprojekt enthält de.duenndns.mtmexample.JULHandler, mit dem die Debug-Protokollierung zur Laufzeit aktiviert und deaktiviert werden kann.

Alternativen

MemorizingTrustManager ist nicht der einzige seiner Art.

NetCipher ist eine Android-Bibliothek des Guardian Project zur Verbesserung der Netzwerksicherheit für mobile Apps. Sie enthält einen StrongTrustManager für gründlichere Zertifikatsprüfungen, einen unabhängigen Root-CA-Speicher sowie Code, um Ihren Datenverkehr einfach über das Tor-Netzwerk mit Orbot zu leiten.

AndroidPinning ist eine weitere Android-Bibliothek, geschrieben von Moxie Marlinspike, mit der Serverzertifikate festgelegt (gepinnt) werden können, um die Sicherheit gegen staatliche MitM-Angriffe zu verbessern. Verwenden Sie diese, wenn Ihre App für die Kommunikation mit einem bestimmten Server entwickelt wurde!

Mitwirken

Bitte helfen Sie mit, MTM in weitere Sprachen zu übersetzen!

Tool herunterladen