| ||||
| ||||
Подскажите, мне нужно с помощью утилиты командной строки проверять подпись 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 чтобы ее можно было запускать в пакетном режиме? | ||||
Ответы: | ||||
| ||||
Конечно. при указании опции -nochain вообще не строится цепочка сертификата, а если использовать -norev - то цепочка строиться будет, но без проверки сертификатов на отзыв. | ||||
| ||||
#/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] | ||||
| ||||
Вообще-то, надо указывать, на каком сертификате проверяется подпись (т.е. критерий поиска сертификатов - КПС). Если сертификат берётся из самого файла с подписью, то КПС выглядит так: -f имя_файла. Например, если проверяем подпись файла 23.xml.p7s и известно, что сертификат имеется в этом же файле, то: cryptcp -verify 23.xml.p7s -f 23.xml.p7s Если не нужна проверка сертификата подписавшего: cryptcp -verify 23.xml.p7s -f 23.xml.p7s -nochain Если нужен выходной файл - он указывается в самом конце строки. | ||||
| ||||
Правильно ли я понимаю, что если я просто указываю #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] | ||||
| ||||
Судя по последнему сообщению, в самом сообщении нет сертификатов. Либо не удалось добыть сертификат из сообщения. Вопрос - в какой кодировке подписанный файл - der или base64, если второе - с заголовками или без? | ||||
| ||||
Про кодировки я ничего не знаю, на base64 оно не похоже потому как содержит непечатные символы, насколько я понимаю в base64 их нет. Методом проб и ошибок был найден работающий вариант # /usr/CPROcsp/bin/cryptcp -verify 23.xml.p7s -verall -nochain Спасибо за внимание! | ||||