kostenloser Webspace werbefrei: lima-city


.crt-Datei in Android-App

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    biberiusmero

    Kostenloser Webspace von biberiusmero

    biberiusmero hat kostenlosen Webspace.

    Hallo zusammen!

    Ich hoffe, ich bin mit dieser Frage in der richtigen Kategorie, hat nämlich nur zweitrangig was mit Java zu tun...

    Ich habe beim Programmieren einer Android-App eine SSLHandshakeException bekommen.
    Hier habe ich die Lösung des Problems gefunden. Da ich eine Anfrage an einen Server mit selbstsigniertem Zertifikat sende, muss ich dieses vorher Android als vertrauenswürdig mitteilen.

    Mein Problem ist nun, dass ich nicht weiß, wie man bei einer Android App .crt-Dateien verwenden kann.
    Im Code auf der angegebenen Seite muss ja an dieser Stelle
    InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));

    das eigene Zertifikat angegeben werden.
    Bei Bildern geht das ja über res/drawable und R.drawable.name, aber bei anderen Dateitypen hab ich keine Ahnung :confused: :confused:

    Vielen Dank für eure Antworten!

    MfG biberiusmero
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Schau Dir mal das hier an: http://stackoverflow.com/questions/15912825/how-to-read-file-from-res-raw-by-name. Den InputStream, den Du damit bekommst, solltest Du dann genauso an den Konstruktor von BufferedInputStream übergeben können.
  4. Autor dieses Themas

    biberiusmero

    Kostenloser Webspace von biberiusmero

    biberiusmero hat kostenlosen Webspace.

    Vielen Dank für deine Antwort!

    Anders als bei dem Link handelt es sich bei mir aber um eine .crt-Datei.
    In welchen Ordner muss ich die dann unter res legen und wie rufe ich dann getIdentifier() korrekt auf?

    MfG biberiusmero
  5. biberiusmero schrieb:
    Vielen Dank für deine Antwort!

    Anders als bei dem Link handelt es sich bei mir aber um eine .crt-Datei.
    In welchen Ordner muss ich die dann unter res legen und wie rufe ich dann getIdentifier() korrekt auf?

    MfG biberiusmero
    In welchem Ordner die Datei liegt und welche Dateiendung sie hat, ist egal. In dem Beispiel liegt die Datei halt im Ordner raw. Die Dateiendung wird anscheinend beim Resourceidentifier eh weggeworfen. Schau Dir einfach nochmal die beiden Beispiele an:
    InputStream ins = getResources().openRawResource(
                getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
                "raw", getPackageName()));
    FILENAME_WITHOUT_EXTENSION wäre hier dann eben load-der oder wie Deine Datei heißt und das "raw" ersetzt Du mit dem Ordner, in den Du sie packst.
    Dann dieses Beispiel:
    InputStream XmlFileInputStream = getResources().openRawResource(R.raw.taskslists5items);
    Hier ersetzt Du wieder raw mit dem Ordner und taskslists5items mit dem Dateiname ohne Erweiterung, also z.B. load-der.

    Probier damit einfach mal rum, ich bin mir sicher, Du findest da eine funktionierende Version ;)
  6. Autor dieses Themas

    biberiusmero

    Kostenloser Webspace von biberiusmero

    biberiusmero hat kostenlosen Webspace.

    Ok, jetzt hab ich's geschafft!
    Ich hab die Datei cert.crt in den Ordner res/raw, der aufruf sieht folgendermaßen aus:
    InputStream caInput = new BufferedInputStream(
         this.context.getResources().openRawResource(R.raw.cert)
    );


    Allerdings kam jetzt schon der nächste Fehler; irgendwas mit dem Zertifikat... :megarofl: :megarofl: :wall:
    Ich werd mir überlegen, ob ich SSL nicht doch lieber weglasse...

    Aber vielen Dank für deine Antworten!

    MfG biberiusmero
  7. biberiusmero schrieb:
    Ich werd mir überlegen, ob ich SSL nicht doch lieber weglasse...
    Bloß nicht! Was bekommst Du denn jetzt für eine Fehlermeldung?

    Aber vielen Dank für deine Antworten!
    Gern geschehen :)

    Beitrag zuletzt geändert: 7.3.2016 23:27:16 von davidlw
  8. Autor dieses Themas

    biberiusmero

    Kostenloser Webspace von biberiusmero

    biberiusmero hat kostenlosen Webspace.

    Die Fehlermeldung war folgende:
    javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

    Ich fand die auf diversen Foren beschriebenen Lösungen aber recht komplex und zum Teil wurde auch erwähnt, dass dann SSL unwirksam werden würde...
    Wahrscheinlich bräuchte ich ein offizielles Zertifikat??

    Also habe ich das ganze jetzt ohne SSL weiterentwickelt und mehr oder weniger abgesichert.
    Wenn ich das ganze doch noch hinbekommen würde, wär das natürlich besser, aber das kann auch noch warten und ich implementier das später noch.

    MfG biberiusmero
  9. biberiusmero schrieb:
    Wahrscheinlich bräuchte ich ein offizielles Zertifikat??
    Naja, Du hast ja selbst auf den Artikel in den Android docs verlinkt, der erklärt, dass Du über den TrustManager kein von einer offiziellen CA signiertes Zertifikat brauchst. Es muss allerdings trotzdem gültig sein, also z.B. nicht abgelaufen. Ich kenn mich da nicht gut genug aus, um Dir konkret sagen zu können, auf was Du alles achten musst, aber Du kannst ja einfach nochmal mit Google's Hilfe versuchen ein neues, selbstsigniertes, gültiges Zertifikat zu erstellen und es damit probieren.
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!