1

所以我找到了一些代码

<cfset x509 = GetPageContext().getRequest().getAttribute("javax.servlet.request.X509Certificate") />


<cfoutput>not before = #x509[1].getNotBefore()#</cfoutput><br/>
<cfoutput>not after = #x509[1].getNotAfter()#<br></cfoutput>
<cfoutput>#ToBase64(x509[1].getEncoded())#<br></cfoutput>
<cfoutput>#x509[1].getIssuerDN()#<br></cfoutput>
<cfoutput>#x509[1].getIssuerX500Principal()#<br></cfoutput>

我想要这段代码做的是显示来自 CAC 的信息,而不是我得到一个错误Variable X509 is undefined......

编辑

似乎可以使用另一种解决方案,CGI.CERT_SUBJECT但是我不确定如何使该变量成为空字符串以外的任何内容。FWIW 我试图让它在独立的冷融合服务器上工作。

4

2 回答 2

1

getAttribute() 方法在找不到属性时返回一个 NULL 变量,这就是在这种情况下发生的情况。您必须先查看它是否已定义,然后才能显示它。

<cfif StructKeyExists( variables, "x509" )>
     { Code }
</cfif>

关于如何获得你所追求的属性,我无法告诉你,但这将防止错误发生。

于 2012-04-05T13:42:15.173 回答
0

根据您的 Web 服务器(如果您设置 Apache,我知道 Apache 会这样做SSLOptions +StdEnvVars +ExportCertData),您可以获得 PEM 编码的证书作为环境变量(即,cgi.ssl_client_cert),您还可以获得其他信息(DN、颁发者的 DN 等)。这是环境变量的列表。

于 2012-04-05T22:34:58.060 回答