【问题标题】:Tomcat SSL_CLIENT_S_DN Request HeaderTomcat SSL_CLIENT_S_DN 请求标头
【发布时间】:2020-06-28 16:29:06
【问题描述】:

我有一个在 Tomcat 实例 (9.0.31) 中运行的 webapp,我需要来自 HttpServletRequest 的特定 HTTPS 标头请求。但是,HttpServletRequest 似乎没有特定请求,例如 SSL_CLIENT_S_DN

我在 Tomcat server.xml 文件中启用了 clientAuth="true"

应该注意的是,我通过 Apache HTTPD 代理请求,因此无法将以下内容添加到 /etc/httpd/conf.d/ssl.conf。

RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"

【问题讨论】:

    标签: tomcat tomcat9


    【解决方案1】:

    经过大量研究,我不清楚 HeaderRequest SSL_CLIENT_S_DN 是否存在于 Tomcat 中。

    为了澄清,我最初尝试了以下

      HttpServletRequest request = <HttpServletRequest Object>
      String certDN = request.getHeader("SSL_CLIENT_S_DN");
    

    由于 SSL_CLIENT_S_DN 不存在,这将导致空字符串。

    相反,我不得不调用 getAttribute() 来检索证书信息。

      HttpServletRequest request = <HttpServletRequest Object>
      X509Certificate certs[] = (X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate")
      for (X509Certificate cert : certs)
      {
          sys.stdout.print("Issuer DN [" + cert.getIssuerDN() + "]");
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 2016-03-15
      • 2016-03-18
      • 2017-10-07
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      相关资源
      最近更新 更多