嘗試使用RSA 私鑰簽署SAML 1.1 斷言消費者服務訊息時,可能會發生以下錯誤:
<code class="java">java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format</code>
此錯誤表示私鑰的格式不正確。 RSA 私鑰通常以 PEM 格式存儲,但 Java 要求它們採用 PKCS8 格式。
要將RSA 私鑰從PEM 轉換為PKCS8 格式,可以使用以下指令:
<code class="bash">openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key_file -nocrypt > pkcs8_key</code>
將私鑰轉換為PKCS8 格式後,您可以使用下列程式碼將其載入到Java 中:
<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>
您現在可以使用privKey 對SAML 訊息進行簽署。
以上是如何在 Java 中從檔案載入 RSA 私鑰以進行 SAML 簽章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!