しばらくの間、証明書に関する作業を行っていませんでした。少し助けを求めています。
理想的には、これを達成したいと思います。
- ジャーを作成します。
- 証明書で署名します。
- そのjar内のコードで、その証明書で署名されていることを検証します。
自己署名証明書を作成しました。
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
公開証明書をエクスポートしました
keytool -storepass password -alias selfsigned -export -rfc -file outfile.txt.cer -keystore keystore.jks
瓶に署名した
jarsigner -keystore keystore.jks -signedjar signedX.jar x.jar selfsigned
Enter Passphrase for keystore: password
次に、outfile.cer をロードし、この jar がそれに対して署名されていることを検証するクラスを Jar に作成します。
これはあなたにとって合理的に聞こえますか?
プライベート証明書で jar に署名してから、jar にパブリック証明書を含め、同じ証明書で署名されていることを確認します。
私にとって大きな穴は、jar を un-jar し、コードを変更し、NEW-Private-Cert で署名し、jar に NEW-Public-Cert を含めることができ、それが有効になることです。
この問題の解決策は、jar 内の証明書ではなく、検証する外部キー ストアを用意することだと思います。これは合理的に聞こえますか?
これは少し未解決の問題であり、単一の正解の問題というよりも設計上の問題であることを理解しています。
どんなアドバイスも素晴らしいでしょう。
編集...
これについて一晩考えてみると、自分のプロセスの間違いに気づきました。
PUBLIC 証明書をクライアントのキーストアにインポートする必要があります。次に、秘密鍵で jar に署名すると、クライアント jvm がそれを検証します。内部でチェックする必要はありません。
これをテストしてから、結果を書きます。