JSR 105 API を使用して XML ドキュメントに署名する必要があります。標準プロバイダーを使用してそれを行う方法はすでにわかっていますが、HSM をサポートするコードが必要です。で、これが問題。
次のように署名を初期化すると:
XMLSignatureFactory fac;
fac = XMLSignatureFactory.getInstance("DOM");
HSM (SunPKCS11 プロバイダー) から取得した秘密鍵を使用すると、次の例外/エラーが発生します。
my.exception.InternalServerErrorException: Internal server
error: Create signature problem
Caused by: javax.xml.crypto.dsig.XMLSignatureException:
java.security.InvalidKeyException: No installed provider supports this key: sun.security.pkcs11.P11Key$P11PrivateKey
at
org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:411) ~[xmlsec-1.5.7.jar:1.5.7]
SunPkcs11 プロバイダで署名ファクトリを初期化すると、次のようになります。
XMLSignatureFactory fac;
fac = XMLSignatureFactory.getInstance("DOM", provider);
私はこの例外を受けています:
Caused by: javax.xml.crypto.NoSuchMechanismException: java.security.NoSuchAlgorithmException: no such algorithm: DOM for provider SunPKCS11-SunPKCS11
少しグーグルで検索したところ、XML 署名で使用されるプロバイダーには JSR 105 拡張子が必要であることがわかりましたが、SunPkcs11 には拡張子がないようです。それがあれば、それはうまくいくでしょう。
オープンソースまたはJava / Oracleが提供するコードを使用してこの状況を解決する方法を知っている人はいますか?
ありがとう、ジョセフ