14.05.2007 15:01:19Cryptcp unix -verify Ответов: 6
Дмитрий
Подскажите, мне нужно с помощью утилиты командной строки проверять подпись PKCS7 с помощью сертификата, который находится в самом файле, но утилита сryptcp при этом задает вопрос

Certificate chain aren't checked for this certificate (error code 65536):
Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?

Можно ли этой утилите задать параметр типа всегда Yes чтобы ее можно было запускать в пакетном режиме?
 
Ответы:
14.05.2007 16:32:54Василий
Конечно.
при указании опции -nochain вообще не строится цепочка сертификата, а если использовать -norev - то цепочка строиться будет, но без проверки сертификатов на отзыв.
14.05.2007 19:24:14Дмитрий
#/usr/CPROcsp/bin/cryptcp -verify 23.xml.p7s 23.xml

CryptCP 3.00 (c) "Crypto-Pro", 2002-2003.
Command prompt Utility for data protection.
-verify - Verifies signatures of a message.
Can't open certificate store: 'My'.
Can't open certificate store: 'Addressbook'.
Error: No certificates found. (0x2000012D)

Signer: [skipped]
Certificate chain aren't checked for this certificate (error code 65536):
Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?

Signature's verified.
[ErrorCode: 0x00000000]

#/usr/CPROcsp/bin/cryptcp -verify -nochain 23.xml.p7s 23.xml

CryptCP 3.00 (c) "Crypto-Pro", 2002-2003.
Command prompt Utility for data protection.
-verify - Verifies signatures of a message.
Can't open certificate store: 'My'.
Can't open certificate store: 'Addressbook'.
Error: No certificates found. (0x2000012D)

Signer: [skipped]
Skipping the signature due to signer's certificate is not in certificate creteria.
[ErrorCode: 0x200001f9]
15.05.2007 10:08:16Василий
Вообще-то, надо указывать, на каком сертификате проверяется подпись (т.е. критерий поиска сертификатов - КПС). Если сертификат берётся из самого файла с подписью, то КПС выглядит так: -f имя_файла.

Например, если проверяем подпись файла 23.xml.p7s и известно, что сертификат имеется в этом же файле, то:

cryptcp -verify 23.xml.p7s -f 23.xml.p7s

Если не нужна проверка сертификата подписавшего:

cryptcp -verify 23.xml.p7s -f 23.xml.p7s -nochain

Если нужен выходной файл - он указывается в самом конце строки.
15.05.2007 10:39:21Дмитрий
Правильно ли я понимаю, что если я просто указываю
#cryptcp -verify 23.xml.p7s и пусть с вопросом Yes/No/Cancel, но подпись при этом валидируется правильно, то файл 23.xml.p7s содержит сертификат? И почему в этом случае утилите не нужно задавать ПКС?

К сожалению,

#cryptcp -verify 23.xml.p7s -f 23.xml.p7s -nochain

выдает такой же результат:

CryptCP 3.00 (c) "Crypto-Pro", 2002-2003.
Command prompt Utility for data protection.
-verify - Verifies signatures of a message.
Error: No certificates found. (0x2000012D)

Signer: [skipped]
Skipping the signature due to signer's certificate is not in certificate creteria.
[ErrorCode: 0x200001f9]
15.05.2007 12:33:21Василий
Судя по последнему сообщению, в самом сообщении нет сертификатов. Либо не удалось добыть сертификат из сообщения. Вопрос - в какой кодировке подписанный файл - der или base64, если второе - с заголовками или без?
15.05.2007 19:42:57Дмитрий
Про кодировки я ничего не знаю, на base64 оно не похоже потому как содержит непечатные символы, насколько я понимаю в base64 их нет.

Методом проб и ошибок был найден работающий вариант

# /usr/CPROcsp/bin/cryptcp -verify 23.xml.p7s -verall -nochain

Спасибо за внимание!