PKI --OCSP(1) strongSwan PKI --OCSP(1)

pki --ocsp - تجزیه‌گر درخواست OCSP و پاسخ‌دهندهٔ OCSP.

pki --ocsp [--in file] [--cacert file] [--debug level]
pki --ocsp --respond [--in file] --cacert file [--key file|--keyid hex] [--cert file|--certid hex] [--index file] [--lifetime minutes] [--digest digest] [--rsa-padding padding] [--debug level]
pki --ocsp --options file
pki --ocsp -h | --help

این زیرفرمان از pki(1) یک درخواست Online Certificate Status Protocol (OCSP) را همان‌طور که در RFC 6960 تعریف شده است تجزیه می‌کند و با گزینهٔ --respond یک پاسخ OCSP بر اساس درخواست دریافتی تولید می‌نماید. وضعیت گواهی برای این کار می‌تواند توسط افزونه‌ها تأمین شود؛ بنابراین در صورت عدم استفاده از گزینهٔ --index، این ابزار در حال حاضر نیازمند افزونه‌های openxpki و mysql است تا بتواند مستقیماً به پایگاه‌دادهٔ داخلی certificate یک سرور OpenXPKI (https://openxpki.org) دسترسی پیدا کند.

چاپ اطلاعات نحوهٔ استفاده به‌همراه خلاصه‌ای از گزینه‌های موجود.
تنظیم سطح اشکال‌زدایی (دیباگ)، پیش‌فرض: 1.
-+, --options file
خواندن گزینه‌های خط فرمان از file.
درخواست OCSP. در صورت مشخص نشدن، درخواست OCSP از STDIN خوانده می‌شود.
گواهی CA متناظر با یکی از هش‌های صادرکنندهٔ موجود در درخواست OCSP. اگر درخواست OCSP امضا شده باشد، یک گواهی CA که زنجیرهٔ اعتماد را تشکیل می‌دهد. می‌تواند چندین بار استفاده شود.
کلید امضاکنندهٔ OCSP. می‌تواند چندین بار استفاده شود.
شناسهٔ شیء (handle) مربوط به کلید امضاکنندهٔ OCSP در کارت هوشمند یا TPM 2.0. می‌تواند چندین بار استفاده شود.
گواهی امضاکنندهٔ OCSP (در صورتی که گواهی CA نباشد). می‌تواند چندین بار استفاده شود.
شناسهٔ شیء (handle) مربوط به گواهی امضاکنندهٔ OCSP در کارت هوشمند یا TPM 2.0. می‌تواند چندین بار استفاده شود.
فایل index.txt به سبک OpenSSL که اطلاعات مربوط به وضعیت گواهی‌های صادرشده توسط گواهی CA بارگذاری‌شده دقیقاً پیش از آن را ارائه می‌دهد. در صورتی که وضعیت چندین CA باید ارائه شود، می‌تواند چندین بار استفاده شود؛ فقط دقت کنید که هر فایل index.txt بلافاصله پس از گواهی CA مربوطه‌اش ارسال شود.

برای مشاهدهٔ شرح ساختار این فایل‌ها، ادامه را ببینید.

مدت‌زمان اعتبار پاسخ OCSP برحسب دقیقه (در صورت عدم تعیین، فیلد nextUpdate حذف می‌شود).
خلاصه یا دایجست (digest) مورد استفاده برای ایجاد امضا. یکی از موارد md5، sha1، sha224، sha256، sha384 یا sha512، sha3_224، sha3_256، sha3_384، sha3_512. مقدار پیش‌فرض بر اساس نوع و اندازهٔ کلید امضای OCSP تعیین می‌شود.
پدینگ (padding) مورد استفاده برای امضاهای RSA. می‌تواند pkcs1 یا pss باشد، پیش‌فرض بر روی pkcs1 است. هر سطر در یک فایل index.txt از شش ستون تشکیل شده که با نویسه‌های تب (tab) از یکدیگر جدا شده‌اند:

ستون اول نشان‌دهنده وضعیت گواهی است که می‌تواند "V" (برای معتبر - valid)، "E" (برای منقضی‌شده - expired، که مانند معتبر با آن رفتار می‌شود) یا "R" (برای باطل‌شده - revoked) باشد.

ستون دوم شامل تاریخ و ساعت انقضای گواهی در UTC و با قالب YYMMDDHHMMSSZ است. این فیلد توسط دستور نادیده گرفته می‌شود اما نباید خالی باشد.

ستون سوم تاریخ و ساعت ابطال در UTC با قالب YYMMDDHHMMSSZ و یک دلیل اختیاری برای ابطال است که بلافاصله پس از آن می‌آید و با ویرگول جدا می‌شود. دلایل معتبر عبارتند از "keyCompromise"، "CACompromise"، "affiliationChanged"، "superseded"، "cessationOfOperation"، "certificateHold" و "removeFromCRL"؛ هر مقدار دیگری یا ذکر نکردن دلیل منجر به "unspecified" می‌شود.

ستون چهارم شامل شماره سریال گواهی با کدگذاری هگزادسیمال است.

ستون‌های پنجم و ششم هر دو توسط دستور نادیده گرفته می‌شوند، بنابراین می‌توان آن‌ها را به‌طور کامل حذف کرد. آن‌ها می‌توانند شامل مسیری به گواهی (معمولاً تنظیم‌شده روی "unknown") و DN موضوع (subject DN) گواهی باشند که با اسلش RDNها را از هم جدا می‌کند.

مثال index.txt:

V    310930122422Z       03  unknown /C=CH/O=strongSwan/CN=moon...
V    310930122422Z       04  unknown /C=CH/O=strongSwan/CN=sun...
R    310930122422Z   231002122422Z,keyCompromise 88
V    Z       05

توجه داشته باشید که فیلدها با تب از یکدیگر جدا می‌شوند. بنابراین اگر گواهی معتبر باشد، پس از تاریخ انقضا دو تب قرار می‌گیرد. سطر سوم در این مثال تنها چهار ستون مرتبط اول را مشخص می‌کند، و سطر چهارم حتی از یک تاریخ انقضای ساختگی استفاده می‌کند.

نمایش محتوای خام یک درخواست OCSP:

pki --ocsp --in req_ca.der
nonce:               5b:14:e3:cc:d5:b2:65:ec:c4:0d:c3:11:37:6a:9d:71
  issuerKeyHash:     b6:76:79:95:b5:58:..:06:93:f3:39:79:19 (no match)
  issuerNameHash:    af:25:78:ce:fc:15:..:67:95:81:31:a3:4d (no match)
  serialNumber:      4f:33:21:1d:4d:fd:9b:db
  issuerKeyHash:     b6:76:79:95:b5:58:..:06:93:f3:39:79:19 (no match)
  issuerNameHash:    af:25:78:ce:fc:15:..:67:95:81:31:a3:4d (no match)
  serialNumber:      68:f2:93:10:65:d0:5e:d1

نمایش محتوای همان درخواست OCSP در صورتی که گواهی صادرکننده ارائه شده باشد:

pki --ocsp --in req_ca.der --cacert cacert.pem
nonce:               5b:14:e3:cc:d5:b2:65:ec:c4:0d:c3:11:37:6a:9d:71
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
  issuerKeyHash:     b6:76:79:95:b5:58:..:06:93:f3:39:79:19 (ok)
  issuerNameHash:    af:25:78:ce:fc:15:..:67:95:81:31:a3:4d (ok)
  serialNumber:      4f:33:21:1d:4d:fd:9b:db
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
  issuerKeyHash:     b6:76:79:95:b5:58:..:06:93:f3:39:79:19 (ok)
  issuerNameHash:    af:25:78:ce:fc:15:..:67:95:81:31:a3:4d (ok)
  serialNumber:      68:f2:93:10:65:d0:5e:d1

پاسخ به درخواست OCSP بالا، در حالی که پاسخ OCSP توسط خود CA امضا شده باشد:

pki --ocsp --respond --in req_ca.der --cacert cacert.pem --key cakey.pem \
           --lifetime 10 > rsp_ca.der
nonce:               5b:14:e3:cc:d5:b2:65:ec:c4:0d:c3:11:37:6a:9d:71
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
  issuerKeyHash:     b6:76:79:95:b5:58:..:06:93:f3:39:79:19 (ok)
  issuerNameHash:    af:25:78:ce:fc:15:..:67:95:81:31:a3:4d (ok)
  serialNumber:      4f:33:21:1d:4d:fd:9b:db
  thisUpdate:        Oct 19 15:54:15 UTC 2023
  nextUpdate:        Oct 19 16:04:15 UTC 2023
  certValidation:    GOOD
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
  issuerKeyHash:     b6:76:79:95:b5:58:..:06:93:f3:39:79:19 (ok)
  issuerNameHash:    af:25:78:ce:fc:15:..:67:95:81:31:a3:4d (ok)
  serialNumber:      68:f2:93:10:65:d0:5e:d1
  thisUpdate:        Oct 19 15:54:15 UTC 2023
  nextUpdate:        Oct 19 16:04:15 UTC 2023
  certValidation:    GOOD
trusted signer:     "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
ocspResponseStatus:  successful

پاسخ به یک درخواست OCSP امضاشده با ارائه زنجیره کامل اعتماد:

pki --ocsp --respond --in req_signed.der --cacert cacert.pem --cacert issuer1.pem \
           --key signerKey1.pem --cert signerCert1.pem --lifetime 10 > rsp_signed.der
requestor:          "C=CH, O=strongSwan Project, CN=vpn.strongswan.org"
  using certificate "C=CH, O=strongSwan Project, CN=vpn.strongswan.org"
  using trusted intermediate ca certificate "C=CH, O=strongSwan Project, CN=strongSwan Issuing CA 1"
  using trusted ca certificate "C=CH, O=strongSwan Project, CN=strongSwan Root CA"
  reached self-signed root ca with a path length of 1
requestor is trusted
nonce:               a8:0f:29:0f:08:9c:29:c1:0d:a8:cb:b0:21:fa:e1:f7
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Issuing CA 1"
  issuerKeyHash:     5a:1b:ec:17:f0:6d:..:a2:c8:e7:6a:84:20 (ok)
  issuerNameHash:    df:1e:24:71:96:e6:..:b9:82:18:45:e7:09 (ok)
  serialNumber:      04:ff:cc:8d:36:91:cb:35:d7:c4
  thisUpdate:        Oct 19 16:30:54 UTC 2023
  nextUpdate:        Oct 19 16:40:54 UTC 2023
  certValidation:    REVOKED
  revocationTime:    Mar 26 06:41:54 UTC 2023
  revocationReason:  superseded
trusted signer:     "C=CH, O=strongSwan Project, CN=OCSP signer of strongSwan Issuing CA 1"
ocspResponseStatus:  successful

پاسخ به یک درخواست OCSP حاوی دو مورد از صادرکنندگان شناخته‌شده مختلف که هر کدام یک امضاکننده OCSP دارند. صادرکننده اولین موردِ درخواست، امضاکننده OCSP مورد استفاده برای امضای پاسخ OCSP را مشخص می‌کند:

pki --ocsp --respond --in req.der --cacert issuer1.pem --cacert issuer2.pem \
           --key signerKey1.pem --cert signerCert1.pem \
           --key signerKey2.pem --cert signerCert2.pem \
           --lifetime 10 > rsp_trusted.der
nonce:               a1:33:aa:bc:96:60:69:76:f3:bc:9c:88:3b:07:50:47
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Issuing CA 2"
  issuerKeyHash:     72:41:ca:f9:35:87:..:d3:83:ab:d5:89:7b (ok)
  issuerNameHash:    5e:b2:b4:42:e1:a5:..:b2:c3:9a:38:4f:cd (ok)
  serialNumber:      29:ff:36:d9:9a:21:49:61:91:1d
  thisUpdate:        Oct 19 16:02:35 UTC 2023
  nextUpdate:        Oct 19 16:12:35 UTC 2023
  certValidation:    REVOKED
  revocationTime:    Sep 22 13:13:04 UTC 2023
  revocationReason:  superseded
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Issuing CA 1"
  issuerKeyHash:     5a:1b:ec:17:f0:6d:..:a2:c8:e7:6a:84:20 (ok)
  issuerNameHash:    df:1e:24:71:96:e6:..:b9:82:18:45:e7:09 (ok)
  serialNumber:      10:ff:45:9a:6d:ee:4c:ec:7c:97
  thisUpdate:        Oct 19 16:02:35 UTC 2023
  nextUpdate:        Oct 19 16:12:35 UTC 2023
  certValidation:    FAILED
there are multiple known issuers
trusted signer:     "C=CH, O=strongSwan Project, CN=OCSP signer of strongSwan Issuing CA 2"
ocspResponseStatus:  successful

تکرار پاسخ OCSP بالا، اما با یک گواهی امضای OCSP خودامضاشده (self-signed):

pki --ocsp --respond --in req.der --cacert issuer1.pem --cacert issuer2.pem \
           --key signerKey.pem --cert signerCert.pem --lifetime 10 > rsp_self_signed.der
nonce:               a1:33:aa:bc:96:60:69:76:f3:bc:9c:88:3b:07:50:47
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Issuing CA 2"
  issuerKeyHash:     72:41:ca:f9:35:87:..:d3:83:ab:d5:89:7b (ok)
  issuerNameHash:    5e:b2:b4:42:e1:a5:..:b2:c3:9a:38:4f:cd (ok)
  serialNumber:      29:ff:36:d9:9a:21:49:61:91:1d
  thisUpdate:        Oct 19 16:13:23 UTC 2023
  nextUpdate:        Oct 19 16:23:23 UTC 2023
  certValidation:    REVOKED
  revocationTime:    Sep 22 13:13:04 UTC 2023
  revocationReason:  superseded
issuer:             "C=CH, O=strongSwan Project, CN=strongSwan Issuing CA 1"
  issuerKeyHash:     5a:1b:ec:17:f0:6d:..:a2:c8:e7:6a:84:20 (ok)
  issuerNameHash:    df:1e:24:71:96:e6:..:b9:82:18:45:e7:09 (ok)
  serialNumber:      10:ff:45:9a:6d:ee:4c:ec:7c:97
  thisUpdate:        Oct 19 16:13:23 UTC 2023
  nextUpdate:        Oct 19 16:23:23 UTC 2023
  certValidation:    GOOD
there are multiple known issuers
self-signed signer: "C=CH, O=strongSwan Project, CN=strongSwan OCSP signer"
ocspResponseStatus:  successful

pki(1)

2023-10-29 6.1.0