package com.dy.pipIrrSell.config; import com.dy.pipIrrSell.wechatpay.PayInfo; import okhttp3.OkHttpClient; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.OkHttp3ClientHttpRequestFactory; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; /** * @author ZhuBaoMin * @date 2024-03-06 11:44 * @LastEditTime 2024-03-06 11:44 * @Description */ @Configuration public class RestTemplateWechatCertConfig { String mchid = PayInfo.mchid; @Bean @ConfigurationProperties(prefix = "org.liurb.core.rest-template.config.connection") public ClientHttpRequestFactory wechatHttpRequestFactory() throws Exception { KeyStore keyStore = KeyStore.getInstance("PKCS12"); //InputStream cp = this.getClass().getResourceAsStream("apiclient_cert.p12"); FileInputStream instream = new FileInputStream(new File("C:\\webchat\\apiclient_cert.p12")); keyStore.load(instream, mchid.toCharArray()); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyManagerFactory.init(keyStore, mchid.toCharArray()); SSLContext context = SSLContext.getInstance("TLS"); context.init(keyManagerFactory.getKeyManagers(), null, null); OkHttpClient okHttpClient = new OkHttpClient.Builder() .sslSocketFactory(context.getSocketFactory(), getDefaultX509TrustManager()) .build(); return new OkHttp3ClientHttpRequestFactory(okHttpClient); } private static X509TrustManager getDefaultX509TrustManager() throws Exception { TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); factory.init((KeyStore) null); return (X509TrustManager) factory.getTrustManagers()[0]; } }