Javaカードで鍵ペアの証明書を生成したいとします。私はAndroidアプリでpkcs#10リクエストを生成してJavaカードに送信する必要があると思うが、pkcs#10を生成するために私は私用キーが必要だが、秘密鍵はJavaカードにあり、残してはいけない。どうしたらいいですか?Javaカードで公開鍵を使用してAndroidアプリで証明書署名リクエストを生成する方法
答えて
証明書署名要求を生成するために、Java Cardから秘密鍵を抽出する必要はありません。公開鍵をCSRに含めるだけで、秘密鍵で署名する必要があります。
ここではCertificate enrollment processは、説明されている一般的なプロセスと、Android搭載端末の関連コードを確認できます。
のAndroidデバイスは、Javaカードから公開鍵を取得する)プロセスはこの
1のようになる可能性があなたのケースでは、)CSRを構築し、
2を署名するためにJavaカードにコンテンツを送信Javaのカードは、秘密鍵 3)のAndroidデバイスは、サーバー
4)サーバはCSRデータとX509証明書を構築するCA秘密鍵でサインそれに署名したCSRを送信してCSRに署名し、X509を返します。クライアントへ
5)のAndroidデバイスが証明書を受け取り、コードについて
を保存するためにJavaカードに送信し、リンクされた例は以下のように変更
がCSR
//Necessary to extract the public key from card
PKCS10CertificationRequestBuilder csrBuilder = new JcaPKCS10CertificationRequestBuilder(
new X500Name(principal), keyPair.getPublic());
を作成して追加し、有効になります
spongycastle JCESigner
private static class JCESigner implements ContentSigner {
@Override
public byte[] getSignature() {
try {
//MUST be executed in the Java Card. In this point you can
//send the outputStream.toByteArray() to the card and sign it with the private key
//signature.update(outputStream.toByteArray());
//return signature.sign();
} catch (GeneralSecurityException gse) {
return null;
}
}
署名を行うためにカードに実行されるコードは、秘密鍵は、Javaカードの層を残すことはありませんしなければならない1
Signature signature = Signature.getInstance(sigAlgo);
signature.initSign(privateKey);
signature.update(dataToSign);
byte signedData = signature.sign();
pedrofbありがとうございました –
@pedrofb JavaCardがX509をカードに保存する方法を示すサンプルまたはウェブサイトがありますか? – codenamezero
- 1. Androidアプリ内で証明書署名リクエストを作成する
- 2. 証明書の公開鍵を使用してJavaで署名を検証する
- 3. Java公開鍵を使用してxmlデジタル署名を確認
- 4. C++でスマートカードを使用して証明書署名リクエストを作成する
- 5. csrから証明書(公開鍵)を生成する方法は?
- 6. 公開鍵ピンニング(SSLピンニング)用のiOS証明書の生成方法
- 7. 自己署名証明書からX.509 SubjectPublicKeyInfo/OpenSSL PEM公開鍵を生成します。
- 8. ハッシュと公開鍵を使ってデジタル署名を検証する方法は?
- 9. Javaのトークンと公開鍵を使用してJWT署名を検証する方法
- 10. nodejsで公開証明書と自己署名証明書の両方を信頼する方法
- 11. CryptoAPIを使用して証明書に署名する方法
- 12. iOSデバイスで秘密鍵と証明書リクエストを生成する
- 13. 公開鍵でデジタル署名する
- 14. 秘密鍵を使用して公開鍵を生成する方法
- 15. C#のBouncy Castleで公開PGP鍵を署名する方法
- 16. makecertを使用して自己署名証明書を作成する方法
- 17. Androidで自己署名証明書を信頼する方法
- 18. スプリングブートセキュリティで公開鍵/秘密鍵を使用してJWT署名を作成して確認する
- 19. 証明書から公開鍵/秘密鍵を取得する
- 20. C#ユニバーサルアプリケーションプラットフォームの証明書の公開鍵
- 21. 鍵保管庫を使用してクライアント証明書を生成
- 22. 新自己署名証明書コマンドレットによってコード署名証明書を作成する方法
- 23. 証明書を使用したSoapリクエストの署名
- 24. opensslを使用して公開鍵でデータ署名を確認する
- 25. 証明書でxmlに署名する方法pkcs7 - Java
- 26. Pythonでx509証明書から公開鍵を抽出する方法は?
- 27. 証明書の公開鍵を.pem形式で保存する方法
- 28. Opensslでは、公開鍵から証明書要求を生成する方法は?
- 29. 公開鍵でXMLに署名
- 30. コード署名証明書から公開鍵を共有することはできますか?
これと同様です。 PKCS#10はそれを要求しません。もしそうならば、それは愚かでしょう。 Androidレイヤーでリクエストを生成し、Java Cardレイヤーに署名するだけです。 – Shuckey
Offcurse正しいです。 Androidレイヤーでリクエストを生成し、Java Cardレイヤーに署名する方法を教えてください。歌ったデータを追加する方法は、ansroidアプリのjavaカードから返され、csrを持っていますか? –