私はx.509証明書について自分自身を教えるために、以下のこのコードで作業しています。私の質問は、どこか他の場所に証明書やストアファイルを生成してから、プロジェクトにファイルを添付することになっていますか?または、プロジェクトでは、このすべてをプログラムで生成する予定ですか?私のエラーは、ストアファイルを見つけることができないということです。x.509 Cert - ストアファイルの生成方法は?
0
A
答えて
1
これら2つのプログラムは、基本的に、証明書とキーストアがすでに作成されており、名前がuser.store
とcrypt.cer
であり、これらの2つのファイルがプログラムがインストールされているフォルダにあると想定しています。
これらのファイルを生成するには、Javaディストリビューションのkeytool
を使用してキーストアと証明書を作成し、そこからパブリック証明書をエクスポートすることができます。ここで
は、ステップバイステップのサーバーを何です:
int port = 7999;
ServerSocket server = new ServerSocket(port);
Socket s = server.accept();
ObjectInputStream is = new ObjectInputStream(s.getInputStream());
サーバーがポート7999
上のリスニングソケットを開き、一部のコンテンツを期待しています。
//Read the keystore and retrieve the server's private key
//Default keystore is jks
KeyStore ks = KeyStore.getInstance("jks");
ks.load(new FileInputStream("user.store"), password);
PrivateKey dServer = (PrivateKey)ks.getKey(aliasname, password);
は、それはあなたのプログラムをlauchedどこへuser.store
(相対ファイルと呼ばれるファイルにあるキーストアを取得します。そのキーストアから、それはその別名で秘密鍵を取得し、あなたのケースでaliasname
("user"
)。
//Decrypt: server's private key
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
byte[] in = (byte[]) is.readObject();
cipher.init(Cipher.DECRYPT_MODE, dServer);
byte[] plaintText = cipher.doFinal(in);
System.out.println("The plaintext is: " + new String(plaintText));
server.close();
これは、クライアントのために今すぐ(通常はコンソール)
を秘密鍵を使用してコンテンツをソケットに送る解読して、標準出力に印刷:
String host = "localhost";
int port = 7999;
Socket s = new Socket(host, port);
ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream());
それは、ポート上のソケットに接続し7999
//Client loads server's cert
InputStream inStream = new FileInputStream("crypt.cer");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
はその後、それは証明書の有効性をチェックする(再び相対)ファイルcrypt.cer
からサーバーのパブリック証明書を取得します。
//Get public key from cert
RSAPublicKey eServer = (RSAPublicKey) cert.getPublicKey();
//Encrypt with RSA as key generation algorithm
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, eServer);
byte[] cipherText = cipher.doFinal(message.getBytes());
System.out.println("Ciphertext: " + cipherText);
os.writeObject(cipherText);
os.flush();
os.close();
s.close();
input.close();
これは、メッセージ(ユーザーが入力したもの)を暗号化してサーバーに送信します。
関連する問題
- 1. X.509証明書の生成
- 2. Java keytoolコマンドラインインターフェイスでx.509証明書を生成する方法
- 3. X.509証明書でcsrファイルを生成する方法
- 4. python X.509解析
- 5. CertificateFactory.getInstance( "x.509")はスレッドセーフですか?
- 6. X.509証明書のSHA-1指紋の計算方法は?
- 7. WSS、Axis with x.509
- 8. X.509とpemの違い
- 9. X.509:私設/公開鍵
- 10. X.509証明書を生成するためにどのようなツールを使用できますか?
- 11. Windows XPでx.509証明書を取得する方法
- 12. X.509セキュアWebサービスのJavaクライアント
- 13. X.509(非自己署名)クライアント証明書をプログラムで生成する
- 14. Windowsで使用するためにLinuxでx.509鍵ペアを生成
- 15. JavaでX.509証明書に署名する
- 16. JavaでX.509証明書を読む
- 17. pharo smalltalk x.509証明書操作
- 18. X.509証明書署名抽出
- 19. Mac OS X内でPEM形式のgoogle oauth X.509証明書を作成
- 20. 証明書の問題x.509 c#
- 21. X.509認証証明書を作成する
- 22. ラムダはPython boto3ストアファイル
- 23. x 509ルート証明書確認
- 24. X.509 DNのすべての部分はオプションですか?
- 25. WCFのX.509証明書はありますか?
- 26. 複数のページを生成する方法[X]のボックス[1,2,3 ...]
- 27. iPhone AppでOpenSSLでX.509証明書を使用する
- 28. SwiftでNSStream(s)を使用して自己生成のssl certを使用する方法
- 29. 自己署名証明書からX.509 SubjectPublicKeyInfo/OpenSSL PEM公開鍵を生成します。
- 30. "X"パターンの作成方法は?
私はあなたの証明書が何であるか分かりませんが、JVMがファイルを見つけることができないため、取得しているエラーは単純に起こっています。解決方法には、クラスパスに対する相対パスの指定、またはファイルへの完全なファイルシステムパスの指定が含まれます。 –
ええ。私はこのプログラムが私のためにストアファイルを生成するはずか、何とかストアファイルを作成する必要があるかどうかはわかりません。私はトピックに新しいので、私は少し失われています。 – RockOn