当前位置: 首页 > 面试题库 >

仅使用CA证书而不使用密钥库的SSLContext

董凡
2023-03-14
问题内容

我需要设置一个javax.net.ssl.SSLContext在Jersey-
Client应用程序中使用。我要做的就是接受自定义根ca证书的上下文。真的没有办法生成密钥库文件和导入CA证书吗?


问题答案:

真的没有办法生成密钥库文件和导入CA证书吗?

有一些方法可以在没有密钥库文件的情况下执行此操作,但是由于必须加载要信任的CA证书,因此必须以某种方式加载文件或资源。

(您当然也可以实现自己的实现TrustManager,使所有调用都使用Certification Path
API,而KeyStore根本不使用该API,但这只会增加代码的复杂性,而不会减少代码。您还需要了解 Java
PKI程序员指南

才能正确执行此操作。)

如果您确实不想要密钥库文件,则可以KeyStore在内存中使用该API并直接加载证书。

这些方面的工作应该起作用(未经测试):

InputStream is = new FileInputStream("cacert.crt");
// You could get a resource as a stream instead.

CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate caCert = (X509Certificate)cf.generateCertificate(is);

TrustManagerFactory tmf = TrustManagerFactory
    .getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null); // You don't need the KeyStore instance to come from a file.
ks.setCertificateEntry("caCert", caCert);

tmf.init(ks);

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);

(请记住关闭所有内容并处理异常。)

以这种方式加载证书还是KeyStore从密钥库文件将证书加载到类似实例中更方便,这取决于您自己决定。



 类似资料:
  • 我是新来配置Jetty服务器的SSL。我按照digcert的步骤创建了私钥文件、证书请求CSR文件。 我向CA发送了证书请求,并拿回了我签名的CSR。但是CA给我发了一个有两个证书的捆绑包,一个是我的证书,由CA签名,第二个是CA证书。(1star_xyx_abc_comcrt文件,2.CRT文件)。现在我面临着从这些文件创建密钥库的麻烦。 当我按照Oracle文档的步骤4、5和6使用keytoo

  • 我正在尝试创建一个ARM模板,它可以使用透明数据加密(TDE)在Azure中部署SQL Enterprise VM,使用密钥库作为EKM。 我找到了如何通过密钥库启用TDE的示例,包括101 SQL KeyVault模板和SQL ARM规定,但在这两种情况下,它们只需要密钥库URL和访问凭据(AppID和Secret)。 鉴于以上所述,我试图将SQL指向我作为pfx文件导入到key Vault中的

  • 问题内容: 我最近负责模拟Java中的Apple产品(iPhone配置实用程序)。我一直停留的部分内容之一是有关Exchange ActiveSync的部分。在其中,它允许您从钥匙串中选择一个证书,以用作EAS帐户的凭据。经过研究,我发现它实际上是在创建PKCS12密钥库,将我选择的证书的私钥插入,并将其编码为XML。到目前为止,没什么大不了的。如果我使用钥匙串访问权限创建了.p12文件,则该文件

  • 对于我们的指向站点VPN,我们希望创建一个根证书。因此我们可以为所有需要登录VPN的合作伙伴创建尽可能多的客户端证书。(Azure虚拟网络) 手工完成这件事很完美。我们生成一个作为根CA的证书(自签名)。我们可以在powershell中这样做:

  • 我正在尝试对现有API启用Azure密钥库证书。我们已经在Azure Key Vault帐户中拥有秘密和Azure Key Vault证书。下面是配置证书的代码: 在我的本地计算机上,我正确地导入了证书,其中包括下载pfx格式。

  • 本任务将演示将现有的证书和密钥添加到 Istio CA 中。 默认情况下,Istio CA 生成自签名 CA 证书和密钥,并使用它们签署工作负载证书。Istio CA 也可以使用我们指定的证书和密钥来签署工作负载证书。接下来我们将演示将证书和密钥插入 Istio CA 的示例。 开始之前 根据安装指南中的快速入门指南,在 Kubernetes 集群中安装 Istio。 在安装步骤的第四步应该启动身