【问题标题】:How to use trusted certificate with nginx and tomcat?如何在 nginx 和 tomcat 中使用受信任的证书?
【发布时间】: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


    【解决方案1】:

    你不能“转发”它。要根据标头的内容处理 HTTP 请求,nginx 必须解密传入的数据并重新加密传出的修改数据。由于 SSL/TLS 等安全协议的全部意义在于授权端点以外的任何人都无法查看或更改数据,因此 nginx 必须自行终止客户端 SSL/TLS 会话并创建单独的服务器端 SSL/TLS 会话转发 HTTP 级别的数据。

    因此,要向“商家”服务器进行身份验证,必须为 nginx 配置客户端证书,包括链证书(如果适用)和匹配的私钥,请参阅http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate 等。

    (如果您还没有它们,您可以使用 keytool -importkeystore 将 JKS 转换为 PKCS12 并使用 openssl pkcs12 将 PKCS12 转换为 PEM - 这里和其他堆栈(如超级用户和服务器故障)上都有许多现有的 Q。 )

    从(真实)客户端到 nginx 的会话是否使用相同的证书、不同的证书进行身份验证,或者根本没有使用证书进行身份验证,取决于 nginx 的配置。

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 2016-06-01
      • 2014-12-20
      相关资源
      最近更新 更多