java.net
在其API中有一个简单的getServerCertificates
(示例如下)。我在reactor-netty中寻找类似的操作,如果没有,请在spring-boot/webflux/HttpClient的任何其他React式API中寻找。
这个操作(客户端读证书)在reactor-netty中似乎不可能。是吗?如果不是,在另一个spring-boot组件中有替代方法来做这个吗?
package com.example.readCertificate.service;
import java.net.URL;
import java.securiiity.cert.Certificate;
import javax.net.ssl.HttpsURLConnection;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class ShowCert {
private Logger logger = LogManager.getLogger();
public void showCert(String url) {
try {
URL destinationURL = new URL(url);
HttpsURLConnection connection = (HttpsURLConnection) destinationURL.openConnection();
connection.connect();
Certificate[] certificates = connection.getServerCertificates();
for (Certificate certificate : certificates) {
logger.info("certificate is:" + certificate);
}
} catch (Exception e) {
logger.error(e);
}
}
}
1条答案
按热度按时间q3qa4bjr1#
在Spring WebFlux的WebClient中,我们通常使用netty作为后端。我们提供了一个bean
ReactorClientHttpConnector
,在其中我们创建了netty http-client。为了处理SSL,netty使用通道管道中的处理程序。
在这里,我将回调事件
doOnConnected()
并访问SSL处理程序和SSLSession
。SSLSession
提供了方法getPeerCertificates(), getLocalCertificates()
,因此我们可以在这里访问证书。并创建您的WebClient:
然后,在使用此httpsClientbean进行https调用时,您应该会在控制台中看到结果