私钥和公钥分开

时间:2015-11-02 14:12:09

标签: java openssl keystore private-key public-key

οκ!我想在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文件包含了证书和密钥。对不起英文。

0 个答案:

没有答案