此ca根目录证书不受信任

如果请求的服务器是https协议的,没有将服务的证书导入请求方的信任列表库,会出现找不到可信任证书的报错,这时候需要浏览器打开请求的地址,点击地址栏左侧的锁或者三角,点击证书,点击第二栏,导出证书,选择base64格式。

导出证书后将证书上传到应用中配置的证书目录,然后执行下面的命令

keytool -import -alias client -file server.cer -keystore servertrust.keystore

其中的server.cer是请求的服务上导出的证书,servertrust.keystore是本应用中配置的证书库。

import操作是将从请求的服务器下载的证书导入到信任列表中,导入keystore文件或者truststore文件都行。

可以使用下面的命令查看证书库包含的信任证书

key -list -v -keystore server.keystore


 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot应用程序中,可以使用Java的KeyStore类加载证书文件,并将其作为信任存储库添加到SSLContext中。以下是一些示例代码,可以在Spring Boot应用程序中加载根证书: ```java import org.springframework.boot.web.server.Ssl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import javax.net.ssl.SSLContext; import java.io.InputStream; import java.security.KeyStore; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; @Configuration public class SSLConfig { @Bean public Ssl ssl() throws Exception { Ssl ssl = new Ssl(); ssl.setKeyStore(this.loadKeyStore()); ssl.setKeyStorePassword("password"); ssl.setTrustStore(this.loadKeyStore()); ssl.setTrustStorePassword("password"); return ssl; } private KeyStore loadKeyStore() throws Exception { KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); try (InputStream is = new ClassPathResource("keystore.jks").getInputStream()) { keyStore.load(is, "password".toCharArray()); } return keyStore; } @Bean public SSLContext sslContext() throws Exception { CertificateFactory cf = CertificateFactory.getInstance("X.509"); try (InputStream is = new ClassPathResource("ca-cert.pem").getInputStream()) { X509Certificate cert = (X509Certificate) cf.generateCertificate(is); KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null); trustStore.setCertificateEntry("caCert", cert); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{new X509TrustManager() { public void checkClientTrusted(X509Certificate[] x509Certificates, String s) { } public void checkServerTrusted(X509Certificate[] x509Certificates, String s) { } public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{cert}; } }}, null); return sslContext; } } } ``` 这个代码片段假设你有一个名为 `keystore.jks` 的Java密钥库文件和一个名为 `ca-cert.pem` 的根证书文件在应用程序的类路径中。它将 `keystore.jks` 文件加载到KeyStore实例中,并将其用作KeyStore和TrustStore。它还将 `ca-cert.pem` 文件加载到证书工厂中,并将其添加到TrustStore中。最后,它创建一个SSLContext实例,并将其初始化为使用新的TrustManager,该TrustManager接受根证书作为信任证书
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值