我发现 Java 有它自己的“证书存储”,它位于 lib 文件夹内安全文件夹中的一个文件中。
您可以从 Java 控制面板 -> 安全 -> 管理证书访问它。
但我想通过 Java 代码访问它们。有人有这方面的一些信息吗?证书如何存储在证书文件中?Java/Oracle 的官方文档或官方文档是否有 Java 内置方式?
谢谢!
我发现 Java 有它自己的“证书存储”,它位于 lib 文件夹内安全文件夹中的一个文件中。
您可以从 Java 控制面板 -> 安全 -> 管理证书访问它。
但我想通过 Java 代码访问它们。有人有这方面的一些信息吗?证书如何存储在证书文件中?Java/Oracle 的官方文档或官方文档是否有 Java 内置方式?
谢谢!
查看 java 密钥库,它可能会对您有所帮助:
http://docs.oracle.com/cd/E19830-01/819-4712/ablqw/index.html
https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores
http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html
java中导入证书的例子:
我们必须通过代码使用证书来对某些应用程序进行 API 调用。由于某些原因,我们无法在代码容器上安装证书。API 服务提供商为我们提供了 .cer 文件。为此目的使用了 Apache HTTP 客户端
首先创建一个基于文件的密钥库并将这个 .cer 文件加载到它上面
keytool -import -alias joe -file <path>/file.cer -keystore <keystoreName> -storepass <password>
然后将生成的密钥库文件作为资源添加到应用程序中,并构建您的自定义 HTTPClient 以使用此密钥库
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import javax.net.ssl.SSLContext;
import java.io.File;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
File file = new File(getClass().getClassLoader().getResource(<pathTokeystoreFile>).getFile());
SSLContext sslcontext = SSLContexts.custom()
.loadTrustMaterial(file, CERT_PASSWORD.toCharArray(),
new TrustSelfSignedStrategy())
.build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslcontext,
new String[]{"TLSv1", "SSLv3", "TLSv1.1", "TLSv1.2"},
null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
CloseableHttpClient customClient;
customClient = HttpClients.custom()
.setSSLSocketFactory(sslConnectionSocketFactory)
.build();
}