java证书存放位置_Java中的证书路径发现

我尝试通过

java内置功能(HttpURLConnection)建立https连接.但是我得到了这个例外:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)

...

...

我的证书链是:

根证书 – >中级证书 – > Web服务器证书

使用的证书通过“路径发现”的含义是正确的.信任锚是Root证书,它在我系统上的java密钥库中导入.中间证书不是……但是

>中间证书由我信任的根签署 – 所以我也相信中间人.

> Web服务器证书使用中级证书签名,我相信(第1点)

那么验证必须成功通过吗?我弄错了吗?

在某处我读到了这个:

Browsers can do auto-discovery, server to server doesn’t.

但缺乏这种功能是非常基本的.有没有明确的方法这样做auto-discovery?

**更新

是的,这是问题,GPI.我很困惑,因为浏览器可以验证服务器证书但java应用程序不能.

这种行为的原因是:

>服务器只发送最终证书,而不是整个证书

链;

>证书最近被买了,并且是相对签名的

新中间证书;

>浏览器具有相对最新的证书列表

包括中间证书;

> java有相对不是最新的证书列表,和

中间证书不在里面.

>浏览器通过中间体验证最终证书

certificate java无法检查证书链,因为:1.

链没有发送; 2.最终证书的签名者(

中间一个)不是信任锚.

解决方案可能是:

>服务器返回整个证书链

>要在java信任库中添加的中间证书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个用 Java 编写的 jgit 拉取仓库的示例代码,支持路径: ```java import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import java.io.File; public class JGitDemo { public static void main(String[] args) { String localPath = "D:/test"; // 本地路径 String remoteUrl = "https://github.com/username/repo.git"; // 远程仓库地址 String username = "your_username"; // 用户名 String password = "your_password"; // 密码 try { Git.cloneRepository() .setURI(remoteUrl) .setCredentialsProvider(new UsernamePasswordCredentialsProvider(username, password)) .setDirectory(new File(localPath)) .call(); System.out.println("Repository cloned successfully!"); } catch (GitAPIException e) { System.out.println("Repository cloning failed: " + e.getMessage()); } } } ``` 在上述代码,我们使用 `Git.cloneRepository()` 方法来克隆远程仓库,设置了远程仓库地址、用户名、密码、本地路径等参数,并使用 `setCredentialsProvider()` 方法设置了用户名和密码,保证了拉取私有仓库的权限。同时,我们使用了 `setDirectory()` 方法设置了本地仓库的路径,确保了拉取后的仓库存放在正确的位置。 要支持路径,我们只需要在设置本地路径时使用正确的编码方式,例如: ```java String localPath = new String("D:/测试".getBytes("UTF-8"), "UTF-8"); ``` 这里我们将本地路径转换成了 UTF-8 编码格式,确保了路径能够被正确处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值