。
署名を手動で既存のツールで行うかすることができる(Javaの例を、あなたはそれを求めていないが、このコードスニペットは、とにかく便利かもしれません):
byte[] bytesToSign = loadMyData();
KeyStore ks = KeyStore.getInstance("pkcs12", "SunJSSE");
ks.load(new FileInputStream("cert.p12"), "passwd1".toCharArray());
PrivateKey privateKey = (PrivateKey) ks.getKey("myalias", "passwd2".toCharArray());
Signature sig = Signature.getInstance("SHA1withRSA", ks.getProvider());
sig.initSign(privateKey);
sig.update(bytesToSign);
byte[] signature = sig.sign();
独自のない自己署名証明書を作成するにはopensslとthis SO answerを参照してください。
また、PDFに署名することについて興味があります - あなたのケースでは、これらのファイルを別々のハッシュ合計ではありませんか?
編集:あなたが任意の記号、既存のツールではない正確にX.509サインをしたい場合、あなたはあなたの証明書からRSAキーを抽出することができますし、約keyUsage
フィールドを悩ませずに署名します。
私はPDFとして請求書について話しています。彼らは法的妥当性を持つためにデジタル署名が必要です。そして、この場合、単に合計では不十分です。 – StormByte
私はすでにこの目的のために自己署名鍵を簡単に作ることができると知っていますが、もし私がそうすればクライアントが得る警告を避けたかったのです。 – StormByte