java - 强制 ReactorClientHttpConnector 将 p12 证书与 httpClient 一起使用
问题描述
我使用 spring 云网关,其中 ReactorClientHttpConnector 用于发出 http 请求。http 请求的目的地需要客户端证书。我尝试使用 PostProcessor 设置 HttpClient bean,但没有帮助
override fun postProcessBeforeInitialization(bean: Any, beanName: String): Any? {
if (bean is HttpClient) {
val password = System.getProperty("javax.net.ssl.keyStorePassword")
val appKeyStore: KeyStore = KeyStore.getInstance("PKCS12")
appKeyStore.load(FileInputStream("/etc/secrets/cert.p12"), password.toCharArray())
val keyManagerFactory: KeyManagerFactory = KeyManagerFactory.getInstance("SunX509")
keyManagerFactory.init(appKeyStore, password.toCharArray())
val sslContextBuilder = SslContextBuilder.forClient()
.keyManager(keyManagerFactory)
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build();
return bean.secure { it.sslContext(sslContextBuilder) }
}
return super.postProcessBeforeInitialization(bean, beanName)
}
有没有办法配置 HttpClient,所以所有请求都将使用我的 p12 证书进行?
解决方案
推荐阅读
- android - ADB Root 授予应用程序或包的 Root 权限
- python - Beautiful Soup 类名有多个空格,find_all 给出 []
- amazon-web-services - 在 EC2 上运行应用程序 - 使用 RESTful API 触发它 - 自动缩放
- c - 包含glad.h时的分段错误
- spring - 在一个类上声明@configuration 会使其成为一个spring bean吗?
- entity-framework - 我应该有多少个 DbContext 类?
- lua - 使用纯 Lua 脚本对齐的文本自动换行
- c++ - 将 lambda 一般存储在 constexpr 结构中
- java - Java Timer Countdown 从某个时间开始
- flask - 如何使用 GET/POST 将 GET 发送到烧瓶