Добрый день!
В нашей информационной системе (СЭД) метки времени на ЭЦП проверяются отдельно: извлекается из ЭЦП эта метка времени и проверяется почти как обычная CMS-подпись, в том числе проверяется сертификат, с помощью которого эта метка времени сформирована. Проверка выполняется с использованием OCSP-сервиса, адрес которого указан в проверяемом сертификате. При использовании библиотеки KalkanCryptCom GOST2015-TEST (из SDK 27.04.2022) и сервиса “http://test.pki.gov.kz/tsp/” возникают проблемы при проверке таких меток времени:
-
подписываю сертификатом с GOST2015. если обращаться к тестовому TSP (http://test.pki.gov.kz/tsp/) с политикой requestGenerator.SetReqPolicy(“1.2.398.3.3.2.6.4”); то метка времени подписывается сертификатом TSP-сервера, у которого OCSP указан http://test.pki.gov.kz/ocsp/
и при проверке этого сертификата на указанном OCSP возникает ошибка “OCSP: check certificate status: revoked
** certificateSerialNumber=1EB00A00545B72CEEFBCA5FAE4ECA741D97C53BE**
** This Update: 06.06.2022 13:07:53 ALMT**
** Reason: certificateHold**
** Revocation Time: 01.01.1970 09:59:59 ALMT**”, т.е. сертификат отозван без указания даты отзыва
Можете ли “подправить” сертификат тестового TSP для 1.2.398.3.3.2.6.4?
Для проверки можно использовать тестовую утилиту из SDK: после запуска скопировать в первое большое поле значение
MIIDzjCCAzagAwIBAgIUHrAKAFRbcs7vvKX65OynQdl8U74wDgYKKoMOAwoBAQIDAgUAMF0xCzAJBgNVBAYTAktaMU4wTAYDVQQDDEXSsNCb0KLQotCr0pog0JrQo9OY0JvQkNCd0JTQq9Cg0KPQqNCrINCe0KDQotCQ0JvQq9KaIChHT1NUKSBURVNUIDIwMjIwHhcNMjIwNTIzMjEzMzUyWhcNMjIwOTIwMjEzMzUyWjAvMSAwHgYDVQQDDBdUSU1FLVNUQU1QSU5HIEFVVEhPUklUWTELMAkGA1UEBhMCS1owgawwIwYJKoMOAwoBAQICMBYGCiqDDgMKAQECAgEGCCqDDgMKAQMDA4GEAASBgIYiq/BvsINmwytO2iuPU3bAtWciijhpcx1Zje8ii5AmZSyW2id1fsNIrk63CJeM/Qrb3EChdy1Y28IKRB9Wb1xCDctaCCXhDIH4fXat4m+h47Nyu5fSE1u+fiCyBxYiEKMT+j9rUu8Acaq60TLpfb1aoNo63km/B8JtqKaUixEbo4IBqDCCAaQwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMB0GA1UdDgQWBBTEWHOXg7Rj/AZFCt/HhFtv9bj3gzAfBgNVHSMEGDAWgBTZunFbKdVM9whnpTLLX0P93rSzQzA5BgNVHSAEMjAwMC4GByqDDgMDAgYwIzAhBggrBgEFBQcCARYVaHR0cDovL3BraS5nb3Yua3ovY3BzMHcGCCsGAQUFBwEBBGswaTAoBggrBgEFBQcwAYYcaHR0cDovL3Rlc3QucGtpLmdvdi5rei9vY3NwLzA9BggrBgEFBQcwAoYxaHR0cDovL3Rlc3QucGtpLmdvdi5rei9jZXJ0L25jYV9nb3N0MjAyMl90ZXN0LmNlcjBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vdGVzdC5wa2kuZ292Lmt6L2NybC9uY2FfZ29zdDIwMjJfdGVzdC5jcmwwQwYDVR0uBDwwOjA4oDagNIYyaHR0cDovL3Rlc3QucGtpLmdvdi5rei9jcmwvbmNhX2dvc3QyMDIyX2RfdGVzdC5jcmwwDgYKKoMOAwoBAQIDAgUAA4GBABz6LWwbguPpYmpMrr9KuzVWvlxGE+L3BLjjPNOW6ZIRX2Xa9i5f7qr8WsqQdACXt0l6bq0hcR3KC3GOONX12QPPpHS6G+7ASwcrXrfn3d0VflPF40ERjl3KUzn8wswWEwGxIJCIiMHpgbG4kYpA0Yz33dFfKg6SWpH8PekoQyL3
поставить отметку “OCSP” в указать в поле рядом адрес http://test.pki.gov.kz/ocsp/ (этот адрес можно увидеть через https://lapo.it/asn1js, скопировав туда этот текст)
поставить отметку “IN Base64” и нажать “Проверка сертификата”
Еще замечание: кнопка “Информация о сертификате” в тестовой уитлите выдает много строк ERROR 0x8f00038: Get PKI data properties - FAILED. Со “старым” калканом такой проблемы не наблюдалось, но и данным методом калкана kalkanCryptCom.X509CertificateGetInfo уже нигде не пользуемся. -
подписываю “рабочим” сертификатом со “старым” ГОСТ. если обращаться к тестовому TSP (http://test.pki.gov.kz/tsp/) с политикой requestGenerator.SetReqPolicy(“1.2.398.3.3.2.6.1”); то метка времени подписывается сертификатом TSP-сервера, у которого OCSP указан http://ocsp.pki.gov.kz
и при проверке этого сертификата на указанном OCSP возникает ошибка “ERROR 0x8f00056: OCSP - malformed request
** Responder Error: malformedrequest (1)**”, т.е. OCSP не знает про такой сертификат
если подписывать “тестовым” сертификатом со “старым” ГОСТ, то будет тот же самый сертификат TSP и тот же результат.
Можете ли “подправить” сертификат тестового TSP для 1.2.398.3.3.2.6.1?
Для проверки можно использовать тестовую утилиту из SDK: после запуска скопировать в первое большое поле значение
MIIDSjCCAvSgAwIBAgIUYi3dZPx1OXxh0ihTC+7+nhz4cJQwDQYJKoMOAwoBAQECBQAwLjELMAkGA1UEBhMCS1oxHzAdBgNVBAMMFtKw0JrQniAzLjAgKEdPU1QgVEVTVCkwHhcNMjEwMzI1MTAwMzM5WhcNMjQwMzI0MTAwMzM5WjCBjDEvMC0GA1UEAwwm0KHQldCg0JLQmNChINCc0JXQotCa0Jgg0JLQoNCV0JzQldCd0JgxGDAWBgNVBAUTD0lJTjEyMzQ1Njc4OTAxMTELMAkGA1UEBhMCS1oxGDAWBgNVBAoMD9CQ0J4gItCi0JXQodCiIjEYMBYGA1UECwwPQklOMTIzNDU2Nzg5MDIxMGwwJQYJKoMOAwoBAQEBMBgGCiqDDgMKAQEBAQEGCiqDDgMKAQMBAQADQwAEQOW+siihDBJ+nb3ZfFnFlnpqo2peNNtqD3za8vkmc+jda+MLsr0GCwo4SvjsfrQDoGbmEd5rkVV/KUA6C1zYuGSjggF5MIIBdTAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAfBgNVHSMEGDAWgBQHvtIcYAhEVrAnFehXN0NHu9dUUDAdBgNVHQ4EFgQUTj2qAh7V4qfnviMnMWEmfM5nSxMwWAYDVR0fBFEwTzBNoEugSYYiaHR0cDovL2NybC5wa2kuZ292Lmt6L25jYV9nb3N0LmNybIYjaHR0cDovL2NybDEucGtpLmdvdi5rei9uY2FfZ29zdC5jcmwwXAYDVR0uBFUwUzBRoE+gTYYkaHR0cDovL2NybC5wa2kuZ292Lmt6L25jYV9kX2dvc3QuY3JshiVodHRwOi8vY3JsMS5wa2kuZ292Lmt6L25jYV9kX2dvc3QuY3JsMGMGCCsGAQUFBwEBBFcwVTAvBggrBgEFBQcwAoYjaHR0cDovL3BraS5nb3Yua3ovY2VydC9uY2FfZ29zdC5jZXIwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5nb3Yua3owDQYJKoMOAwoBAQECBQADQQBIJ8RxsB0NH84VeHJiZD20tQVJIuyip6J5MOyQG/U+0hK6iCbQ/2KW8giT2a7MZJ+iN6nVTgM/sImqsNigKPHn
поставить отметку “OCSP” в указать в поле рядом адрес http://ocsp.pki.gov.kz/ (этот адрес можно увидеть через https://lapo.it/asn1js, скопировав туда этот текст)
поставить отметку “IN Base64” и нажать “Проверка сертификата” -
доработал тестовую утилиту из “SDK 2022-04-27\SDK 2.0\GOST2015-TEST\COM-lib\KalkanCryptTest_CSharp”, добавил KalkanCOMTest.TSASetUrl(“http://test.pki.gov.kz/tsp/”) перед подписанием при наличии галочки о необходимости добавить метку времени. Если подписывать сертификатом со старым ГОСТ-алгоритмом (стоят галочки OUT Base64 и “Добавить метку времени в подпись”), то политика ставится 1.2.398.3.3.2.6.1, а если сертификатом с новым ГОСТ-алгоритмом, то 1.2.398.3.3.2.6.4. Сертификаты сервиса штампов времени те же самые, что в п.1 и п.2. Обычная проверка CMS-подписи Калканом не проверяет действительность сертификата. в тестовой утилите, если сформировать CMS-подпись с меткой времени сертификатом со старым ГОСТ (стоят галочки OUT Base64 и “Добавить метку времени в подпись”), то проверка CMS (дополнительно к тем галочкам стоит галочка In base64) успешная (не обращает внимания на недействительность сертификата TSP). Если в тестовой утилите сформировать CMS-подпись с меткой времени сертификатом с новым ГОСТ, то при проверке ошибка: " Error: 0x08F00054
ERROR 0x8f00054: Verify Data - failed to verify TimeStamp Hash.
Signature N 1
- CAdES-BES: verify signer certificate hash - OK.
CMS Verify - FAILED."
То есть для нового алгоритма еще проверка CMS не работает.
Можете ли доработать проверку CMS в библиотеке Калкан, чтобы не было ошибки при проверке метки времени для подписей для указанной ситуации? -
При использовании рабочего сервиса “http://tsp.pki.gov.kz” и подписании сертификатом со старым ГОСТ проблем нет. А при использовании сертификата с новым ГОСТ вызов TSP с политикой 1.2.398.3.3.2.6.4 выдает пустой ответ. Тестовая утилита тоже “ломается” при использовании “рабочего” TSP с установленной отметкой “Добавить метку времени в подпись” при подписании сертификатом с новым ГОСТ.
Когда планируется добавить поддержку 1.2.398.3.3.2.6.4 в “рабочем” TSP?