[英]x.509 Cert - How to generate store file?
好的,所以我正在使用下面的代碼來自學x.509證書。 我的問題是,我是否應該在其他地方生成證書或存儲文件,然后將該文件附加到項目中? 還是該項目應該在程序中生成所有這些? 我的錯誤是找不到存儲文件。
基本上,這兩個程序期望已經創建了名稱為user.store
和crypt.cer
的證書和密鑰庫,並且這兩個文件位於啟動程序的文件夾中。
要生成這些文件,可以使用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);
它得到坐落在被稱為文件密鑰庫user.store
(相對文件到您lauched程序,從密鑰庫,它得到的私鑰,其別名是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();
這將加密消息(用戶輸入的消息)並將其發送到服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.