Heim >Java >javaLernprogramm >Wie lade ich einen privaten RSA-Schlüssel aus einer Datei in Java für die SAML-Signierung?
Beim Versuch, eine SAML 1.1 Assertion Consumer Service-Nachricht mit einem privaten RSA-Schlüssel zu signieren, kann der folgende Fehler auftreten:
<code class="java">java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format</code>
Dieser Fehler weist darauf hin, dass der private Schlüssel nicht das richtige Format hat. Private RSA-Schlüssel werden normalerweise im PEM-Format gespeichert, Java erfordert jedoch, dass sie im PKCS8-Format vorliegen.
Um einen privaten RSA-Schlüssel vom PEM- in das PKCS8-Format zu konvertieren, können Sie den folgenden Befehl verwenden:
<code class="bash">openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key_file -nocrypt > pkcs8_key</code>
Sobald Sie den privaten Schlüssel in das PKCS8-Format konvertiert haben, können Sie ihn mit dem folgenden Code in Java laden:
<code class="java">byte[] privKeyBytes = Files.readAllBytes(Paths.get("pkcs8_key")); KeySpec ks = new PKCS8EncodedKeySpec(privKeyBytes); RSAPrivateKey privKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(ks);</code>
Sie können jetzt den privKey verwenden, um die SAML-Nachricht zu signieren.
Das obige ist der detaillierte Inhalt vonWie lade ich einen privaten RSA-Schlüssel aus einer Datei in Java für die SAML-Signierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!