【发布时间】:2018-11-22 06:42:43
【问题描述】:
我正在将商家与我们的应用程序集成。商家提供给我们JKS、KEY、PEM和P12文件以及证书密码。
在开发服务器中,集成使用 JKS 证书和使用 HttpsURLConnection 实现的证书密码。
SSLContext sc = SSLContext.getInstance("TLSv1.2");
KeyManagerFactory kmf;
KeyStore ks;
char[] passphrase = keystore_password.toCharArray();
kmf = KeyManagerFactory.getInstance("SunX509");
ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(keystore_path), passphrase);
kmf.init(ks, passphrase);
sc.init(kmf.getKeyManagers(), trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HostnameVerifier hv = new HostnameVerifier() {
@Override
public boolean verify(String urlHostName, SSLSession session) {
if (!urlHostName.equalsIgnoreCase(session.getPeerHost())) {
logger.warn("Warning: URL host ' " + urlHostName + " ' is different to SSLSession host ' "
+ urlHostName + " '");
}
return true;
}
};
在上层环境中,Tomcat处于DMZ区域,只能通过Nginx与外界交互。
tomcat 请求 Nginx 服务器在一个 header 中带有实际的 URL,该 header 被 Nginx 解析并将请求转发到 URL 并将响应呈现给 tomcat。
问题
如何通过 Nginx 将带有凭证的请求转发给商家?
【问题讨论】:
标签: java tomcat nginx jks httpsurlconnection