相关疑难解决方法(0)

收到致命警报:handshake_failure通过SSLHandshakeException

我有授权SSL连接的问题.我创建了Struts Action,它通过Client Authorized SSL证书连接到外部服务器.在我的行动中我试图将一些数据发送到银行服务器但没有任何运气,因为我从服务器得到以下错误的结果:

error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Run Code Online (Sandbox Code Playgroud)

我的Action类从我的Action类发送数据到服务器

//Getting external IP from host
    URL whatismyip = new URL("http://automation.whatismyip.com/n09230945.asp");
    BufferedReader inIP = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

    String IPStr = inIP.readLine(); //IP as a String

    Merchant merchant;

    System.out.println("amount: " + amount + ", currency: " + currency + ", clientIp: " + IPStr + ", description: " + description);

    try {

        merchant = new Merchant(context.getRealPath("/") + "merchant.properties");

    } catch (ConfigurationException e) {

        Logger.getLogger(HomeAction.class.getName()).log(Level.INFO, "message", e);
        System.err.println("error: " + e.getMessage());
        return …
Run Code Online (Sandbox Code Playgroud)

java ssl ssl-certificate sslhandshakeexception

118
推荐指数
8
解决办法
48万
查看次数

握手消息的大小(X)超过允许的最大大小(32768):spring boot RestTemplate

我在使用带有相互身份验证的 spring Resttemplate 发出发布请求时收到上述错误。

@Bean
    public RestTemplate restTemplate() throws UnrecoverableKeyException,
            NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException, CertificateException {
        KeyStore clientStore = KeyStore.getInstance("PKCS12");
        clientStore.load(new FileInputStream(pfxFile), pfxPass.toCharArray());

        SSLContextBuilder sslContextBuilder = new SSLContextBuilder();
        sslContextBuilder.useProtocol("TLS");
        sslContextBuilder.loadKeyMaterial(clientStore, pfxPass.toCharArray());
        sslContextBuilder.loadTrustMaterial(new TrustSelfSignedStrategy());

        SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContextBuilder.build());
        CloseableHttpClient httpClient = HttpClients.custom()
                .setSSLSocketFactory(sslConnectionSocketFactory)
                .build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
        requestFactory.setConnectTimeout(Integer.parseInt(timeOut)); // 10 seconds
        requestFactory.setReadTimeout(Integer.parseInt(timeOut)); // 10 seconds
        RestTemplate restTemplate = new RestTemplate(requestFactory);
        restTemplate.setInterceptors( Collections.singletonList(new RequestResponseLoggingInterceptor()));

        return restTemplate;
    }
Run Code Online (Sandbox Code Playgroud)

使用resttemplate的代码如下

public ResponseEntity<OauthResponse> getOauthToken(String clientScope,
                                                       String BasicAuthUser,String BasicAuthPass){


        String accessToken = Base64.getEncoder().encodeToString((BasicAuthUser+":"+BasicAuthPass).getBytes()); …
Run Code Online (Sandbox Code Playgroud)

java ssl rest-client spring-boot mutual-authentication

5
推荐指数
1
解决办法
6898
查看次数