2009-04-06 2 views
7

Для аутентификации наших клиентов мы используем закрытый центр сертификации на базе OpenSSL. Мы предоставляем простую веб-утилиту, которая позволяет им загружать файл CSR для авторизации сертификата.Извлечь запрашиваемый период действия с помощью запроса на подписку на сертификат с использованием OpenSSL

На данный момент мы можем выдавать сертификаты только на фиксированный период, на данный момент - 365 дней. Тем не менее, наши клиенты спросили, могут ли они указать срок действия своих сертификатов.

Я бы предпочел не спрашивать у пользователя, какой срок действия они хотят, поскольку они должны указать период действия, когда они генерируют свои CSR, и имеет смысл извлечь этот период из CSR при подписании сертификата. Однако я не могу понять, как это сделать: обычные вещи, которые OpenSSL позволяет вам выполнять для отладки CSR, сертификатов и ключей, не показывают соответствующую информацию: вот пример вывода «openssl req -text -noout < csrfile ":

$ openssl req -text -noout < my.csr 
Certificate Request: 
    Data: 
     Version: 0 (0x0) 
     Subject: C=GB, L=London, O=example.com, CN=customer/[email protected] 
     Subject Public Key Info: 
      Public Key Algorithm: rsaEncryption 
      RSA Public Key: (1024 bit) 
       Modulus (1024 bit): 
        00:c4:3b:11:7f:61:31:19:97:b6:26:19:01:e7:c6: 
        c3:d5:03:a5:f6:5a:4d:e2:03:d0:4e:76:49:d0:7f: 
        59:92:bf:5e:12:b3:b0:7e:20:5b:d8:a2:3f:cb:50: 
        c1:64:e5:48:04:c3:b2:04:e3:f2:4c:2f:0e:e2:a6: 
        c3:7c:36:24:dc:97:c9:f0:ba:ad:87:0f:71:45:9c: 
        6a:7f:d4:4c:d5:31:8e:49:a8:e4:3d:c4:ec:5e:54: 
        bf:f9:ba:ce:21:4c:11:15:7d:f0:d3:7a:77:f6:66: 
        5d:07:4e:4a:d3:0e:f0:52:0d:d9:cf:81:86:fe:9b: 
        c8:f8:e4:8d:d6:d1:d0:85:7f 
       Exponent: 65537 (0x10001) 
     Attributes: 
      a0:00 
    Signature Algorithm: sha1WithRSAEncryption 
     5e:4c:38:59:95:e5:11:b4:a3:d5:88:1f:3c:c0:33:67:cb:b2: 
     14:85:73:c3:5a:b8:23:bf:1d:25:2b:a9:38:93:da:fb:67:17: 
     26:6c:79:07:dd:7f:3c:3f:b0:33:17:d1:c2:41:f7:c9:ce:1e: 
     32:1c:a1:a0:a3:50:67:56:1b:58:d9:b4:48:56:70:00:43:22: 
     a9:0c:17:be:67:42:f4:98:d6:d8:c0:d0:4f:6a:73:d1:a8:57: 
     91:3c:02:dc:dc:8f:e3:fb:48:28:06:a2:8e:8e:27:b2:39:d7: 
     3e:ce:63:ae:66:9b:ec:38:ee:09:77:dc:0f:91:40:ab:28:0f: 
     ae:a9 

Нет упоминаний о запрашиваемом сроке действия в любом месте.

Любые предложения?

ответ

0

Попробуйте добавить -days xx параметр для вашей команды создания запроса

+0

Dmitry: ваш комментарий не совсем отвечает на мой вопрос: я уже знаю, как использовать дни при создании CSR, а также как использовать его при выдаче сертификата. Я хочу знать, как извлечь значение для-дня, которое было использовано при создании CSR. –

6

Я пытался выяснить, как запрос определенный срок действия в области КСО, и, насколько я могу судить, КСО просто не несет эту информацию. Структура CSR определена в PKCS # 10/RFC2986 и не имеет поля специально для запрашиваемого периода действия. Атрибуты и расширения, которые могут быть добавлены в CSR, перечислены в PKCS # 9, и нет ничего о сроках действия. И, наконец, я могу сделать openssl asn1parse на моих сгенерированных CSR и обнаружить, что информация о связанной с периодом действия не включена независимо от того, что я перехожу на openssl req.

1

Несмотря на то, что вы запрашиваете определенный срок действия своего сертификата при генерировании CSR, его неопределенность ожидает, что действительность будет приемлемой для CA. Большинство ЦС предпочли бы предопределенный период действия, и несколько ЦС в порядке с запрошенным сроком действия и соответственно генерируют КСО. Теперь, приходя к точке, структура CSR ASN.1 в соответствии со стандартом PKCS # 10 не указывает период действия. И таким образом вы не можете извлечь эту информацию из CSR.

1

Я наткнулся на вас вопросом, исследуя действительность CSR. Как отмечали другие, срок действия не включен в CSR, но мне было интересно узнать о -days, о котором многие люди относятся в своих примерах для создания CSR. После прочтения documentation of OpenSSL совершенно ясно:

-days п

когда опция -x509 используется этот параметр определяет количество дней, чтобы удостоверить сертификат. Значение по умолчанию - 30 дней.

и вариант -x509 выводит самостоятельно подписанный сертификат вместо запроса сертификата

-x509

эта опция выводит самостоятельно подписанный сертификат вместо запроса сертификата. Обычно это используется для создания тестового сертификата или собственного корневого ЦС.Расширения, добавленные в сертификат (если есть), указаны в файле конфигурации. Если не указано значение параметра set_serial, для серийного номера будет использоваться большое случайное число.