Java >> Java tutorial >  >> Tag >> java.io

SSL Java java.io.IOException:Ugyldigt nøglelagerformat

Jeg havde præcis det samme problem. Nøglelagerfilen var faktisk ugyldig og ikke relateret til JDK//JRE-versionen. Problemet i mit tilfælde var forårsaget af Maven. Jeg brugte følgende mulighed i min pom-fil:

<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

Den "sande" værdi i filtreringen rodede med nøglefilen. Derfor var den nøglefil, der var tilgængelig i min klassesti, da Spring run ikke var den samme, som jeg havde under min mappe "src/main/resources", og det forårsagede undtagelsen Invalid Keystore Format. Da jeg testede med keytool, brugte jeg den under mappen "ressourcer", så det var vildledende det virkelige problem.

Løsning af problemet:I din pom.xml-fil skal du ændre værdien for "filtrering" til "false". En anden måde at løse problemet på var at angive eksplicit placeringen af ​​nøglelageret i filen application.properties. Så i stedet for:

server.ssl.key-store: classpath:keystore.jks

Jeg brugte

server.ssl.key-store: keystore/keystore.jks

Din fil er ugyldig. Du skal importere en JKS-nøglelagerfil og ikke en txt-fil. Du skal bruge nøgleværktøjet til at oprette din nøglelagerfil og derefter importere denne fil.


Jeg stod med det samme problem, da load keystore med følgende kode:

KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
Resource resource = new ClassPathResource(file);
trustStore.load(resource.getInputStream(), password.toCharArray());

Det viste sig at være JDK-problemet, det virker ikke med jre1.8.0_25 . når jeg opgraderer JDK-versionen til den seneste jre1.8.0_121 , det virker.


Java tag