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

客户端是否可以在没有证书的情况下使用RestTemplate向安全SSL服务器发出请求?

危飞跃
2023-03-14

有人能帮我回答以下问题吗:

我有一个启用SSL的REST服务器和一个位于两台不同计算机上的REST客户端。两者都是用Spring Boot构建的。服务器将具有。p12或。pfx证书。

ssl:
 key-store-type: PKCS12
 key-store: ${MY_DIR}/config/ssl/myCert.pfx
 key-store-password: 123456
 RestTemplate restTemplate = null;
    try {
        SSLContext sslContext = SSLContextBuilder
            .create()
            .loadTrustMaterial(ResourceUtils.getFile("classpath:config/ssl/myCert.pfx"), password.toCharArray())
            .build();

        HttpClient client = HttpClients.custom()
            .setSSLContext(sslContext)
            .build();

        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(client);

        restTemplate = new RestTemplate(requestFactory);
    } catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException | KeyManagementException ex) {
        LOGGER.error("Error getting the RestTemplate with ssl certificate", ex);
    }

共有1个答案

杨轶
2023-03-14

是否需要客户端证书完全取决于服务器配置。有些服务器需要客户端证书,有些则不需要。请参阅特定REST API的文档,以了解客户机的需求是什么。

 类似资料:
  • 问题内容: 我正在尝试创建一个与SurveyMonkey API交互的基于Java的本地客户端。 SurveyMonkey需要使用OAuth 2.0的长期访问令牌,我对此不太熟悉。 我已经搜索了几个小时,但我认为答案是否定的,但我只想确定一下: 我是否可以编写一个与SurveyMonkey交互的简单Java客户端, 而无需在某些云中设置自己的重定向服务器 ? 我觉得必须拥有自己的在线服务才能接收O

  • 我已经编写了小型Java 7客户端和服务器应用程序。我有3个自签名的X.509 RSA证书的密钥库。当客户端通过SSL连接时,服务器只发送一个证书的SSL证书消息。我对SSL/TLS有点陌生。我还研究了JSSE代码sun。安全ssl。X509KeyManagerImpl,并找到以下注释: 评论很清楚,服务器将发送单个最佳匹配证书,但我似乎不理解原因。就像在我的例子中一样,我希望服务器发送所有3个证

  • 我收到了一个新的密钥库。jks文件用于ssl连接,以替换旧的但仍在工作的。jks密钥库文件,但我收到了“意外握手消息:serve_hello”错误。我被告知要确保密钥库包含客户端证书,所以我使用keytool将其证书导出到pem文件,然后使用openssl检查目的。结果显示 证书用途:SSL客户端:否SSL客户端CA:否SSL服务器:是SSL服务器CA:否... 然而,当我应用相同的过程来检查旧的

  • 我正在尝试用ClearKeys配置shaka player,比如 如文件规定。但是,我没有有效的许可证服务器。 如果我在DRM中配置没有"服务器"对象 shaka播放器给出错误代码6012 那么,有没有可能在没有Licensne服务器的情况下,将shaka player配置为使用clearkeys玩DASH呢? 链接的Github问题-https://github.com/google/shaka

  • 是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误

  • 问题内容: 我现在正在尝试使用两种方式的SSL握手来设置Netty,其中客户端和服务器都在其中并验证证书。 这似乎没有在SslHandler中实现。有没有人这样做?我想它将在SslHandler.handshake操作中运行并委托给javax.net.ssl.SSLEngine? 任何提示/技巧/预先存在的实现? 谢谢! 回答(stackoverflow不允许我以正常方式发布它)我发现,如果在设置