我不熟悉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