CRL 処理について一旦書き出してみる

RFC を読んでいて、手順を追っていくのがつらくなってきたので,
条件を絞った上での処理をいったん書き出してみます

条件

  1. delta CRL は使用しない(そもそも需要はあるのか?)
  2. 検証対象の証明書は,Root CA 証明書から直接発行されている
  3. CRL は,Root CA 証明書から直接発行されている
  4. 対象の証明書を検証する CRL の入手先は 1 つだけとする
  5. 下記で示す証明書と,CRL を使用する

Root CA 証明書

  Certificate:
      Data:
          Version: 3 (0x2)
          Serial Number: 1 (0x1)
      Signature Algorithm: sha1WithRSAEncryption
          Issuer: C=JP, CN=CA
          Validity
              Not Before: Dec 16 06:24:36 2012 GMT
              Not After : Jan 31 06:00:00 2013 GMT
          Subject: C=JP, CN=CA
          Subject Public Key Info:
              Public Key Algorithm: rsaEncryption
                  Public-Key: (2048 bit)
                  Modulus:
                      00:b8:4c:d7:44:3c:42:04:0d:60:4e:82:8c:2c:19:
                      09:8c:e1:1e:65:a3:b8:91:17:54:86:85:e7:b4:31:
                      f9:17:3a:8a:28:57:23:ba:af:c4:c7:31:73:fe:19:
                      e9:d9:42:b4:1c:64:b1:2d:f4:1d:f6:5b:47:77:84:
                      6d:a9:eb:03:04:77:13:b6:d9:68:88:ff:53:91:a3:
                      88:a6:63:08:b1:e1:bf:7b:0c:15:eb:c3:53:02:ae:
                      c6:d4:7d:59:55:e7:07:90:ea:d3:24:e4:c6:f1:a9:
                      35:32:24:a3:a8:31:15:dd:30:19:34:e2:d5:7b:5d:
                      16:6a:94:33:83:f7:a8:91:89:c5:6e:a7:a6:35:a2:
                      4e:61:bd:21:bc:3a:bc:d9:8e:4d:2b:67:75:3a:2d:
                      77:0f:8b:a7:e3:a9:bf:a8:99:4d:ae:6a:83:35:fd:
                      50:e4:45:8d:7f:96:5b:63:aa:ea:73:a7:84:2b:6c:
                      7c:bb:06:40:35:37:a2:9b:e0:58:56:da:9f:b4:b1:
                      25:00:89:bf:89:50:7e:49:64:ef:74:bd:d4:17:bf:
                      63:e8:11:60:a1:8f:5e:c4:45:b9:0c:62:c9:3c:a5:
                      9a:45:4f:df:31:11:d9:8c:75:6d:4a:ce:73:df:4f:
                      6e:66:05:60:47:fc:bf:80:f4:ed:8f:86:65:89:c6:
                      70:67
                  Exponent: 3 (0x3)
          X509v3 extensions:
              X509v3 Subject Key Identifier: 
                  E1:92:E7:CD:7D:34:CD:BB:D0:E4:92:D4:55:EF:8A:D9:08:F1:9D:6C
              X509v3 Authority Key Identifier: 
                  keyid:E1:92:E7:CD:7D:34:CD:BB:D0:E4:92:D4:55:EF:8A:D9:08:F1:9D:6C
  
              X509v3 Basic Constraints: critical
                  CA:TRUE
              X509v3 Key Usage: critical
                  Certificate Sign, CRL Sign
      Signature Algorithm: sha1WithRSAEncryption
           66:af:b0:50:c0:a7:22:98:6d:57:4d:93:d5:e4:36:ec:4e:9a:
           da:48:e1:69:b9:0a:69:a7:c5:f5:33:3a:2a:4c:3d:22:72:41:
           83:b6:4c:8b:ef:4c:d0:e3:81:68:98:43:97:26:ab:3b:f2:f4:
           3f:ef:31:9e:d2:22:f3:d1:28:d5:61:d2:57:b1:f7:29:aa:e7:
           b7:56:79:e8:e7:53:66:ef:5c:3d:23:33:4e:c7:de:13:a5:ab:
           6e:a8:48:dc:43:ef:6f:73:ae:35:1e:63:af:65:9c:c9:d7:b9:
           e7:3f:5d:5f:9a:c9:6b:5f:50:35:b1:fe:e2:de:c6:7f:a0:9f:
           e0:b3:ee:b2:a8:29:03:cb:5b:e7:dd:dc:8c:92:85:38:15:31:
           e3:60:19:7c:9f:78:ab:92:86:5c:91:cc:f9:b4:5c:ad:a4:f1:
           a4:78:ef:ec:d3:11:91:5b:05:5b:5e:1d:77:8d:fb:ba:a1:ca:
           01:83:18:cf:d9:54:27:bd:9d:89:e7:79:27:43:2d:14:3b:6f:
           aa:a0:b8:11:be:b4:ab:0e:f2:8f:85:91:79:7d:99:16:ca:bc:
           ac:6d:11:84:68:cd:6c:4b:9e:b4:aa:21:ff:39:bc:d8:ec:08:
           37:23:a9:2a:55:23:84:ab:96:fa:e1:1f:8c:b2:b7:a5:c7:85:
           0f:9f:6b:72
  -----BEGIN CERTIFICATE-----
  MIIDEDCCAfigAwIBAgIBATANBgkqhkiG9w0BAQUFADAaMQswCQYDVQQGEwJKUDEL
  MAkGA1UEAwwCQ0EwHhcNMTIxMjE2MDYyNDM2WhcNMTMwMTMxMDYwMDAwWjAaMQsw
  CQYDVQQGEwJKUDELMAkGA1UEAwwCQ0EwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
  ggEIAoIBAQC4TNdEPEIEDWBOgowsGQmM4R5lo7iRF1SGhee0MfkXOoooVyO6r8TH
  MXP+GenZQrQcZLEt9B32W0d3hG2p6wMEdxO22WiI/1ORo4imYwix4b97DBXrw1MC
  rsbUfVlV5weQ6tMk5MbxqTUyJKOoMRXdMBk04tV7XRZqlDOD96iRicVup6Y1ok5h
  vSG8OrzZjk0rZ3U6LXcPi6fjqb+omU2uaoM1/VDkRY1/lltjqupzp4QrbHy7BkA1
  N6Kb4FhW2p+0sSUAib+JUH5JZO90vdQXv2PoEWChj17ERbkMYsk8pZpFT98xEdmM
  dW1KznPfT25mBWBH/L+A9O2PhmWJxnBnAgEDo2MwYTAdBgNVHQ4EFgQU4ZLnzX00
  zbvQ5JLUVe+K2QjxnWwwHwYDVR0jBBgwFoAU4ZLnzX00zbvQ5JLUVe+K2QjxnWww
  DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQAD
  ggEBAGavsFDApyKYbVdNk9XkNuxOmtpI4Wm5CmmnxfUzOipMPSJyQYO2TIvvTNDj
  gWiYQ5cmqzvy9D/vMZ7SIvPRKNVh0lex9ymq57dWeejnU2bvXD0jM07H3hOlq26o
  SNxD729zrjUeY69lnMnXuec/XV+ayWtfUDWx/uLexn+gn+Cz7rKoKQPLW+fd3IyS
  hTgVMeNgGXyfeKuShlyRzPm0XK2k8aR47+zTEZFbBVteHXeN+7qhygGDGM/ZVCe9
  nYnneSdDLRQ7b6qguBG+tKsO8o+FkXl9mRbKvKxtEYRozWxLnrSqIf85vNjsCDcj
  qSpVI4SrlvrhH4yyt6XHhQ+fa3I=
  -----END CERTIFICATE-----

end entity 証明書

  Certificate:
      Data:
          Version: 3 (0x2)
          Serial Number: 2927772090 (0xae8241ba)
      Signature Algorithm: sha1WithRSAEncryption
          Issuer: C=JP, CN=CA
          Validity
              Not Before: Dec 16 06:24:36 2012 GMT
              Not After : Jan 21 06:00:00 2013 GMT
          Subject: C=JP, CN=end entity
          Subject Public Key Info:
              Public Key Algorithm: rsaEncryption
                  Public-Key: (2048 bit)
                  Modulus:
                      00:b1:25:59:cd:c0:5d:90:ba:b3:3c:ee:bc:0a:18:
                      6d:fb:c7:25:1c:5b:af:37:59:57:ed:9d:08:e6:4f:
                      82:49:59:1e:28:4c:a2:93:70:d5:65:7a:16:b1:b0:
                      57:71:a0:f3:4f:25:21:08:07:90:e4:3e:a6:e0:8e:
                      6c:9f:7a:02:3a:e7:7d:1f:85:c2:bc:60:f5:39:16:
                      dc:f3:08:76:41:8f:a3:35:d0:aa:65:3d:2d:a2:9d:
                      ce:1d:03:38:a0:2c:b9:c2:8b:8a:18:aa:cf:dc:00:
                      fd:e4:90:f5:71:de:d5:57:8b:6d:ac:3c:e4:23:d8:
                      4f:0c:a4:f4:a8:f9:e1:46:7c:bc:f8:11:05:e8:4e:
                      53:87:66:ee:67:ad:ff:16:cc:87:59:d7:49:40:a1:
                      5d:76:a9:b3:52:f2:00:a3:f7:a9:cb:b2:ee:63:cc:
                      10:02:c5:26:a1:b1:0a:ef:ff:f1:d5:32:ac:b3:b4:
                      37:e2:6f:26:7c:b2:27:19:f4:bc:52:60:76:86:db:
                      62:a1:1f:fe:89:47:7a:a4:da:10:2a:70:26:28:88:
                      6f:50:21:75:65:13:b4:71:ea:8f:13:9a:0a:02:63:
                      f8:9c:c2:68:1a:8a:ed:06:74:d6:7f:81:c4:bd:21:
                      20:f3:db:60:90:43:94:fa:01:31:54:5a:e9:63:dd:
                      11:85
                  Exponent: 3 (0x3)
          X509v3 extensions:
              X509v3 Subject Key Identifier: 
                  7C:37:12:43:A5:B7:AB:FB:34:17:F4:67:F6:82:E7:08:48:ED:5A:9D
              X509v3 Authority Key Identifier: 
                  keyid:E1:92:E7:CD:7D:34:CD:BB:D0:E4:92:D4:55:EF:8A:D9:08:F1:9D:6C
  
              X509v3 Basic Constraints: critical
                  CA:FALSE
              X509v3 Extended Key Usage: 
                  TLS Web Client Authentication
              X509v3 CRL Distribution Points: 
  
                  Full Name:
                    URI:http://example.com/example.crl
                  Reasons:
                    Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn
  
      Signature Algorithm: sha1WithRSAEncryption
           b2:c9:b1:60:ba:d5:76:be:c1:02:8c:42:e0:db:b8:44:9f:dc:
           62:3a:8f:ca:51:47:84:11:9d:22:96:71:79:7e:76:9e:c1:03:
           f4:2d:b2:34:ba:b7:62:f2:dd:a8:bc:11:b3:1e:a3:97:7b:e3:
           a5:08:fe:28:e5:1b:1b:19:6d:73:f9:23:82:4d:96:6d:08:61:
           46:d5:88:1e:50:31:65:f2:4b:58:eb:8c:ce:ce:97:ff:7b:d4:
           c9:7a:c4:7c:c2:88:14:2b:e9:ec:15:aa:e9:59:d1:66:69:1b:
           c1:7f:ec:10:d2:0c:bb:8d:5b:9c:84:3e:8f:8e:fa:ff:81:07:
           42:9c:a1:ed:d4:24:37:cb:53:19:d8:94:98:be:4e:06:c6:2a:
           ab:42:a9:55:ed:7f:73:2b:25:c6:86:19:bc:76:41:f3:02:fa:
           dd:39:31:6a:dd:de:e6:40:10:30:4c:a8:77:8a:71:1f:c1:27:
           be:e6:af:13:fc:31:02:71:99:cc:96:3d:a2:81:b3:cd:ca:bf:
           11:e0:b8:73:ec:77:49:78:90:ed:3e:8f:d7:1f:1f:45:f0:0c:
           da:88:41:a9:da:df:ef:ab:af:a4:7e:1a:a8:12:33:38:eb:04:
           0b:c0:28:b7:74:8d:05:ac:6b:d0:f0:25:7a:22:b9:39:66:9d:
           b7:5c:87:b2
  -----BEGIN CERTIFICATE-----
  MIIDVzCCAj+gAwIBAgIFAK6CQbowDQYJKoZIhvcNAQEFBQAwGjELMAkGA1UEBhMC
  SlAxCzAJBgNVBAMMAkNBMB4XDTEyMTIxNjA2MjQzNloXDTEzMDEyMTA2MDAwMFow
  IjELMAkGA1UEBhMCSlAxEzARBgNVBAMMCmVuZCBlbnRpdHkwggEgMA0GCSqGSIb3
  DQEBAQUAA4IBDQAwggEIAoIBAQCxJVnNwF2QurM87rwKGG37xyUcW683WVftnQjm
  T4JJWR4oTKKTcNVlehaxsFdxoPNPJSEIB5DkPqbgjmyfegI6530fhcK8YPU5Ftzz
  CHZBj6M10KplPS2inc4dAzigLLnCi4oYqs/cAP3kkPVx3tVXi22sPOQj2E8MpPSo
  +eFGfLz4EQXoTlOHZu5nrf8WzIdZ10lAoV12qbNS8gCj96nLsu5jzBACxSahsQrv
  //HVMqyztDfibyZ8sicZ9LxSYHaG22KhH/6JR3qk2hAqcCYoiG9QIXVlE7Rx6o8T
  mgoCY/icwmgaiu0GdNZ/gcS9ISDz22CQQ5T6ATFUWulj3RGFAgEDo4GdMIGaMB0G
  A1UdDgQWBBR8NxJDpber+zQX9Gf2gucISO1anTAfBgNVHSMEGDAWgBThkufNfTTN
  u9DkktRV74rZCPGdbDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMC
  MDUGA1UdHwQuMCwwKqAioCCGHmh0dHA6Ly9leGFtcGxlLmNvbS9leGFtcGxlLmNy
  bKEEAwIAfzANBgkqhkiG9w0BAQUFAAOCAQEAssmxYLrVdr7BAoxC4Nu4RJ/cYjqP
  ylFHhBGdIpZxeX52nsED9C2yNLq3YvLdqLwRsx6jl3vjpQj+KOUbGxltc/kjgk2W
  bQhhRtWIHlAxZfJLWOuMzs6X/3vUyXrEfMKIFCvp7BWq6VnRZmkbwX/sENIMu41b
  nIQ+j476/4EHQpyh7dQkN8tTGdiUmL5OBsYqq0KpVe1/cyslxoYZvHZB8wL63Tkx
  at3e5kAQMEyod4pxH8EnvuavE/wxAnGZzJY9ooGzzcq/EeC4c+x3SXiQ7T6P1x8f
  RfAM2ohBqdrf76uvpH4aqBIzOOsEC8Aot3SNBaxr0PAleiK5OWadt1yHsg==
  -----END CERTIFICATE-----

CRL

  Certificate Revocation List (CRL):
          Version 2 (0x1)
      Signature Algorithm: sha1WithRSAEncryption
          Issuer: /C=JP/CN=CA
          Last Update: Dec 16 06:24:36 2012 GMT
          Next Update: Dec 21 06:00:00 2012 GMT
          CRL extensions:
              X509v3 CRL Number: 
                  1
              X509v3 Authority Key Identifier: 
                  keyid:E1:92:E7:CD:7D:34:CD:BB:D0:E4:92:D4:55:EF:8A:D9:08:F1:9D:6C
  
              X509v3 Issuing Distrubution Point: 
                  Full Name:
                    URI:http://example.com/example.crl
                  Only User Certificates
                  Only Some Reasons:
                    Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn
  
  Revoked Certificates:
      Serial Number: 01
          Revocation Date: Dec 16 06:24:36 2012 GMT
          CRL entry extensions:
              X509v3 CRL Reason Code: 
                  CA Compromise
      Serial Number: AE8241BA
          Revocation Date: Dec 16 06:24:36 2012 GMT
          CRL entry extensions:
              X509v3 CRL Reason Code: 
                  Key Compromise
      Signature Algorithm: sha1WithRSAEncryption
           3e:cd:04:1e:3b:0e:81:3b:11:ff:cf:b1:fb:f1:4a:ef:f3:d2:
           02:96:3b:1d:36:0e:5b:cb:1b:60:eb:8d:b9:24:f7:98:20:51:
           a1:58:cd:d7:bd:64:fb:5c:1b:51:05:0d:30:5a:7e:4f:58:70:
           22:a7:a7:54:33:cd:a1:b5:c7:e4:64:21:44:e5:4f:8a:53:27:
           f5:14:7f:06:8d:ec:98:0f:7a:fe:c5:8f:c5:bd:7d:bc:39:6b:
           16:95:d0:22:a5:66:f2:53:42:d6:25:47:44:7c:16:86:a2:e2:
           b9:88:81:90:0c:40:0c:eb:57:88:2b:0d:3f:93:1e:65:29:65:
           a8:91:55:a1:0a:fc:c2:07:ff:96:2c:5e:ca:af:52:4e:0c:7f:
           1c:61:c6:f7:1b:81:7b:47:9a:ba:ac:b9:e7:20:a0:74:2c:dc:
           30:ff:1a:cf:48:fb:78:24:bd:57:05:0b:2e:41:4b:85:42:9a:
           10:a4:fd:e4:e8:78:f7:01:d9:9f:f9:b6:96:c6:c2:43:f4:e1:
           32:b1:e3:66:ea:78:58:c5:58:eb:07:45:bc:37:3e:6e:57:79:
           8b:58:14:10:3d:b9:93:12:03:44:a9:08:e7:74:6c:be:9b:d1:
           61:89:0f:ba:90:c1:d3:6e:b8:c7:c3:a1:65:d7:01:1f:56:38:
           54:a5:56:21
  -----BEGIN X509 CRL-----
  MIICGTCCAQECAQEwDQYJKoZIhvcNAQEFBQAwGjELMAkGA1UEBhMCSlAxCzAJBgNV
  BAMMAkNBFw0xMjEyMTYwNjI0MzZaFw0xMjEyMjEwNjAwMDBaMEgwIAIBARcNMTIx
  MjE2MDYyNDM2WjAMMAoGA1UdFQQDCgECMCQCBQCugkG6Fw0xMjEyMTYwNjI0MzZa
  MAwwCgYDVR0VBAMKAQGgaTBnMAoGA1UdFAQDAgEBMB8GA1UdIwQYMBaAFOGS5819
  NM270OSS1FXvitkI8Z1sMDgGA1UdHAQxMC+gIqAghh5odHRwOi8vZXhhbXBsZS5j
  b20vZXhhbXBsZS5jcmyhAwEB/6MEAwIAfzANBgkqhkiG9w0BAQUFAAOCAQEAPs0E
  HjsOgTsR/8+x+/FK7/PSApY7HTYOW8sbYOuNuST3mCBRoVjN171k+1wbUQUNMFp+
  T1hwIqenVDPNobXH5GQhROVPilMn9RR/Bo3smA96/sWPxb19vDlrFpXQIqVm8lNC
  1iVHRHwWhqLiuYiBkAxADOtXiCsNP5MeZSllqJFVoQr8wgf/lixeyq9STgx/HGHG
  9xuBe0eauqy55yCgdCzcMP8az0j7eCS9VwULLkFLhUKaEKT95Oh49wHZn/m2lsbC
  Q/ThMrHjZup4WMVY6wdFvDc+bld5i1gUED25kxIDRKkI53RsvpvRYYkPupDB0264
  x8OhZdcBH1Y4VKVWIQ==
  -----END X509 CRL-----

処理

  • 以前に処理された CRL はローカル CRL キャッシュに保存されます
  • delta CRL は使用しないため,これ以下では complete CRL は単に CRL と記載します
  • ここでは,上記の証明書と CRL の場合に検証する内容のみを記載します
    • Extension の内容が異なる場合等には,検証項目数が増減するかもしれません
      • RFC では Extension にない CRL による検証も想定しているので,ソフトウェアの仕様次第で手順は増えそうですが…

1. CRL の Next Update の値のチェック

CRL の Next Update (次回発行日時) を確認します

CRL の下記の箇所です

          Next Update: Dec 21 06:00:00 2012 GMT
  • 現在の時刻が Next Update よりも前の場合は,次の処理へ
  • 現在の時刻が Next Update よりも後の場合は,CRL を更新して,現在の時刻が Next Update よりも前であることを検証します

2. CRL の Issuer と証明書の Issuer が一致することの確認

CRL の Issuer は下記の箇所です

          Issuer: /C=JP/CN=CA

証明書の Issuer は下記の箇所です

          Issuer: C=JP, CN=CA

テキストで表示させた場合の表示形式は異なりますが,バイナリで確認してみると,双方ともに

  301a310b3009060355040613024a50310b300906035504030c024341 (16 進数)

であることが分かります

3. CRL に Issuing Distribution Points CRL Extesnsion (以下 IDP Extension) を含む場合の検証

今回作成した CRL はこの条件に該当します

IDP Extension は,CRL の下記の箇所です

            X509v3 Issuing Distrubution Point: 
                Full Name:
                  URI:http://example.com/example.crl
                Only User Certificates
                Only Some Reasons:
                  Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn
3.1. IDP Extension に Distribution Point Name が 存在しており,その Distribution フィールドに Distribution Point が存在している場合の検証

IDP Extension の DistributionPointName の 1 つが,証明書の CRL Distribution Points Extension (以下 DP Extension) の Distribution Point の DistributionPointName の 1 つに一致することを検証します

CRL の IDP Extension の Distribution Point Name

              X509v3 Issuing Distrubution Point: 
                  Full Name:
                    URI:http://example.com/example.crl

証明書の DP Extension の Distribution Point Name

            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://example.com/example.crl

上記の項目が一致することを検証します

4. CRL の IDP Extension に、onlyContainsUserCerts が含まれている場合

対象の証明書が CA 証明書で無いことを検証するために,CA:TRUE の Basic Constraints Extension が含まれていないことを確認します

CRL の IDP Extension の該当箇所です

            X509v3 Issuing Distrubution Point: 
                Full Name:
                  URI:http://example.com/example.crl
                Only User Certificates

Only User Certificates が含まれているため Basic Constraints Extension が CA:TRUE でないことを確認します

end entity 証明書の basicConstraints Extension の該当箇所です

              X509v3 Basic Constraints: critical
                  CA:FALSE

5. onlyContainsCACerts が IDP Extension に含まれている場合

今回の CRL には onlyContainsCACerts が IDP Extension に含まれていないため,この条件に該当しません

              X509v3 Issuing Distrubution Point: 
                  Full Name:
                    URI:http://example.com/example.crl
                  Only User Certificates
                  Only Some Reasons:
                    Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn

6. onlyContainsAttributeCerts が含まれていないことの確認

今回の CRL には onlyContainsCACerts が IDP Extension に含まれていません

              X509v3 Issuing Distrubution Point: 
                  Full Name:
                    URI:http://example.com/example.crl
                  Only User Certificates
                  Only Some Reasons:
                    Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn

7. この CRL でサポートされている失効理由の取得

CRL の IDP Extension に SomeReasons が含まれており、証明書の DP が reasons を含んでいる場合は,双方に共通の失効理由を取得します

CRL の IDP Extension の onlySomeReasons

                Only Some Reasons:
                  Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn

証明書の DP Extension の reasons

                Reasons:
                  Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Privilege Withdrawn

CRL の IDP Extension の onlySomeReasons と,証明書の DP Extension の reasons の共通箇所は下記の 7 つです

  • Key Compromise
  • CA Compromise
  • Affiliation Changed
  • Superseded
  • Cessation Of Operation
  • Certificate Hold
  • Privilege Withdrawn

8. 上記で取得した失効理由の集合が,これまでに検証した CRL がサポートしている失効理由に含まれていなかった失効理由を 1 つ以上含んでいることの確認

複数の Distribution Point のそれぞれに CRL がある場合は、Distribution Point 毎にサポートする失効理由が異なります

そのため,1 つ目の CRL の検証の場合は,これまでに検証した CRL がないため,必ず失効理由を 1 つ以上含みます

2 つ目以降の CRL の検証の場合はサポートしている失効理由がそれまでの CRL と重複していないことを確認します

9. CRL の発行者についての認証パスの取得と検証

CRL 発行者の認証パスのトラストアンカーと,対象の証明書のトラストアンカーは同じである必要があります

今回は、証明書および CRL は、同一の Root CA から直接発行していますので、CRL ン発行者の認証パスのトラストアンカーと、対象の証明書のトラストアンカーは、下記の CA です

          Subject: C=JP, CN=CA

10. Key Usage Extension が CRL 発行者の証明書に存在している場合の検証

Key Usage Extension に cRLSign が含まれていることを確認します

CRL 発行者の証明書の Key Usage Extension

            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign

11. 上記 9 で検証された公開鍵を使用して,CRL の署名を検証

CRL 発行者の公開鍵を使用して,CRL の署名を検証します

下記のコマンドを使用した場合の verify OK に該当する(はず)

  $ openssl crl -CAfile ca.pem -in example.crl
  verify OK
  -----BEGIN X509 CRL-----
  MIICGTCCAQECAQEwDQYJKoZIhvcNAQEFBQAwGjELMAkGA1UEBhMCSlAxCzAJBgNV
  BAMMAkNBFw0xMjEyMTYwNjI0MzZaFw0xMjEyMjEwNjAwMDBaMEgwIAIBARcNMTIx
  MjE2MDYyNDM2WjAMMAoGA1UdFQQDCgECMCQCBQCugkG6Fw0xMjEyMTYwNjI0MzZa
  MAwwCgYDVR0VBAMKAQGgaTBnMAoGA1UdFAQDAgEBMB8GA1UdIwQYMBaAFOGS5819
  NM270OSS1FXvitkI8Z1sMDgGA1UdHAQxMC+gIqAghh5odHRwOi8vZXhhbXBsZS5j
  b20vZXhhbXBsZS5jcmyhAwEB/6MEAwIAfzANBgkqhkiG9w0BAQUFAAOCAQEAPs0E
  HjsOgTsR/8+x+/FK7/PSApY7HTYOW8sbYOuNuST3mCBRoVjN171k+1wbUQUNMFp+
  T1hwIqenVDPNobXH5GQhROVPilMn9RR/Bo3smA96/sWPxb19vDlrFpXQIqVm8lNC
  1iVHRHwWhqLiuYiBkAxADOtXiCsNP5MeZSllqJFVoQr8wgf/lixeyq9STgx/HGHG
  9xuBe0eauqy55yCgdCzcMP8az0j7eCS9VwULLkFLhUKaEKT95Oh49wHZn/m2lsbC
  Q/ThMrHjZup4WMVY6wdFvDc+bld5i1gUED25kxIDRKkI53RsvpvRYYkPupDB0264
  x8OhZdcBH1Y4VKVWIQ==
  -----END X509 CRL-----

12. CRL 上の証明書を検索して,対象の証明書の発行者とシリアル番号が一致するエントリがあるかの確認

一致するエントリが存在している場合は,その失効理由を取得します

失効理由は,CRL entry extensions の CRL Reason Code の箇所です

CRL やエントリによっては,CRL entry extensions が存在しない場合があります
CRL entry extensions が存在しない場合の失効理由は,unspecified とします

CRL entry extensions が該当箇所です

    Serial Number: AE8241BA
        Revocation Date: Dec 16 06:24:36 2012 GMT
        CRL entry extensions:
            X509v3 CRL Reason Code: 
                Key Compromise

13. これまで取得した CRL がサポートしている失効理由に,上記の 7 で取得した失効理由を追加します

これは,失効状態の判定と,次の(他に入手可能な) CRL 処理で使用します

14. 13 で追加した失効理由も含めて 1 つ以上の CRL を検証して,全ての失効理由を取得しているか,または,この時点で対象の証明書の失効理由を取得している場合

この時点で失効の状態は決定しています

  • 全ての失効理由が揃うまで CRL を取得したにもかかわらず,対象の証明書のエントリが CRL 上にない場合は,失効されていません(UNREVOKED)
  • 対象の証明書の失効理由を取得している場合は,その失効理由(今回用意した証明書の場合は Key Compromise)です

15. 14 で失効の状態が決定せずに,また,入手可能な全ての CRL を検証しても,全ての思考理由が揃わなかった場合

失効の状態は UNDETERMINED となります

疑問点

  • 現在の時刻が Next Update よりも後の場合はどこから CRL を取得するのか
    • はじめにチェックする割にはこの時点では cRLDistributionPoints は取得していないはず
  • Distribution Point 毎にサポートされる失効理由は,他の Distribution Point の CRL がサポートしていない失効理由を含んでいれば,一部が重複してもよいか
  • IDP には name は 1 つしかないのに複数を想定している記述になっているのはなぜか
    • 読み間違えているかな…
  • UNDETERMINED の場合はどう処理すべきか
    • CRL の検証失敗で、この証明書は受け入れない、または、受け入れるのどちらになるのか