java证书验证_java客户端验证https连接(忽略证书验证和证书验证两种方式)

本文介绍了在Java中如何配置SpringBoot应用以支持HTTPS,并提供了两种方式处理证书验证:忽略证书验证(不安全)和通过服务器证书验证。通过自定义TrustManager和HostnameVerifier,展示了如何在HTTP客户端进行证书跳过和验证的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先根据如下操作生成证书,配置springboot https,生成一个简单的https web服务

验证客户端pom依赖

org.springframework.boot

spring-boot-starter-web

org.apache.httpcomponents

httpclient

4.5.10

org.apache.httpcomponents

httpcore

4.4.12

httpclient和httpcore版本要对应,否则可能会出现异常

验证方式包括跳过证书验证,也即是添加信任,就像浏览器访问自签名https服务时,页面会给出提示“您的链接不是私密连接”,点击了高级,继续前往即是对该服务添加了信任,可以继续访问该网站服务,另外一种方式就是通过服务器证书来验证,下面就直接上代码

跳过证书验证方式

package com.demo.bootdemo;

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSession;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.impl.client.HttpClients;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.context.annotation.Bean;

import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;

import org.springframework.stereotype.Component;

import org.springframework.web.client.RestTemplate;

@Component

public class SkipVerifyRestTemplateBuilder {

private Logger logger = LoggerFactory.getLogger(SkipVerifyRestTemplateBuilder.class);

// 初始化ssl resttemplate

@Bean("skipVerifyRestTemplate")

public RestTemplate skipVerifyRestTemplate() {

RestTemplate rest = new RestTemplate();

SSLConnectionSocketFactory buildSSLSocketFactory = null;

try {

buildSSLSocketFactory = this.buildSSLSocketFactory();

} catch (Exception e) {

logger.error("", e);

}

HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(

HttpClients.custom().setSSLSocketFactory(buildSSLSocketFactory).build());

factory.setConnectionRequestTimeout(1000);

factory.setConnectTimeout(1000);

rest.setRequestFactory(factory);

return rest;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值