使用 java 从本地商店获取 SSL 证书到 sslContext 对象中
Fetch SSL certificate from local store using java into sslContext object
我需要通过附加本地 ssl 证书来执行 rest 调用。
我没有关于 KeyStore 的任何信息。我只知道我的 PC 中安装了一个证书,我必须根据 "Serial number"、"Issuer" 等证书的详细信息使用该证书,我可以在个人证书存储的证书详细信息中看到这些信息。
我需要创建可以附加到 rest 调用的 SSLConnectionSocketFactory 对象。
我的问题是如何创建 SSLContext 对象?
SSLContext sslContext;// How to create this object and pass it to sslSocketFactory.
HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
您可以使用此代码段创建 SSLContext
实例。
// Load Certificate
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
Certificate certificate = certificateFactory.generateCertificate(new FileInputStream(new File("CERTIFICATE_LOCATION")));
// Create TrustStore
KeyStore trustStoreContainingTheCertificate = KeyStore.getInstance("JKS");
trustStoreContainingTheCertificate.load(null, null);
trustStoreContainingTheCertificate.setCertificateEntry("ANY_CERTIFICATE_ALIAS", certificate);
// Create SSLContext
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStoreContainingTheCertificate);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
System.out.println(sslSocketFactory);
我需要通过附加本地 ssl 证书来执行 rest 调用。
我没有关于 KeyStore 的任何信息。我只知道我的 PC 中安装了一个证书,我必须根据 "Serial number"、"Issuer" 等证书的详细信息使用该证书,我可以在个人证书存储的证书详细信息中看到这些信息。
我需要创建可以附加到 rest 调用的 SSLConnectionSocketFactory 对象。
我的问题是如何创建 SSLContext 对象?
SSLContext sslContext;// How to create this object and pass it to sslSocketFactory.
HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
您可以使用此代码段创建 SSLContext
实例。
// Load Certificate
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
Certificate certificate = certificateFactory.generateCertificate(new FileInputStream(new File("CERTIFICATE_LOCATION")));
// Create TrustStore
KeyStore trustStoreContainingTheCertificate = KeyStore.getInstance("JKS");
trustStoreContainingTheCertificate.load(null, null);
trustStoreContainingTheCertificate.setCertificateEntry("ANY_CERTIFICATE_ALIAS", certificate);
// Create SSLContext
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStoreContainingTheCertificate);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
System.out.println(sslSocketFactory);