当前位置: 首页 > 知识库问答 >
问题:

异常无法在spring MVC中验证目标的证书

锺离阿苏
2023-03-14

我正试图使用我的用户名和密码从jira服务器获取问题详细信息,但我收到一个ssl错误,说明无法验证证书

获取错误:

嵌套异常为org.springframework.web.client.ResourceAccessException:获取请求时的I/O错误

“https://jira.example.com/rest/api/2/issue/id”:

我的服务.类代码

@Controller
public class Service{


    @RequestMapping("/hello")


     public String Data(ModelMap model){

        RestTemplate restTemplate = new RestTemplate();

        ResponseEntity<String> result = restTemplate.exchange("https://jira.example.com/rest/api/2/issue/id",  HttpMethod.GET, new HttpEntity<String>(createHeaders("username", "password")), String.class);

        model.addAttribute("message", result);


        return "helloworld";
    }

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders createHeaders( String username, String password ){
        HttpHeaders header =  new HttpHeaders();
        String auth = username + ":" + password;
        byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")) );
        String base64Creds = "Basic " + new String( encodedAuth );
        header.add("Authorization", "Basic " + base64Creds);
        return header;
    }   
}

共有1个答案

奚飞星
2023-03-14

您面临的问题是,您的应用程序无法验证您试图连接到的外部服务器,因为它的证书不受信任。

简而言之,正在发生的事情是:

  • 应用程序尝试通过安全(HTTPS)通道连接到Jira实例
  • 要建立安全连接,应用程序将下载证书
  • 应用程序通过尝试将证书追溯到已知的CA(保存在JRE证书存储中)来检查证书的有效性
  • 证书检查失败,因为证书是自签名的(很可能是)或过期的,等等。
openssl s_client -connect jira.example.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > public.crt

然后将其导入到您自己的密钥库中:

$JAVA_HOME/keytool -import -alias <server_name> -keystore $JAVA_HOME/lib/security/cacerts -file public.crt

注意:上面的命令适用于Unix环境。在Windows下,我建议从命令行使用类似的openssl,但也有用于相同目的的GUI工具。

 类似资料:
  • 问题内容: 我正在尝试使用我的用户名和密码从jira服务器获取问题详细信息,但我收到一条ssl错误,提示无法验证证书 那么如何验证证书 网址:http:local / 8080 / frr / hello 出现错误: 嵌套的异常是org.springframework.web.client.ResourceAccessException:GET请求的I / O错误 “ https://jira.e

  • 问题内容: 我有一个Web应用程序,要求客户端发送其证书,并且服务器必须验证证书(即查看颁发者是否为有效的颁发者,并存在于服务器的信任库中)。这是代码: 但是我有一个例外: 注意: 此处,客户端发送的证书为client.crt,用于签署client.crt证书的证书为密钥库“ trustedca”中的ca.crt。那为什么给这个例外呢? 问题答案: 如果您希望获得客户证书,请让JSSE为您完成所有

  • 我正在测试带注释的javax验证。它们在应用程序中工作良好,方法参数上有注释。但是当我试图通过手动构建验证工厂来测试它们时 我得到以下错误。 javax。验证。ValidationException:HV000183:无法初始化“javax”。艾尔。“表达工厂”。检查类路径上是否有EL依赖项,或者改用ParameterMessageInterpolator 收到这个错误后,我在gradle文件中添

  • 我正在测试一个具有预期异常的方法。我还需要验证在抛出异常后是否调用了一些清理代码(在模拟对象上),但看起来该验证被忽略了。这是代码。我正在使用 Junit 来验证预期的异常。 似乎完全被忽略了。无论我在中使用什么方法,我的测试都通过了,这不是我想要的。 你知道为什么会发生这种情况吗?

  • 下面是我的代码: 这里有个例外: 对象“users”中字段“salary”上的字段错误:拒绝值[null];代码[NotNull.Users.Salary,NotNull.Salary,NotNull.java.lang.Integer,NotNull];参数[org.springframework.context.support.defaultmessageSourceResolvable:代码

  • 在dynamodb表上运行batchGetItem函数时获取ValidationException。我在密钥列表下同时提供哈希密钥和范围密钥。以下是请求和响应。 请求: 答复: