SignServer を使用して、クライアントに代わってデジタル署名を作成する必要があります。2つの問題に関して少し混乱しています。
- すべてのクライアントに固有の証明書が必要ですか、それとも単一の証明書をすべてに使用できますか?
- ドキュメントにそのようなものが見つからないため、SignServer を使用してデジタル署名証明書を作成できますか? 「いいえ」の場合、サーバー側アプリケーションからデジタル署名証明書を作成するための推奨される方法は何ですか?
前もって感謝します
SignServer を使用して、クライアントに代わってデジタル署名を作成する必要があります。2つの問題に関して少し混乱しています。
前もって感謝します
1) すべてのクライアントに一意の証明書が必要ですか、それとも単一の証明書をすべてに使用できますか?
私はこのプロジェクトを知りませんでしたが、ドキュメントを読んで
SignServer は、サーバー側の署名サーバーです。すべてのユーザーの個別の署名キー、または組織の 1 つの中央キー
だから、あなたのニーズに依存します。すべての署名者を識別したい場合は、個別の証明書を使用してください。それ以外の場合は、中央証明書を使用してください。ただし、証明書が中央サーバーに保存されているわけではありません。ユーザーには配布されません。中央リポジトリが必要になります。暗号化ハードウェア (HSM) を使用することをお勧めします。また、証明書を使用できるように、ユーザーに資格情報を生成する必要があります
2) SignServer を使用してデジタル署名証明書を作成できますか。ドキュメントにそのようなものが見つからないためです。「いいえ」の場合、サーバー側アプリケーションからデジタル署名証明書を作成するための推奨される方法は何ですか?
通常、署名ソリューションは、公開鍵認証局と結合して証明書を発行することはありません。このリンクを見てください
EJBCA : https://www.ejbca.org/証明書を発行する既知の PKI 認証局ソフトウェア。J2EE オープンソース ソリューションです。
エキスパート PKI チュートリアル: 認証局を確立するための OpenSSL に基づく一連のスクリプトです。
もちろん、Bouncycastleを使用して独自の統合ソリューションを構築することもできます。発行する証明書の数と CA の複雑さに応じて選択してください
この質問は、SignServer ディスカッション フォーラムでも回答されています。
複数の署名者が同じ鍵ペアと証明書を共有できます。それらに同じ暗号トークンとキーを指定し、同じ証明書を構成するだけです。
証明書は、SignServer によって作成されることを意図していません。キー ペアを生成した後、証明書を発行できる認証局 (CA) に提出できる証明書署名要求 (CSR) を取得できます。
テスト用、または組織に CA がなく、商用 CA から証明書を購入したくない場合は、EJBCA ( ejbca.org ) や OpenSSLなどのソフトウェアを使用して独自の PKI をセットアップできます。 .
署名はネットワークを経由する必要があるため、文字列に変換しますが、元のバイト配列の文字列だけではセキュリティ上使えません。したがって、バイト配列の操作を行い、別の文字列に変換します。new String(byte [] signature) を送信するのではなく、new String(Base64.encode(byte[] signature)) を送信する必要があります。
式は次のとおりです: data.getByte() + 秘密鍵 à 署名
そこからさらに学ぶことができます。リンクは非常に役立ちます。 http://javaint4bytes.blogspot.com/2018/04/java-signature-certificates.html