dstucrypt / agent

47 stars 31 forks source link

Помилка перевірки підпису: хибний підпис #27

Open tarantelot opened 2 years ago

tarantelot commented 2 years ago

Добрий день. Хочу дістати облікові дані платника за адресою https://cabinet.tax.gov.ua/ws/public_api/payer_card. Для цього вимагається додати хедер Authorization ЄДРПОУ/РНОКПП підписаний внутрішнім підписом з додаванням сертифікату в BASE64.

  1. Для підпису ЄДРПОУ використовую наступну команду:
node index.js --sign
    --key key_path:password
    --cert certificate_sign_path
    --input input_path
    --output output_path
    --no-tax
    --include_chain
  1. Конвертую в base64
  2. У відповідь отримую помилку:
    {'error': 'Помилка', 'error_description': 'Помилка перевірки підпису:хибний підпис'}

Підкажіть, будь ласка, в чому проблема. Можливо, у когось є досвід роботи з приватною частиною ЕК. Дякую.


Прикріплюю підписаний файл: 34554363.txt Опис API доступу до інформації приватної частини ЕК: https://cabinet.tax.gov.ua/help/api-registers-int.html

muromec commented 2 years ago

Там з АПІ не дуже зрозуміло шо і як взагалі треба підписувать, тому йой. Можливо треба просто додати tsp та/або ocsp, можливо взагалі не ті дані підписуєте.

muromec commented 2 years ago

На доу пишуть шо треба підписати свій ІПН/ЄДР і включить TSP, але це не точно. Якщо підписуєте файл -- там десь може бути зайвий \n

muromec commented 2 years ago

Подививсь на файл і можу тількі сказати шо починаєтся він з UA1_SIGN, це значить шо параметр --no-tax або не спрацював або команда не зовсім та шо в написана. Підписано наче те шо треба, але ручки --no-tax і --tsp треба посмикать туди-суди

tarantelot commented 2 years ago

Ок, дякую! Буду пробувати різні варіанти!

tarantelot commented 2 years ago

Підписав за допомогою ІІТ, з такими параметрами:

image

Тепер наступна помилка:

{'error': 'Помилка', 'error_description': 'Помилка перевірки підпису: хибний підписант'}

П.С. А який аналог для 'використовувати внутрішній підпис' та 'додавати сертифікат до внутрішнього підпису' у Jkurwa?

sdemonses commented 2 years ago

@Tarasila розібралися з даною проблемою?

nester-sky commented 1 year ago

Мені теж цікава ця тема

tarantelot commented 1 year ago

@sdemonses @nester-sky тоді так нічого і не вдалося. Залишив на потім.

MaximPavl commented 1 year ago

@tarantelot У вас вийшло щось зробити із цим?

irbistwo commented 1 year ago

tarantelot Скажіте а как Ви полпісалі с помощью IIT Это с помощью EsingJava Можно пример кода ?

p2p-sys commented 1 year ago

Є версія, що проблема проявляється, якщо у сертифікаті немає значення 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 якщо його немає?

muromec commented 1 year ago

@p2p-sys можна робити отак: agent --sign --edrpou ...

В принципі edrpou це частина трапспортного пакету (того шо формується з --tax) і не є частиною підпису, то я не дуже розумію що тут коїться взагалі.

Якщо base64 починається з MII, як на скріншоті -- це нормальний CMS без оцих обгорток податкової.

p2p-sys commented 1 year ago

@muromec Ні, це все при відправці на апі кабінету, там немає транспортного пакета

muromec commented 1 year ago

якщо немає транспортного пакету, то куди ви хочете писати ЄДР?

p2p-sys commented 1 year ago

Я не знаю алгоритму на стороні податкової, але дуже схоже, що вони шукають у підписі поле EDRPOU, і якщо його немає воно йде в виняток. Можливо можна якось додати до підписаного документа це поле. Це лише припущення...

muromec commented 1 year ago

Покажіть мені, де в підписі є ЄДРПОУ

p2p-sys commented 1 year ago

Відправив на пошту

tarantelot commented 8 months ago

@p2p-sys то в чому причина, розібрались?

Timm1945 commented 5 months ago

Привіт, поділюся з вами своїм рішенням, можливо ви підкажете що не так або як це зробити простіше. Дійсно такі налаштування вірні, але важливо підтягнути сертифікат з властивостями до вашого ключа Тип: ДСТУ-4145 Призначення: ЕЦП, Неспростовність image тут сертифікат не вказаний з зрозумілих причин image

Основна проблема заключається в тому, що підписувати потрібно не стрінгу в ASCII-8BIT, а ІПН перевести в UTF-16LE і отримане значення вже підписати. image

І це чомусь працює image

Якщо у вас є ідеї, як підписувати ІПН в ASCII-8BIT, велком

muromec commented 5 months ago

Ну то підписуйте в UTF-16, якщо їм треба.

tarantelot commented 1 week ago

Є версія, що проблема проявляється, якщо у сертифікаті немає значення 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 якщо його немає?

А в мене чомусь з підписаним ІПН все працює, а з ЄДРПОУ - помилка.

Ось таку помилку отримую від ДПС для приватівської печатки фопа з ЄДРПОУ:

Помилка Помилка перевірки підпису: хибний підписант, не має права підпису

muromec commented 1 week ago

Чи можна додати в підпис вручну EDRPOU=DRFO якщо його немає?

не можна, але можна обрати інший ключ з пакету

В пріватовських контейнерах лежить по чотири, шість, або вісім ключів, тому треба вказувати role в параметрах щоб воно обрало який надо.

tarantelot commented 1 week ago

Тут тільки 2: image

  1. Digital Signature, Non-Repudiation image

  2. Key Agreement image

Підписую 1-им, ну і сам ЄДРПОУ з 1-го: image

muromec commented 6 days ago

Якщо в сертифікати отакоє потрачено, то з цим зробить нічого не можна.