Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2021(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Воронеж
|
В рамках интеграции с ЕБС(https://bio.rt.ru/), нам необходимо проверять JWT токен. ЕБС формирует JWT токен и подписывает его собственным сертификатом(подпись приходит в формате CAdES-T). У нас имеется открытый ключ данного сертификата и мы хотим проверить подпись данного JWT токен. Пример токена: Код:
eyJraWQiOiJmOGJjOTA1MS1jNTk1LTRmNWMtOTAyMS1kNzdmMWM2YWU3NmMiLCJ0eXAiOiJKV1QiLCJhbGciOiJHT1NUMzQxMF8yMDEyXzI1NiJ9.eyJyZXN1bHQiOnRydWUsInN1YiI6IjEwMDA1MzA1NDMiLCJhdWQiOiI4NDk1MDMiLCJuYmYiOjE2NDAxNzIyNjIsImlzcyI6IlVCU19ERVYiLCJtYXRjaCI6IntcIm92ZXJhbGxcIjowLjk5OTk5OTk5OTk0NDM1MTgsXCJmYWNlXCI6MC45OTk5OTkwMjIsXCJ2b2ljZVwiOjAuOTk5OTQzMX0iLCJleHAiOjE2NDAxNzI4NjMsImlhdCI6MTY0MDE3MjI2MX0=.MIAGCSqGSIb3DQEHAqCAMIACAQExDjAMBggqhQMHAQECAgUAMIAGCSqGSIb3DQEHAQAAMYIRmTCCEZUCAQEwggFVMIIBPzEYMBYGBSqFA2QBEg0xMDI3NzAwMTk4NzY3MRowGAYIKoUDA4EDAQESDDAwNzcwNzA0OTM4ODELMAkGA1UEBhMCUlUxKTAnBgNVBAgMIDc4INCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMSYwJAYDVQQHDB3QodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQszFYMFYGA1UECQxPMTkxMDAyLCDQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMsINGD0LsuINCU0L7RgdGC0L7QtdCy0YHQutC-0LPQviDQtC4xNTEmMCQGA1UECgwd0J_QkNCeICLQoNC-0YHRgtC10LvQtdC60L7QvCIxJTAjBgNVBAMMHNCi0LXRgdGC0L7QstGL0Lkg0KPQpiDQoNCi0JoCECuzywBErau7QFoSdvZhrpQwDAYIKoUDBwEBAgIFAKCCAfswGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAvBgkqhkiG9w0BCQQxIgQgGtqUIQI2QJaPbxl_Pjp45VmUD9vlva8MR7KpBKOcbwQwggGsBgsqhkiG9w0BCRACLzGCAZswggGXMIIBkzCCAY8wCgYIKoUDBwEBAgIEIFwkW3Ug8Xmy3XcSw7PwLqPIPQ3-aRiW3kWdrUzA2HvwMIIBXTCCAUekggFDMIIBPzEYMBYGBSqFA2QBEg0xMDI3NzAwMTk4NzY3MRowGAYIKoUDA4EDAQESDDAwNzcwNzA0OTM4ODELMAkGA1UEBhMCUlUxKTAnBgNVBAgMIDc4INCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMSYwJAYDVQQHDB3QodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQszFYMFYGA1UECQxPMTkxMDAyLCDQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMsINGD0LsuINCU0L7RgdGC0L7QtdCy0YHQutC-0LPQviDQtC4xNTEmMCQGA1UECgwd0J_QkNCeICLQoNC-0YHRgtC10LvQtdC60L7QvCIxJTAjBgNVBAMMHNCi0LXRgdGC0L7QstGL0Lkg0KPQpiDQoNCi0JoCECuzywBErau7QFoSdvZhrpQwCgYIKoUDBwEBBgEEQJ7LnctkvvZgOcb9upoZdH1d6usWFiaDMSmAZxtk_DlIylaGJg7unmU9dah3YthlpW3gfgpE2c3p-eNJvHdxKdKhgg3aMIIN1gYLKoZIhvcNAQkQAg4xgg3FMIINwQYJKoZIhvcNAQcCoIINsjCCDa4CAQMxDjAMBggqhQMHAQECAgUAMHMGCyqGSIb3DQEJEAEEoGQEYjBgAgEBBgEpMDAwDAYIKoUDBwEBAgIFAAQgEIvgn1nKabbm1EHKmDrklHZRIif1D6-qgwkNeSAaxqkCDQovZC2OAAAAAAAJCOUYDzIwMjExMjIyMTEyNDM2WgIGAX3h4psOoIIHxzCCB8MwggdwoAMCAQICEF7ImQAfrfS_SrTwseJ23g8wCgYIKoUDBwEBAwIwggE_MRgwFgYFKoUDZAESDTEwMjc3MDAxOTg3NjcxGjAYBggqhQMDgQMBARIMMDA3NzA3MDQ5Mzg4MQswCQYDVQQGEwJSVTEpMCcGA1UECAwgNzgg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxJjAkBgNVBAcMHdCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMVgwVgYDVQQJDE8xOTEwMDIsINCzLiDQodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQsywg0YPQuy4g0JTQvtGB0YLQvtC10LLRgdC60L7Qs9C-INC0LjE1MSYwJAYDVQQKDB3Qn9CQ0J4gItCg0L7RgdGC0LXQu9C10LrQvtC8IjElMCMGA1UEAwwc0KLQtdGB0YLQvtCy0YvQuSDQo9CmINCg0KLQmjAeFw0yMTA1MDUwOTA5NTVaFw0yMjA1MDUwOTE5NTVaMIIBMzEbMBkGCSqGSIb3DQEJAgwMT3BlcmF0b3JfVFNQMRowGAYIKoUDA4EDAQESDDAwNzcwNzA0OTM4ODEYMBYGBSqFA2QBEg0xMDI3NzAwMTk4NzY3MSYwJAYDVQQKDB3Qn9CQ0J4gItCg0L7RgdGC0LXQu9C10LrQvtC8IjEuMCwGA1UECQwl0YPQuy4g0JTQvtGB0YLQvtC10LLRgdC60L7Qs9C-LCDQtC4xNTEmMCQGA1UEBwwd0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxKTAnBgNVBAgMIDc4INCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMQswCQYDVQQGEwJSVTEmMCQGA1UEAwwd0J_QkNCeICLQoNC-0YHRgtC10LvQtdC60L7QvCIwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARALV1L01FLsMKw9KjwL5OD_Q37-SiRmnv208sDipcG0Yqgd7eRi65XFYlXpW5zm5x3BOcWokgNPSRm3JYsqTQTIKOCBEcwggRDMA4GA1UdDwEB_wQEAwIGwDAdBgNVHQ4EFgQUH2U-OzZ769XWdP9PyCuxvEv14UYwFgYDVR0lAQH_BAwwCgYIKwYBBQUHAwgwUwYIKwYBBQUHAQEERzBFMEMGCCsGAQUFBzAChjdodHRwOi8vY2VydGVucm9sbC50ZXN0Lmdvc3VzbHVnaS5ydS9jZHAvdGVzdF9jYV9ydGsuY2VyMB0GA1UdIAQWMBQwCAYGKoUDZHEBMAgGBiqFA2RxAjArBgNVHRAEJDAigA8yMDIxMDUwNTA5MDk1NVqBDzIwMjIwNTA1MDkwOTU1WjCCATQGBSqFA2RwBIIBKTCCASUMKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuOSkMLCLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIgKNCy0LXRgNGB0LjQuCAyLjApDGPQodC10YDRgtC40YTQuNC60LDRgiDRgdC-0L7RgtCy0LXRgtGB0YLQstC40Y8g0KTQodCRINCg0L7RgdGB0LjQuCDihJYg0KHQpC8xMjQtMjUzOSDQvtGCIDE1LjAxLjIwMTUMY9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDQpNCh0JEg0KDQvtGB0YHQuNC4IOKEliDQodCkLzEyOC0yODgxINC-0YIgMTIuMDQuMjAxNjA2BgUqhQNkbwQtDCsi0JrRgNC40L_RgtC-0J_RgNC-IENTUCIgKNCy0LXRgNGB0LjRjyAzLjkpMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9jZXJ0ZW5yb2xsLnRlc3QuZ29zdXNsdWdpLnJ1L2NkcC80ODEwYWYwZjVkZGM5OTI0NzZmN2JmMGRkYTRiN2QwZGQ5NGNlMWY3LmNybDCCAYAGA1UdIwSCAXcwggFzgBRIEK8PXdyZJHb3vw3aS30N2Uzh96GCAUekggFDMIIBPzEYMBYGBSqFA2QBEg0xMDI3NzAwMTk4NzY3MRowGAYIKoUDA4EDAQESDDAwNzcwNzA0OTM4ODELMAkGA1UEBhMCUlUxKTAnBgNVBAgMIDc4INCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMSYwJAYDVQQHDB3QodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQszFYMFYGA1UECQxPMTkxMDAyLCDQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMsINGD0LsuINCU0L7RgdGC0L7QtdCy0YHQutC-0LPQviDQtC4xNTEmMCQGA1UECgwd0J_QkNCeICLQoNC-0YHRgtC10LvQtdC60L7QvCIxJTAjBgNVBAMMHNCi0LXRgdGC0L7QstGL0Lkg0KPQpiDQoNCi0JqCEHILAVZQABCz6BGkaEvrr_swCgYIKoUDBwEBAwIDQQB6KnrMPAjBrZIHLxJiuphY6jtc4MG0l0EqnXdtxQurUmKc7a8VTQMJQ4df2xpzRPfbK2ahiwTvojwOYaGgd387MYIFVzCCBVMCAQEwggFVMIIBPzEYMBYGBSqFA2QBEg0xMDI3NzAwMTk4NzY3MRowGAYIKoUDA4EDAQESDDAwNzcwNzA0OTM4ODELMAkGA1UEBhMCUlUxKTAnBgNVBAgMIDc4INCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMSYwJAYDVQQHDB3QodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQszFYMFYGA1UECQxPMTkxMDAyLCDQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMsINGD0LsuINCU0L7RgdGC0L7QtdCy0YHQutC-0LPQviDQtC4xNTEmMCQGA1UECgwd0J_QkNCeICLQoNC-0YHRgtC10LvQtdC60L7QvCIxJTAjBgNVBAMMHNCi0LXRgdGC0L7QstGL0Lkg0KPQpiDQoNCi0JoCEF7ImQAfrfS_SrTwseJ23g8wDAYIKoUDBwEBAgIFAKCCA5UwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCCkETOD_DBo-vTbdquKNUmk5OIkydlGW5PplpT6XAyqdTCCAZQGCyqGSIb3DQEJEAIMMYIBgzCCAX8wggF7MIIBdwQULw_wwPCEUtSns2-JvJMrIB04o_YwggFdMIIBR6SCAUMwggE_MRgwFgYFKoUDZAESDTEwMjc3MDAxOTg3NjcxGjAYBggqhQMDgQMBARIMMDA3NzA3MDQ5Mzg4MQswCQYDVQQGEwJSVTEpMCcGA1UECAwgNzgg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxJjAkBgNVBAcMHdCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMVgwVgYDVQQJDE8xOTEwMDIsINCzLiDQodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQsywg0YPQuy4g0JTQvtGB0YLQvtC10LLRgdC60L7Qs9C-INC0LjE1MSYwJAYDVQQKDB3Qn9CQ0J4gItCg0L7RgdGC0LXQu9C10LrQvtC8IjElMCMGA1UEAwwc0KLQtdGB0YLQvtCy0YvQuSDQo9CmINCg0KLQmgIQXsiZAB-t9L9KtPCx4nbeDzCCAawGCyqGSIb3DQEJEAIvMYIBmzCCAZcwggGTMIIBjzAKBggqhQMHAQECAgQgtzokQeIdTgX-penLBljzvD-fL1vHMw-bahg9CjrsD8gwggFdMIIBR6SCAUMwggE_MRgwFgYFKoUDZAESDTEwMjc3MDAxOTg3NjcxGjAYBggqhQMDgQMBARIMMDA3NzA3MDQ5Mzg4MQswCQYDVQQGEwJSVTEpMCcGA1UECAwgNzgg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxJjAkBgNVBAcMHdCh0LDQvdC60YIt0J_QtdGC0LXRgNCx0YPRgNCzMVgwVgYDVQQJDE8xOTEwMDIsINCzLiDQodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQsywg0YPQuy4g0JTQvtGB0YLQvtC10LLRgdC60L7Qs9C-INC0LjE1MSYwJAYDVQQKDB3Qn9CQ0J4gItCg0L7RgdGC0LXQu9C10LrQvtC8IjElMCMGA1UEAwwc0KLQtdGB0YLQvtCy0YvQuSDQo9CmINCg0KLQmgIQXsiZAB-t9L9KtPCx4nbeDzAMBggqhQMHAQEBAQUABEBABGYimaSvWjOPy9Pncr25B-ptxMG3O78Y7q27yLhQjAzJhgYt7xZ9maugDF3XqiJorHaftUV6Kw6TZf1csvvbAAAAAAAA
Данный токен формируется одним из двух сертификатов, что я приложил в архиве ![](/forum2/Themes/soclean/icon_file.gif) sertifikaty EBS.zip (4kb) загружен 9 раз(а).Для валидации подписи в JWT токене мы используем следующий код(на основе примера из файла samples-sources.jar в папке CAdES файл VerifyExample.java): Код:
boolean validate(String token, X509Certificate certificate) {
String[] tokenParts = token.split("\\.");
String header = tokenParts[0];
String payload = tokenParts[1];
String headerWithPayload = header + "." + payload;
byte[] tokenSign = Base64.getUrlDecoder().decode(tokenParts[2]);
try {
CAdESSignature cAdESSignature = new CAdESSignature(tokenSign, headerWithPayload.getBytes(StandardCharsets.UTF_8), null);
cAdESSignature.verify(Collections.singleton(certificate));
return true;
} catch (CAdESException e) {
e.printStackTrace();
}
return false;
}
В результате выполнения данного кода нам возвращается ошибка: Код:
Caused by: ru.CryptoPro.CAdES.exception.TimeStampValidationException: Timestamp is invalid
at ru.CryptoPro.CAdES.CAdESSignerTImpl.d(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.CryptoPro.CAdES.CAdESSignerTImpl.verify(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.rencredit.services.crypto_pro.crypto.operation.JWTVerify.execute(JWTVerify.java:52) ~[
Подскажите в чем может ошибка? Возможно необходимо проверять подпись JWT токена по другому?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,489 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2246 раз в 1752 постах
|
Здравствуйте. 0. ..verify(Collections.singleton(certificate)); - а не нужно еще и корневой передавать, чтобы проверить сертификат TSP? 1. Хеш в CMS указан: 1ADA9421023640968F6F197F3E3A78E559940FDBE5BDAF0C47B2A904A39C6F04, сходится 2. Дата и время подписания: не указана, но есть в штампе времени (id политики... указано: 1.1 ) 3. Алгоритм подписи: ГОСТ Р 34.10-2012 DH 256 бит, JWT:{"kid":"f8bc9051-c595-4f5c-9021-d77f1c6ae76c","typ":"JWT","alg":"GOST3410_2012_256"} ![](/forum2/Themes/soclean/icon_file.gif) Snimok ehkrana ot 2021-12-29 03-10-01.png (27kb) загружен 17 раз(а).![](/forum2/Themes/soclean/icon_file.gif) Snimok ehkrana ot 2021-12-29 03-09-44.png (25kb) загружен 17 раз(а).![](/forum2/Themes/soclean/icon_file.gif) Snimok ehkrana ot 2021-12-29 03-10-51.png (41kb) загружен 18 раз(а).Отредактировано пользователем 29 декабря 2021 г. 2:20:27(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2021(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Воронеж
|
Андрей, то есть если мы добавим еще и корневой сертификат в verify, то проверка будет успешна?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,489 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2246 раз в 1752 постах
|
Автор: oleg172 ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Андрей, то есть если мы добавим еще и корневой сертификат в verify, то проверка будет успешна? Проверьте. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2021(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Воронеж
|
Проверили с рутовым сертификатом ![](/forum2/Themes/soclean/icon_file.gif) Sertifikat-dlya-proverki-shtampa-vremeni-pri-poluchenii-rasshirennogo-rezultata-verifikatsii-v-formate-CAdES_T-dlya-testovogo-kontura.zip (3kb) загружен 6 раз(а).Ошибка точно такая же: Timestamp is invalid Возможно подпись CADES_T нужно как то по другому проверять?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Корневой сертификат службы штампов установлен в cacerts? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2021(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Воронеж
|
Евгений, добрый день. Мы не устанавливали корневой сертификат службы штампов в cacerts. Корневой сертификат службы штампов - это рутовый сертификат(я прикладывал его ранее)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Полагаю, да, корневой из архива. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2021(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Воронеж
|
Загрузил корневой сертификат в Java\jdk-11.0.11\lib\security\cacerts (для локального тестирования), как итог имеем ту же самую ошибку: Код:
Caused by: ru.CryptoPro.CAdES.exception.TimeStampValidationException: Timestamp is invalid
at ru.CryptoPro.CAdES.CAdESSignerTImpl.d(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.CryptoPro.CAdES.CAdESSignerTImpl.verify(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source) ~[CAdES-1.0.jar:41940-A]
at ru.rencredit.services.crypto_pro.crypto.operation.JWTVerify.execute(JWTVerify.java:52) ~[
Подскажите как правильно загружать корневой сертификат в cacerts. Для локального тестирования я его загружал через программу `KeyStore Explorer`. Возможно его необходимо загружать непосредственно в коде перед выполнением проверки CAdES-T подписи?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close