以通用访问卡 (CAC) 进行认证

通用访问卡是美国的穿制服现役军人、选定预备人员、DoD 文职员工以及合格承包商人员的标准标识。持卡人可以进入大楼和受控空间,并可访问 DoD 计算机网络和系统。CAC 可以用于访问配备了各种智能卡读卡器的计算机和网络。将 CAC 插入读卡器时,设备将要求用户输入 PIN。本任务帮助您设置 AppScan® Enterprise 以允许通过 LDAP 进行 CAC 认证,以便用户无需提供用户名和密码即可登录到 AppScan® Enterprise。

开始之前

在安装和配置期间,确保在配置向导的“认证机制”屏幕中选择 LDAP 认证
注:
  1. 如果在应用 AppScan Enterprise v9.0.3.1 iFix1 之前启用了 CAC,那么在 iFix1 安装期间运行配置向导之前将其禁用。然后,可重新启用 CAC 并登录 AppScan Enterprise 以及完成以下任务。
  2. 无需执行任何用户操作即可启用利用 Microsoft Edge 进行的认证。对于 Mozilla Firefox 用户,您的组织可能有针对在浏览器中启用 CAC 的特定指示信息。

过程

  1. 使用包含 CAC 用户的 LDAP 服务器来安装 AppScan® Enterprise。
  2. 确保 AppScan Enterprise 的产品管理员同时也是 CAC 用户。
    1. 以管理员身份登录 AppScan Enterprise。
    2. 转至管理 > 用户和组,并从列表选择缺省用户
    3. 编辑用户页面上,从类型列表选择 Administrator。完成用户属性的配置,并单击保存,然后从 AppScan Enterprise 注销。
  3. 将完整认证中心链导入信任库。
    1. 创建密钥库文件或使用现有密钥库。
      注: 要生成密钥库,您可以使用密钥工具。AppScan Enterprise 包含密钥工具,下载位置为 <install-dir>\AppScan Enterprise\Liberty\jre\bin\

      使用以下命令:keytool -genkey -alias mydomain.com -keyalg RSA -keystore MyKeystore.jks
      -keysize 2048 - keypass storePassword

    2. 导入对 CAC 卡上存在的客户机证书签名的完整 CA 证书链。
      注: 您可以使用 Java iKeyman 工具来管理您的数字证书。通过 iKeyman,您可以将认证中心 (CA) 根添加到数据库,将证书从一个数据库复制到另一个数据库,从一个 CA 请求并接收数字证书,设置缺省密钥,以及更改密码。iKeyman 实用程序包含在 AppScan® Enterprise 中,存储在 <install-dir>\AppScan Enterprise\Liberty\jre\bin\ikeyman.exe 中。您可以从 IBM DeveloperWorks 下载关于 iKeyman 的更多信息:iKeyman 指南
    3. 一次添加一个 CA 证书,并为每个证书创建一个标签。如果您使用 iKeyman,也可以为每个证书创建一个标签。在您添加完整链的所有证书完成后,请关闭 iKeyman 工具。
    4. 如果将以下位置提供的 defaultTrustStore
      <install-dir>\AppScan Enterprise\Liberty\usr\servers\<ase instance name>\resources\security\cacerts
      用作 trustStore,那么重新运行配置向导将需要重新导入证书链。如果必须避免这种情况,那么在运行配置向导之前,将证书链导入 trustStore 文件,位置为:
      <install-dir>\AppScan Enterprise\Liberty\templates\servers\defaultServer\resources\security\cacerts
  4. 修改 web.xml 文件,以将基于表单的认证替换为客户机证书认证。
    注: 在修改 web.xml 文件之前对其进行备份。
    1. 停止 HCL AppScan Enterprise Server 服务。
    2. 在以下位置找到 AppScan® Enterprise 实例的 AppScanServerWeb.war 文件:<install-dir>\AppScan Enterprise\Liberty\usr\servers\ase\apps\AppScanServerWeb.war
    3. AppScanServerWeb.war 文件重命名为 AppScanServerWeb.zip,然后浏览到 WEB-INF 文件夹以检索 web.xml 文件来进行编辑。
    4. 将该文件的以下部分:

      <login-config>
      <auth-method>FORM</auth-method>
      <form-login-config>
      <form-login-page>/pages/Login.jsp</form-login-page>
      <form-error-page>/pages/Login.jsp?Retry=True</form-error-page>
      </form-login-config>
      </login-config>

      替换为

      <login-config> <auth-method>CLIENT-CERT</auth-method> </login-config>

    5. 保存文件将 AppScanServerWeb.zip 重命名为 AppScanServerWeb.war
  5. 修改 server.xml 文件以强制实施 SSL 协议,设置信任密钥库并设置 LDAP 证书映射。
    1. <install-dir>\AppScan Enterprise\Liberty\usr\servers\<ase instance name>\server.xml 找到 server.xml 文件。
    2. 确保 <featureManager> 部分包含 <feature>ssl-1.0</feature>
    3. 找到文件的 <keystore> 部分并添加以下行:<keyStore id="cacTrustKeyStoreID" password="store password" location="cacTrustKeyStore.jks" type='jks' />,其中
      • id 是唯一地标识密钥库的字符串(使用任何字符串)
      • password 是密钥库的密码(此值可以用明文或加密格式存储;使用来自 Liberty 的 securityUtility 可对密码进行加密)
      • location 是密钥库文件的绝对或相对路径(相对路径指向 <install-dir>\AppScan Enterprise\Liberty\usr\servers\<ase instance name>\resources\security\
      • type 是密钥库类型。 jks 是缺省值。
    4. 找到该文件的 <ssl> 部分,并确保其中包括 <ssl-Protocol="SSL_TLSv2">
    5. 将这些属性添加到 <ssl>
      • trustStoreRef="cacTrustKeyStoreID",其中 cacTrustKeyStoreID 是在文件 <keystore> 部分中配置的密钥库标识。
      • clientAuthenticationSupported="true"
      完成编辑后,该部分可能类似于以下示例:<ssl id="defaultSSLConfig" sslProtocol="SSL_TLSv2" keyStoreRef="defaultKeyStore" trustStoreRef="defaultKeyStore" clientAuthenticationSupported="true" />
    6. 找到文件的 <ldapRegistry> 部分,然后添加以下属性:
      • certificateMapMode="CERTIFICATE_FILTER"
      • certificateFilter="<ldapAttribute>=${<certificateAttribute>}(替换相应的 <ldapAttribute> 和 <certificateAttribute>)

        注: ldapAttribute 和 certificateAttribute 的具体值取决于 LDAP 服务器的类型和证书的属性。请根据您的环境修改此过滤器的示例。
      其中一个 certificateFilter 可为:

      certificateFilter="uid=${SubjectCN}"

      LDAP 记录中的“uid”属性必须匹配证书的 SubjectCN 属性。如果证书的“SubjectCN”是“admin”,那么 LDAP 目录中的用户名 (uid) 也必须是“admin”。

      以下示例显示了使用 IBM® Tivoli® Directory Server 的 LDAP 注册表配置。LDAP 服务器中的 uid 属性匹配 CAC 卡中存储的证书内的 SubjectCN 属性:

      <ldapRegistry ldapType="IBM Tivoli Directory Server" host="<<hostname>>" port="<<Port no>>" sslEnabled="false" baseDN="o=IBM,c=US "certificateMapMode="CERTIFICATE_FILTER" certificateFilter="uid=${SubjectCN}"> <activedFilters userFilter="(objectclass=Person)" userIdMap="*:uid"/> </ldapRegistry>
  6. 重新启动 HCL AppScan Enterprise Server 服务。
  7. 以管理员身份通过 CAC 认证登录回到 AppScan Enterprise。
  8. 转至管理 > 用户和组,并将缺省用户的许可权更改回到希望角色具有的任何许可权。(通常,可能希望缺省用户成为管理员,但也可能是标准用户)。
  9. 在配置 AppScan Enterprise 之后,除了使用数据库查询之外,没有其他方式来为 CAC 用户创建管理员帐户。如果未完成步骤 2,遵循以下步骤:
    1. 通过 CAC 卡登录 AppScan Enterprise,并检查许可证以查看您是否是管理员。
    2. 如果您不是管理员,对 AppScan Enterprise SQL Server 数据库运行以下查询:select *from UserInfo
    3. 找到查询结果中的 CAC 用户而非其 UserId。
    4. 然后运行此查询:Update UserInfo set UserTypeId=5, LicenseType=3, EffectiveType=32768,其中 UserId 是您的 CAC 管理用户的标识。
    5. 从 AppScan Enterprise 注销,然后再次登录。您现在应是管理员。

结果

使用通用访问卡的用户无需提供用户名和密码即可登录到 AppScan® Enterprise。