οκ!我想在java中建立一个客户端服务器通信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签名?或者是我可以在客户端/服务器之间建立连接的另一种方式? 首先,我使用openssl创建了CA,然后服务器和客户端的两个jks文件包含了证书和密钥。对不起英文。