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これをスタンドアロンのcoldfusionサーバーで動作させようとしています。

4

2 に答える 2

1

getAttribute() メソッドは、属性が見つからない場合に NULL 変数を返します。これが、この場合に起こっていることです。表示する前に、定義されているかどうかを確認する必要があります。

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

あなたが求めている属性を取得する方法については、私はあなたに言うことができませんでしたが、これはエラーの発生を防ぎます.

于 2012-04-05T13:42:15.173 に答える
0

Web サーバーに応じて ( を設定すると Apache がこれを行うことがわかっていますSSLOptions +StdEnvVars +ExportCertData)、PEM でエンコードされた証明書を環境変数 (つまりcgi.ssl_client_cert) として取得でき、他の情報 (DN、発行者の DN など) も取得できます。環境変数の一覧を次に示します

于 2012-04-05T22:34:58.060 に答える