跳转到内容
技术文章
作者简介照片Johannes Goerlich

commancyptolib:证书撤销列表验证

CommonCryptoLib(CCL)执行X.509证书的验证。

证书验证包括三个基本步骤:

  1. 验证证书的完整性(构造链条和验证签名)
  2. 验证有效性,(检查有效性日期,策略和密钥使用)和
  3. 验证撤销状态(查阅撤销权限)。

对于第三步,CCL附带了一个可选的、用于证书吊销列表(CRL)验证的内置功能,可以分别为TLS、SNC或SSF启用该功能。

常见用例是验证用于带有SAP GUI和SAP安全登录客户端3.0(SLC)的SSO的X.509客户端证书。

还请阅读本系列的其他博客:

CommonCryptoLib:TLS协议版本和密码套件
commancyptolib:SNC协议版本和密码套件
CommonCryptoLib:管理PSE文件和SSO凭据(cred_v2)
commancyptolib:证书撤销列表验证

更新:

证书吊销列表(CRL)

虽然在大多数情况下会检查证书的完整性和有效性,但吊销状态通常被认为是可选的步骤。在许多情况下,它是不启用的。

让我们看看一个例子:

一个x.509客户端证书 - 每一个证书都有一定生命周期。即使不再需要,有效日期可能会保持证书有效。要确保不再使用已损害的证书,可以通过其发布CA来撤销证书。想象一下,用户在验证证书到期之前离开公司。如果她仍然拥有证书,她仍然能够用它来进行身份验证目的。要解决此问题,必须撤销X.509客户端证书。结果A.服务器除了检查证书的完整性和有效性外,还必须检查证书的吊销状态。

基本上有两种方法可以做到这一点:

  1. 查询由发布CA维护的CRL。
  2. 使用OCSP (online Certificate status Protocol)在线检查证书状态。

请注意:在撰写本文时,CommonCryptoLib仅支持CRL检查。换句话说,由于不支持在线证书状态协议(OCSP),我们将专注于CRL。

我们示例中的证书将由颁发CA吊销。所有吊销的证书将添加到颁发CA的CRL。CRL将由颁发CA证书的属性中列出的CRL分发点发布。通过所有这些,服务器能够通过查询以前下载(缓存)的CRL来验证证书是否被吊销。

通常,CRL检查是涉及服务器证书的有争议讨论的主题,特别是对于TLS。据说,它具有巨大的性能影响(取决于CRL的大小)及其错误容易出现。这就是浏览器不支持此方法的原因。它们提供大部分检查Crlsets和OCSP,软盘。缓解措施越来越普遍,是发出非常短的生活(14天或更短的)服务器证书。

在CRL检查客户端证书时,情况有点不同:

由于智能卡上的X.509证书通常最长有效期为3年,并且由于智能卡的重新键入是一项手动耗时的工作,因此我们没有看到任何其他解决方案可以验证CRL。因此,强烈建议至少在使用长寿命客户端证书进行身份验证时启用CRL检查。这方面的一个常见用例是基于X.509客户端证书的带SSO的SNC,用于SAP GUI和SAP安全登录客户端3.0(SLC)。

请注意:CCL的CRL检查不区分服务器证书和客户端证书。一旦激活检查,将验证每个证书的CRL–无论是握手期间使用的服务器证书还是稍后用于身份验证的客户端证书,例如,如果客户端基于SAP JCo,SNC也可能是这种情况。

如何配置CRL验证

检索并缓存CRL

在启用撤销检查之前,必须检索和缓存CRL。这可以用命令完成sapgenpse get_crl get -u -f

请注意:这是一个单点故障!如果CRL超过5天没有更新,所有证书将被视为无效。请确保监控CRL缓存的成功更新!

CRL通常是公开的。这意味着在大多数情况下,它们必须从互联网上下载。内部PKI可能会出现偏差。

在一个高度安全的环境中,系统可能无法直接访问互联网,如果有的话。为所有必须下载crl的系统维护防火墙设置可能很麻烦。例如,谷歌、Amazon等颁发的ca可以通过使用大量IP地址的分发点场提供CRL。解决这个问题的一种方法是使用一种代理,从它们的源头检索crl,并将它们发布到内部系统。由于crl是由签发的CA签署的,它们被认为是安全的,不会被篡改。

指定CRL缓存目录

CCL使用的CRL缓存的位置由CCL参数定义ccl/pkix/cache\u目录.

请注意:对于具有多个应用服务器的ABAP系统,可以考虑集中存储CRL缓存。在这种情况下,必须确保更新过程不会仅安排在单个应用程序服务器上(这将是一个单点故障)。不使用cronjobs,例如,可以通过将命令安排为batchjob(SM37)来实现,同时确保它不绑定到特定的应用程序服务器或包含有限应用程序服务器集的batchjob服务器组。

配置pkix配置文件

CCL通常根据使用情况提供启用CRL检查的功能。它可以单独为TLS、SNC和SSF启用。在某些情况下,可能不希望为每个CA启用它,除此之外,许多根CA以及一些发出CA根本不提供CRL。

对于不同的ca,有不同的方法来启用/禁用CRL检查。下面介绍如何在一般情况下启用CRL检查,并为个别ca禁用它。

请注意:这种方法也可以根据您的情景或风险偏好进行反转。

为所有CA启用CRL检查

要确保对所有ca启用CRL检查,必须配置一组配置文件参数—称为默认的pkix配置文件—:

ccl / pkix / profile / default / accept_no_basic_constraints =否
ccl/pkix/profile/default/revocation\u check=CRL
ccl/pkix/profile/default/certificate policies=noCheck

根据需要禁用CRL检查已定义的发布CA

如果在握手期间,如果相关的CA没有提供CRL,则在握手期间将失败之前创建的默认pkix配置文件。对于那些,我们必须创建其他自定义pkix配置文件来禁用CRL检查。发行者的CCL参数用作过滤器,以指定将应用该集合的CAS。该值被应用为“以”模式“开始。

例如,对于“系统PKI”发出的证书,我们可以创建:

ccl / pkix分部/资料/ 01 _systempki /发行人= CN = root_
ccl/pkix/profile/01\u系统PKI/撤销\u检查=否
ccl/pkix/profile/01_systemPKI/certificate_policies=noCheck

或者为“SAPSUPPORT根CA”和“SAPSUPPORT用户Sub CA”颁发证书,由SAP Active Global Support在远程支持会话期间使用(输入“R/3 with SNC”):

ccl/pkix/profile/02_SAPSUPPORT/issuer=CN=SAPSUPPORT
ccl / pkix / profile / 02_sapsupport / repotocate_check =否
ccl / pkix / profile / 02_sapsupport / certificate_policies = nocheck

请注意:根据您的环境需要添加更多的自定义pkix概要文件!

基于发布CA和OID的信任证书

PKIX配置文件也可用于限制某个发布CA发布的哪些终端实体证书(也称为叶证明)应受到信任。如果发布CA发布具有不同使用类型的各种证书 - 由证书oid表示 - 但并非所有的证书都应适用于客户端身份验证。

这可以通过添加一个过滤器来实现,该过滤器定义由签发CA签发的最终实体证书的受信任oid, pkix配置文件打算通过添加CCL参数来实现ccl/pkix/profile//certificate\u Policys=[:]到相关集合。

请注意:每个不匹配oid列表的证书将不再受信任。

对SNC的证书撤销检查

概述CRL检查CRL Profile参数ccl/snc/pkix\u撤销\u检查=1必须设置。

证书撤销检查TLS

概述CRL检查CRL Profile参数ccl / ssl /分部pkix_revocation_check = 1必须设置。

请注意:如开头所述,CRL检查还影响用于握手的服务器证书。如果系统使用TLS启动传出连接,则会检查CRL以获取通信伙伴的服务器证书。

证书撤销检查SSF

概述CRL检查CRL Profile参数ccl/ssf/pkix\u撤销\u检查=1必须设置。


< - Previous.

分配标签

      2评论
      你一定是登录评论或回复帖子。
      作者的个人资料照片Daniel Huber
      丹尼尔·沃特

      亲爱的约翰内斯,

      我真的很喜欢你的文章,它增加了一些需要注意的信息2338952 - CCL 8.5:配置简介参数!

      我们对SNC和SSL / TLS的CRL非常消耗,但今天没有简单的“开箱即用”解决方案。需要客户来设置复杂的自动化以处理有效的CRL(甚至阻止基于CRL的系统中断!)。也许Delta +基础CRL也是重要的话。

      值得注意的是,如果CRL检查未返回成功,则每次加密连接都会失败。

      意味着:如果CRL过时(增量或基本),加密通信将无法立即工作-幸运的是,ccl参数可以动态切换。

      我们非常希望看到OCSP在CCL或任何智能CRL自动化的未来。

      最好的问候,

      丹尼尔

      作者简介照片Johannes Goerlich
      约翰内斯Goerlich
      博客作者

      谢谢,丹尼尔·沃特!

      事实上,更新CRL和监控的自动化是一件至关重要的事情。CRL更新失败将立即影响可用性。

      我们保存了例如紧急情况的pkix配置文件。有了这个,如果出现技术问题,我们可以关闭受影响的CA的CRL检查。要创建此类紧急PKIX配置文件,必须知道pkix配置文件以字母数字顺序处理,并持续默认的pkix配置文件。

      紧急的PKIX个人资料可能看起来像

      ccl / pkix /资料/ 00 _emergency分部/发行人= CN =假
      ccl/pkix/profile/00\紧急情况/撤销\检查=否
      ccl / pkix / profile / 00_emergency / certificate_policies = nocheck

      要切换CRL检查,只需更换CN =虚拟“。

      在参数监控中,该设置可用于识别不合规设置,该设置将显示使用紧急模式的系统。有时问题已修复,但CRL检查未再次启用。

      最好的问候,

      Baidu