[英]Using spring Web Client hit https rest service
I have got two .cer
file from client now my goal is to hit client api using https rather than http using spring webclient. 因為我是 spring webclient 的新手,所以不知道該怎么做
我已經使用以下命令在密鑰庫中導入了both.cer
keytool -import -file "C:\Users\ankur\Download\Entrust_Root_Certification_Authority-G2.cer" -keystore "C:\Program Files\Java\jre1.8.0_40\lib\security\cacerts" -storepass "changeit"
keytool -import -file "C:\Users\ankur\Download\certificate\Entrust_Certification_Authority-L1K.cer" -keystore "C:\Program Files\Java\jre1.8.0_40\lib\security\cacerts" -storepass "changeit
我在下面編寫了代碼,以便從 webclient 以編程方式訪問 api
@Bean
public WebClient createWebClient() throws SSLException {
SslContext sslContext = SslContextBuilder
.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build();
HttpClient httpClient = HttpClient
.create()
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));
ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
return WebClient.builder()
.clientConnector(connector).build();
}
application.yml
rest:
endpoint:https://someexample.com/xyz
我不知道如何處理.cer 文件在哪里存儲這些.cer 文件我們需要包含在 spring 引導的資源文件夾中嗎?任何示例或鏈接都會有所幫助,謝謝
下面是一種方法,您可以將 ssl 證書配置為webclient
第 1 步:將所需的證書復制到resources
文件夾
我們以config/Entrust_Root_Certification_Authority-G2.cer
第 2 步:創建一個屬性以在您的配置之一 class 中配置證書的位置,如下所示
@Value("${entrust.ssl.cert.path:config/Entrust_Root_Certification_Authority-G2.cer}")
private String entrustSslCertFilePath;
第 3 步:在創建SslContext
時加載這些證書
SslContext sslContext = SslContextBuilder.forClient()
.trustManager(new ClassPathResource(entrustSslCertFilePath).getInputStream())
.build();
注意:上面提到的我已經使用了正常工作的pem
文件,請嘗試一下,如果需要,請隨時將cer
轉換為pem
文件, sslshopper將非常有助於驗證和轉換 ssl 證書
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.