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.