2016-04-11 5 views
20

Ich versuche, alle Aspekte der Netzwerksicherheitskonfiguration der N Developer Preview zu testen. Ich habe das meiste davon funktioniert, aber ich bin von dem selbstsignierten Zertifikatszenario ratlos.Was verwenden wir für Android N Netzwerksicherheitskonfiguration für ein selbstsigniertes Zertifikat?

Laut the docs sollte Android N mit einer PEM- oder DER-Datei zufrieden sein, wie auch bei anderen Zertifikatsvalidierungsszenarien. Ich arbeite jedoch nicht viel mit selbstsignierten Zertifikaten, und meine Versuche, diese Funktion zu erhalten, laufen weiterhin in Validierungsausnahmen für Zertifikatspfade.

Zum Testen verwende ich thin als Server, der auf meinem Entwicklungscomputer läuft und über einen N-Emulator erreichbar ist. Das selbstsignierte Zertifikat funktioniert für Browser auf meinem Entwicklungscomputer, und wenn ich auf thin ohne SSL umschalte, können Apps den Server problemlos erreichen. Also, es ist kein Konnektivitätsproblem.

habe ich das selbst signierte Zertifikat die Anweisungen auf this site mit:

sudo openssl genrsa -out "/etc/[webserver]/ssl/example.key" 2048 
sudo openssl req -new -key "/etc/[webserver]/ssl/example.key" \ 
       -out "/etc/[webserver]/ssl/example.csr" 
sudo openssl x509 -req -days 365 -in "/etc/[webserver]/ssl/example.csr" \ 
        -signkey "/etc/[webserver]/ssl/example.key" \ 
        -out "/etc/[webserver]/ssl/example.crt" 

Nach this Stack Overflow answer, die example.crt Datei eine PEM-Datei ist. Anderswo sehe ich Anweisungen zum Erstellen a "combined PEM" file. Allerdings habe ich beides versucht, ohne Glück.

In Bezug auf die Netzwerksicherheit Konfiguration Zeug habe ich sowohl <domain-config> und <debug-overrides> versucht. Letzteres sieht so aus:

<?xml version="1.0" encoding="utf-8"?> 

<network-security-config> 
    <debug-overrides> 
    <trust-anchors> 
     <certificates src="@raw/selfsigned"/> 
    </trust-anchors> 
    </debug-overrides> 
</network-security-config> 

Aber ich bekomme den Validierungsfehler in jedem Fall.

Was genau sollten wir als PEM- oder DER-Datei einsetzen, als eine Rohressource, die das funktioniert?

+0

Haben Sie 'android: debuggable = true' hinzugefügt? –

+0

@PerakSola: Ich teste aus einer Reihe von Produkt-Aromen, aber ich verwende immer 'debug' als Build-Typ. – CommonsWare

+1

Ich habe das ausprobiert, indem ich ein selbstsigniertes Zertifikat erstellt habe, wie Sie es beschrieben haben und es hat funktioniert. Ich habe die Datei "example.crt" kopiert, in den Ordner "raw resource" gestellt und die Erweiterung entfernt. Ich denke der einzige große Unterschied ist, dass ich Tomcat lokal als Webserver betreibe. Eine Sache, die Sie überprüfen sollten, ist, dass Sie das Metadaten-Element zur 'AndroidManifest.xml'-Datei hinzugefügt haben. Das Cert arbeitete mit einem der '', '' oder '' in der XML-Datei. –

Antwort

7

Dies scheint auf N Developer Preview 2 zu arbeiten, unter Verwendung der example.crt generiert durch die openssl Skripte in der Frage gezeigt. Im Moment gehe ich davon aus, dass es eine Änderung in N Developer Preview 2 im Vergleich zu N Developer Preview 1 gab, die die Änderung berücksichtigt.