我不熟悉SSL并试图弄清楚如何使它与Java Netty服务器一起工作。我想要做到这一点:Correctly creating a new certificate with an intermediate certificate using bouny castle 我想为不同的客户端创建证书,并让他们与我的服务器通话。我为每个客户端生成唯一的证书,但是我有两个关于Java中的SSL实现的基本问题。在Java中实现SSL clientAuth
当我创建我的中间证书来签署客户端证书时,这基本上是一次类似于创建根证书的事情吗?在此示例中,作者生成
KeyPair intermediatePair
。当我签署不同的客户端证书时,是否重新生成此KeyPair?我的猜测是否定的,我应该将这个中间证书保存在某个地方,然后在我的服务器启动时加载它。客户端如何获得服务器的信任?他们拥有的证书是否由服务器rootcert-> intermediatecert签名并创建了信任链?或者在我创建证书后,我需要将该证书添加到我在服务器启动时使用的
KeyStore trustStore
?事情是这样的(伪)KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null); CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); Path p = Paths.get(path); byte[] bytes = Files.readAllBytes(p); InputStream in = new ByteArrayInputStream(bytes); X509Certificate certificate = null; if (in != null) { certificate = (X509Certificate) certificateFactory.generateCertificate(in); in.close(); } trustStore.setCertificateEntry("certficateName", certificate);
这里有两个或三个具体问题。关于这个问题没有什么“太宽泛”。 – EJP