[英]Temporarily adding a self-signed certificate to a local truststore
我運行一個使用httpsconnections的Java應用程序。 在服務器上有一個自簽名證書。 在我的本地計算機上,我在路徑C:\\Whatever\\mycertificate.cer
上擁有此證書的副本。 我想這樣做,以便我的本地計算機僅對我的應用程序接受自簽名證書,並將其作為https連接的受信任證書(除了普通簽名證書),並且僅在應用程序運行時接受。
我程序的輸入參數是證書的路徑。 我使用以下代碼將其轉換為Java對象X509Certificate
:
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
InputStream inputStream = new FileInputStream(pathToTheCertificateFile);
X509Certificate certificate = (X509Certificate) certificateFactory.generateCertificate(inputStream);
inputStream.close();
接下來,我創建一個新的空Keystore
(信任Keystore
)並將證書對象添加到其中:
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null);
trustStore.setCertificateEntry("extra", certificate);
最后,我創建TrustManager
使用TrustManagerFactory
:
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
最后,我使用這些信任管理器數組來初始化SSLContext
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, tmf.getTrustManagers(), null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
這有3個問題:
這里有一個關於這個問題的體面討論: https : //security.stackexchange.com/questions/40207/why-ie-windows-forces-you-to-install-self-signed-certificates-as-root-ca-制作 。 簡而言之,這是故意很難做到的。 您是否有理由不能僅將例外添加到瀏覽器?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.