Помилка перевірки підпису: хибний підпис
Opened this issue · 24 comments
Добрий день. Хочу дістати облікові дані платника за адресою https://cabinet.tax.gov.ua/ws/public_api/payer_card. Для цього вимагається додати хедер Authorization ЄДРПОУ/РНОКПП підписаний внутрішнім підписом з додаванням сертифікату в BASE64.
- Для підпису ЄДРПОУ використовую наступну команду:
node index.js --sign
--key key_path:password
--cert certificate_sign_path
--input input_path
--output output_path
--no-tax
--include_chain
- Конвертую в base64
- У відповідь отримую помилку:
{'error': 'Помилка', 'error_description': 'Помилка перевірки підпису:хибний підпис'}
Підкажіть, будь ласка, в чому проблема. Можливо, у когось є досвід роботи з приватною частиною ЕК. Дякую.
Прикріплюю підписаний файл:
34554363.txt
Опис API доступу до інформації приватної частини ЕК:
https://cabinet.tax.gov.ua/help/api-registers-int.html
Там з АПІ не дуже зрозуміло шо і як взагалі треба підписувать, тому йой. Можливо треба просто додати tsp та/або ocsp, можливо взагалі не ті дані підписуєте.
На доу пишуть шо треба підписати свій ІПН/ЄДР і включить TSP, але це не точно. Якщо підписуєте файл -- там десь може бути зайвий \n
Подививсь на файл і можу тількі сказати шо починаєтся він з UA1_SIGN, це значить шо параметр --no-tax
або не спрацював або команда не зовсім та шо в написана. Підписано наче те шо треба, але ручки --no-tax
і --tsp
треба посмикать туди-суди
Ок, дякую! Буду пробувати різні варіанти!
@Tarasila розібралися з даною проблемою?
Мені теж цікава ця тема
@sdemonses @nester-sky тоді так нічого і не вдалося. Залишив на потім.
@tarantelot У вас вийшло щось зробити із цим?
tarantelot Скажіте а как Ви полпісалі с помощью IIT Это с помощью EsingJava Можно пример кода ?
Є версія, що проблема проявляється, якщо у сертифікаті немає значення EDRPOU. Ось два ключі, один пропускається податковою і надходить потрібна відповідь, по другому помилка "Помилка перевірки підпису:хибний підпис'"
Цей працює
'organizationName': 'ФОП ШЕВЧЕНКО', 'title': 'КЕРІВНИК', 'commonName': 'ШЕВЧЕНКО'
': {'ipn': {'EDRPOU': '3173911188', 'DRFO': '3173911188', '1,2,804,2,1,1,1,11,1,4,7,1': '0'}
А тому помилка
{'organizationName': 'ФІЗИЧНА ОСОБА', 'commonName': 'ШЕВЧЕНКО'
{'ipn': {'DRFO': '3231901452', '1,2,804,2,1,1,1,11,1,4,7,1': '0'}
@muromec Чи можна додати в підпис вручну EDRPOU=DRFO якщо його немає?
@p2p-sys можна робити отак: agent --sign --edrpou ...
В принципі edrpou це частина трапспортного пакету (того шо формується з --tax
) і не є частиною підпису, то я не дуже розумію що тут коїться взагалі.
Якщо base64 починається з MII, як на скріншоті -- це нормальний CMS без оцих обгорток податкової.
якщо немає транспортного пакету, то куди ви хочете писати ЄДР?
Я не знаю алгоритму на стороні податкової, але дуже схоже, що вони шукають у підписі поле EDRPOU, і якщо його немає воно йде в виняток. Можливо можна якось додати до підписаного документа це поле. Це лише припущення...
Покажіть мені, де в підписі є ЄДРПОУ
Відправив на пошту
@p2p-sys то в чому причина, розібрались?
Привіт, поділюся з вами своїм рішенням, можливо ви підкажете що не так або як це зробити простіше.
Дійсно такі налаштування вірні, але важливо підтягнути сертифікат з властивостями до вашого ключа
Тип: ДСТУ-4145
Призначення: ЕЦП, Неспростовність
тут сертифікат не вказаний з зрозумілих причин
Основна проблема заключається в тому, що підписувати потрібно не стрінгу в ASCII-8BIT, а ІПН перевести в UTF-16LE і отримане значення вже підписати.
Якщо у вас є ідеї, як підписувати ІПН в ASCII-8BIT, велком
Ну то підписуйте в UTF-16, якщо їм треба.
Є версія, що проблема проявляється, якщо у сертифікаті немає значення EDRPOU. Ось два ключі, один пропускається податковою і надходить потрібна відповідь, по другому помилка "Помилка перевірки підпису:хибний підпис'" Цей працює 'organizationName': 'ФОП ШЕВЧЕНКО', 'title': 'КЕРІВНИК', 'commonName': 'ШЕВЧЕНКО' ': {'ipn': {'EDRPOU': '3173911188', 'DRFO': '3173911188', '1,2,804,2,1,1,1,11,1,4,7,1': '0'}
А тому помилка {'organizationName': 'ФІЗИЧНА ОСОБА', 'commonName': 'ШЕВЧЕНКО' {'ipn': {'DRFO': '3231901452', '1,2,804,2,1,1,1,11,1,4,7,1': '0'}
@muromec Чи можна додати в підпис вручну EDRPOU=DRFO якщо його немає?
А в мене чомусь з підписаним ІПН все працює, а з ЄДРПОУ - помилка.
Ось таку помилку отримую від ДПС для приватівської печатки фопа з ЄДРПОУ:
Помилка
Помилка перевірки підпису: хибний підписант, не має права підпису
Чи можна додати в підпис вручну EDRPOU=DRFO якщо його немає?
не можна, але можна обрати інший ключ з пакету
В пріватовських контейнерах лежить по чотири, шість, або вісім ключів, тому треба вказувати role
в параметрах щоб воно обрало який надо.
Якщо в сертифікати отакоє потрачено, то з цим зробить нічого не можна.