Android og Windows har ikke samme TLS-algoritmer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger TLS mellem en Windows 7, der fungerer som server og en Android 2.2, der fungerer som klient. Certifikatet blev oprettet ved hjælp af makecert.exe. SSL-socketopsætningen virker i begge ender, men forhandlingerne på serversiden rapporterer, at de to endepunkter ikke deler en fælles algoritme og derfor ikke kan kommunikere med hinanden.


Det samme Windows-slutpunkt arbejder med et andet Windows-slutpunkt, der fungerer som klienten, så jeg ved generelt, at TLS-delen fungerer. Er der en måde at opgradere Android (en emulator i dette tilfælde) for at få de nødvendige algoritmer? Jeg spørger i generel forstand. Jeg regnede med nogen ved nu ved, hvordan man løser dette ... Jeg håber i det mindste.

Bedste reference


Det viser sig, at jeg på denne særlige windows-kasse har oprettet et underskriftscertifikat i stedet for et dataudvekslingscertifikat. Jeg har glemt parameteren 'sky' i makecert.exe kommandolinjeværktøjet. Når jeg fik fast, at det fungerede som en charme.


Tak for alle svarene. Jeg sætter pris på det.

Andre referencer 1


Hvis du ikke bruger det forkerte navn som 'TLS' i stedet for 'TLSv1', skal du downloade SpongyCastle og registrere det som en udbyder: [3]


static {
    Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
}


så få din SSLContext som sådan:


SSLContext.getInstance("TLS", "SC");


Det ser ud til at BouncyCastle er forudindlæst på Android, men det er en meget gammel version med begrænsede algoritmer. Nogen ompakket den nye BouncyCastle for at undgå ClassLoader-problemer.