SSL 中的证书到期监视

SSL 证书对服务器维护其与其他服务器之间传递的数据的安全性很重要。 使用 SSL 证书时,有责任将这些证书保持最新。 证书到期监视管理任务是一项预定任务,会在安全性配置中的所有密钥库之间循环进行,并对到期的任何证书、处于到期阈值内的证书以及处于预先通知时间段的证书发出报告。

重要的:证书过期监视器涵盖服务器配置下的密钥库。 客户端密钥库,例如(profile)/etc/key.p12未受到监控。
配置证书监视器
证书监视器配置设置可以在管理控制台上通过选择安全> SSL 证书和密钥管理>管理证书到期。 。 在管理证书到期面板上,您可以执行下列功能。
  • 使用启用检查复选框来启用或禁用证书监视器检查。 缺省情况下,已启用证书监视器检查。
  • 在标签为到期替换阈值的框中设置到期阈值。 到期替换阈值是可以替换证书的证书到期之前的天数,并且具有缺省值 60 天。
  • 在标签为证书预先通知阈值的框中设置预先通知阈值。 证书预先通知阈值是到期阈值之前的天数(此时,证书监视器报告可以开始替换证书的日期)。
  • 如果选中了自动替换到期的自签名证书和链式证书框,那么会将到期的证书或到期阈值中的证书替换为新证书。 缺省情况下,已选中此框。 如果未选中此选项,那么证书到期监视器只报告某个证书已到期或在到期阈值内,但不会替换证书。
  • 通过选中替换之后删除到期的证书和签署者框,在替换证书之后将其删除。 缺省情况下,已选中此框。
  • 可以在到期检查字段中设置按其运行证书到期监视器的调度。 缺省情况下,会将监视器设置为每 4 周运行一次,运行时间为星期日 9:30 PM。
  • 可以在到期检查通知字段中设置接收证书监视器报告的方式。 缺省情况下,会将报告写入系统输出日志。
以下 security.xml 配置对象指定监视任务何时启动,确定证书到期阈值,并且指示是通过使用“简单电子邮件传输协议”(SMTP) 以电子邮件形式还是以消息日志形式通知您。 预先通知日志在定制属性中进行设置。
<wsCertificateExpirationMonitor xmi:id="WSCertificateExpirationMonitor_1"
name="Certificate Expiration Monitor" daysBeforeNotification="30"
isEnabled="true" autoReplace="true" deleteOld="true"
wsNotification="WSNotification_1" wsSchedule="WSSchedule_2"
nextStartDate="1134358204849"/>
预先通知时间段由 security.xml 文件中的某个定制属性进行设置。
<properties xmi:id="Property_1422758742456"
name="com.ibm.ws.security.expirationMonitorNotificationPeriod" value="90"/>
时间表对象的以下样本将frequency 属性显示为证书监视器每次运行间隔的天数。
<wsSchedules xmi:id="WSSchedule_2" name="ExpirationMonitorSchedule" 
frequency="30" dayOfWeek="1" hour="21" minute="30"/>

dayOfWeek 属性会将时间表调整为在指定的星期几运行。无论 frequency 属性设置为 30 天还是 31 天,它始终都会在同一天运行。 hour 和 minute 属性(采用 24 小时制)确定在指定的那天中何时启动到期监视器。

通知对象的以下样本代码显示了在到期监视器运行之后会通知您的通知配置。
<>wsNotifications xmi:id="WSNotification_1" name="MessageLog" logToSystemOut="true" emailList=""/

可以选择通过消息日志和/或使用 SMTP 服务器发送的电子邮件来提供到期监视器通知。 当配置电子邮件选项时,请使用 user@domain@smtpserver 格式。 如果您未指定 SMTP 服务器, WebSphere® Application Server默认为与电子邮件地址相同的域。 例如,如果您配置joeuser@ibm.com, WebSphere Application Server尝试调用smtp-server.ibm.com。 要使用脚本编制指定多个电子邮件地址,必须在各条目之间添加一个竖线字符 (|)。 如果指定了 logToSystemOut 属性,那么会将到期监视结果发送至该环境的消息日志(通常为 SystemOut.log 文件)。

可以通过使用证书到期监视器来执行下列功能
  1. 清除 NodeDefaultDeletedStoreDmgrDefaultDeletedStore。 此操作以静默方式执行,不会报告证书已删除。
  2. 检查根密钥库 DmgrDefaultRootStoreNodeDefaultRootStore 以及 DmgrRSATokenRootStoreNodeRSATokenRootStore。 如果任何根证书到期,且处于阈值时间段或预先通知时间段内,那么在报告中会指出该证书。
  3. 任何已过期或在阈值期限内的根证书都将使用与创建原始证书相同的信息重新创建。 来自原始根证书的任何签署者证书都会替换为来自新根证书的签署者证书。
  4. 如果替换了根证书,那么会对所有密钥库进行检查,以了解是否存在通过原始根证书签署的任何链式证书。 如果存在,那么会更新链式证书(使用新根证书重新创建)。 来自原始证书的任何签署者证书都会替换为来自重新创建的证书的签署者证书。
  5. 在处理所有根密钥库之后,会检查这些密钥库的其余部分,以查找到期的证书、处于到期阈值内的证书或处于预先通知时间段的证书。 会在报告中指出所有处于其中任一类别的证书。
  6. 如果存在任何已过期的证书或处于过期阈值期限内的证书,并且这些证书是自签名证书或由以下机构创建的链式证书: WebSphere,然后它们就被替换了。 如果链式证书根不在根密钥库中,那么会将它重新创建为缺省根证书。 来自原始证书的任何签署者证书都会替换为来自新证书的签署者证书。
  7. 根据配置设置,会生成并返回报告,将其写入日志文件,或将其以邮件形式发出。
所替换的证书的类型

到期监视器会替换自签名证书以及由 DmgrDefaultRootStoreNodeDefaultRootStore 中根证书进行签署的链式个人证书。 会使用创建原始自签名证书时使用的所有信息来更新自签名证书。 并且,通过使用对原始证书进行签名时使用的根证书来更新链式证书。 由认证中心 (CA) 创建的证书不能由证书监视器进行替换,需要由管理员进行替换。

签署者证书是个人证书的公共部件。 因此,它们不是自行创建,而是从个人证书中进行截取。 如果证书监视器替换了个人证书,那么它会检查所有密钥库,以查看是否存在任何从到期的个人证书抽取的签署者证书,并将其替换为从新创建的个人证书抽取的签署者证书。 如果从证书文件将签署者证书添加到密钥库或者使用“从端口检索”选项添加了签署者证书,那么很可能替换该签署者证书。 如果该签署者证书已到期或者在到期阈值中,那么会通知用户不替换该证书。 请将该证书删除并替换为有效证书。

证书到期报告

当证书到期监视器运行时,会生成一个报告,以报告所执行的操作。 缺省情况下,此报告会写入 SystemOut.log。 用户可以进行配置,以通过电子邮件接收证书监视器报告。 如果某个用户从 wsadmin AdminTask startCertificateExpMonitor 运行证书到期监视器,那么会将报告返回给该用户以及证书到期通知设置所设置的要将报告发送至的位置。

如果证书监视器运行并且没有到期的证书要报告输出,那么它会返回一条参考消息,用来指示已检查证书并且未找到到期问题。 例如
**** 主题:到期监视器 ****;

Hostname: myHost
Profile UUID:AppSrv01-BASE-8da8e11e-70c6-451f-862b-8a08e408110b
Process type: UnManagedProcess
Checking for expired certificate and certificates in the 60 days threshold period.
CWPKI0735I: 已对所有证书进行搜索且未找到任何到期问题。

证书到期监视器会以各个小节来报告证书的相关信息。 预先通知小节、到期的证书小节、被替换的证书小节和无法替换的证书小节。 报告中的证书将通过它们是个人证书还是签署者证书、它们的别名以及证书所在的密钥库进行识别。

预先通知小节会列示预先通知阈值中的所有证书。 它充当警告时间段,以告诉用户将要替换证书的日期(如果证书到期监视器在该日期或该日期之后运行)。 此小节还提供关于用户可能需要关注即将进行证书替换的原因的警告。 如果没有证书在预先通知时间段中,那么此小节不是报告的一部分。 例如
*** 位于 90 天证书到期阈值内的证书(可在 90 天内进行替换) ***;

CWPKI0714I: 证书到期监视器最近已运行并发现将在后续 90 天内替换某些证书,这些证书列在相关联消息中。 此替换基于配置的策略
在到期前 60 天自动替换即将到期的自签名证书。 此通知告知您在自动替换证书时可能会产生问题。

CWPKI0715I: 在某些情况下,自动替换证书可能会导致在非受管节点上运行的 Web 服务器插件停止。 在这种情况下,插件将无法通过 HTTPS 联系应用服务器
因为它将使用已被自动替换过程替换的证书的签名者。  为了防止可能发生的严重中断,您应在计划的更换日期之前采取行动,更换即将过期的证书并更新插件 kdb
使用新的签名者。

CWPKI0719I: “testKeyStore((cell):myHostNode01Cell:(node):myHostNode01)”密钥库中的 testcert1 个人证书将在 2015 年 5 月 10 日到期,并且可以在阈值日期 2015 年 3 月 11 日之后进行替换。
到期的证书小节会识别到期的证书或在到期阈值内的证书。 如果证书在到期阈值内,那么它会告诉您证书到期的时间。 例如
*** 已到期或者在到期阈值内的证书 ***;

CWPKI0642I: 密钥库“NodeDefaultTrustStore((cell):myHostNode01Cell:(node):myHostNode01)”中的签署者证书别名“oldcert”将在 2015 年 2 月 19 日到期。

CWPKI0680I: 密钥库“testKeyStore((cell):myHostNode01Cell:(node):myHostNode01)”中的个人证书别名“selfcert”已在 2014 年 11 月 9 日到期。

CWPKI0643I: 密钥库“testKeyStore((cell):myHostNode01Cell:(node):myHostNode01)”中的个人证书别名“testcert”将在 2015 年 2 月 19 日到期。
被替换的证书小节会列示已替换的所有证书。 可以替换使用服务器根密钥库中的根证书签署的自签名个人证书和链式个人证书。 签署者证书可以由从已替换的个人证书中截取的签署者证书进行替换。
*** 已到期或者由于超出到期阈值而被替换的证书 ***;

CWPKI0645I: 已替换密钥库“testKeyStore((cell):myHostNode01Cell:(node):myHostNode01)”中的个人证书别名“selfcert”。

CWPKI0644I: 已替换密钥库“NodeDefaultTrustStore((cell):myHostNode01Cell:(node):myHostNode01)”中的签署者证书别名“selfcert”。

CWPKI0645I: 已替换密钥库“testKeyStore((cell):myHostNode01Cell:(node):myHostNode01)”中的个人证书别名“testcert”。
无法替换的证书小节会列示无法替换的所有已到期或在到期阈值内的证书。 如果某个个人证书位于只读密钥库中或者证书监视器没有创建新个人证书所需的信息,那么将不替换该个人证书。 如果该证书由某个不在服务器根密钥库中的证书进行签署,那么无法替换该证书,它可能是一个 CA 证书。 如果签署者证书源自的个人证书不存在于配置中,那么无法替换该签署者证书。 例如
*** 服务器无法替换的已到期证书或者超出到期阈值的证书 ***;

CWPKI0642I: 密钥库“NodeDefaultTrustStore((cell):myHostNode01Cell:(node):myHostNode01)”中的签署者证书别名“oldcert”将在 2015 年 2 月 19 日到期。
清除已删除的密钥库文件

到期监视器会清除已删除的证书密钥库文件。 已删除的密钥库文件 NodeDefaultDeletedStore 是用来放置从其他密钥库所删除证书的副本的位置,以免用户需要将证书复原。 需要不时清除该文件,以便在证书监视器运行时,清除已删除的密钥库文件。 由于 PKCS12 密钥库的性质,密钥库中必须至少有一个条目。 不会针对从已删除的密钥库文件中删除的证书进行报告。

笔记:当启用以下配置选项时,到期监视器替换证书时,运行时间会受到动态影响。
笔记:以下配置选项仅在启用全局安全时才会生效。

安全> SSL 证书和密钥管理。 在配置设置中,选中当 SSL 配置发生更改时动态更新运行时

如果已启用,那么替换的任何证书都会使客户机 SSL 运行时立即使用新证书,这又会清除 SSL 和密钥库高速缓存并使利用 SSLServerSockets(分布式系统上 RMI/IIOP 以及 Admin SOAP)的一些端口重新启动。 重新启动端口会断开现有连接。 在端口重新启动完成之后,可以重新建立这些连接。 使用通道框架(z/OS 上的 HTTP、BUS 或 RMI/IIOP)的端点会使现有连接不受影响,但是仍然将新证书用于新连接。

当禁用了动态更改属性时,在新证书生效之前,管理员需要在每个节点具有已同步配置之后重新在整个单元中执行所有过程。