οκ!我想在java中 Build 一个客户端服务器通信oves SSL / TLS . 服务器是多线程的 . 使用openssl,我充当了我自己的CA(为权限创建了私钥和自签名证书) . 现在我想为我创建的CA签名的服务器和客户端创建密钥和证书 .
1)我是否必须从每个客户端的提示中创建证书和密钥?或者它是另一种“自动化”方式,例如使用脚本?
2)我已经看到这个代码用于设置密钥库
private void setupClientKeyStore() throws GeneralSecurityException, IOException
{
clientKeyStore = KeyStore.getInstance( "JKS" );
clientKeyStore.load( new FileInputStream( "client1publickey.jks" ),
"password".toCharArray() );
}
private void setupServerKeystore() throws GeneralSecurityException, IOException
{
InputStream keyStoreResource = new FileInputStream("serverprivatekey.jks");
char[] keyStorePassphrase = "password".toCharArray();
serverKeyStore = KeyStore.getInstance("JKS");
serverKeyStore.load(keyStoreResource, keyStorePassphrase);
}
我运行该命令以查看这些条目的类型,client1publickey是TrustedCert条目,而serverprivatekey是PrivateKey条目 . 这段代码在我的服务器类上 . 我在我的客户端类上有这个代码
private void setupServerKeystore() throws GeneralSecurityException, IOException {
serverKeyStore = KeyStore.getInstance( "JKS" );
serverKeyStore.load( new FileInputStream("serverpublickwy.jks"),
"university".toCharArray() );
}
private void setupClientKeyStore() throws GeneralSecurityException, IOException {
clientKeyStore = KeyStore.getInstance( "JKS" );
clientKeyStore.load( new FileInputStream( "client1privatekey.jks" ),
"university".toCharArray() );}
问题是如何单独创建这些jks文件? publickey.jks文件是cert,对吗?如何从私钥中将其存储在另一个文件中并从CA签名?或者是我可以在客户端/服务器之间 Build 连接的另一种方式?首先,我使用openssl创建了CA,然后服务器和客户端的两个jks文件包含了证书和密钥 . 对不起英文 .