SUPPORT-9332. Добавлена специальная обработка ошибок при проверке цепочки сертификатов

This commit is contained in:
Наиля Алашкова 2025-08-19 11:40:27 +03:00
parent fc0a184a89
commit f53d4f86a5
11 changed files with 266 additions and 125 deletions

View file

@ -4,7 +4,7 @@
- подпись данных
- проверка подписи маркера доступа
### Подпись данных
## Подпись данных
Приложение принимает POST-запрос по протоколу FastCGI (Content-Type: text/plain).
C помощью ДСЧ генерирует state - набор случайных символов, генерируется по стандарту UUID.
@ -36,14 +36,14 @@ $ /opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/sign -H "Content-Type: text/pl
}
```
### Проверка подписи маркера доступа
## Проверка подписи маркера доступа
Приложение принимает POST-запрос по протоколу FastCGI (Content-Type: text/plain).
Проверяет подпись маркера доступа, полученного в теле запроса.
В ответе возвращает один из следующих статус-кодов:
- 200 OK - подпись валидна
- 401 Unauthorized - подпись невалидна (в теле ответа возвращается код ошибки от криптопровайдера)
- 500 Internal Server Error - внутренняя ошибка сервера
- `200 OK`- подпись валидна
- `401 Unauthorized` - подпись невалидна (в теле ответа возвращается код ошибки от криптопровайдера)
- `500 Internal Server Error` - внутренняя ошибка сервера (подробнее см. в `Обработка ошибок`)
Пример выполнения запроса:
```
@ -65,6 +65,24 @@ $ /opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/verify -H "Content-Type: text/
<
```
## Обработка ошибок
В случае ошибки сервер возвращает ответ со статус-кодом `500 Internal Server Error` и телом в формате JSON, содержащим поле `error_code`.
Пример ответа:
```json
{
"error_code": "CERT_TRUST_REVOCATION_STATUS_UNKNOWN"
}
```
### Возможные коды ошибок (`error_code`)
| Код | Описание |
|-----------------------------------------|----------|
| `CERT_TRUST_REVOCATION_STATUS_UNKNOWN` | Неизвестен статус отзыва сертификата или одного из сертификатов в цепочке (проблема с CRL) |
| `CERT_TRUST_IS_UNTRUSTED_ROOT` | Сертификат или цепочка сертификатов основана на ненадежном корневом сертификате |
| `CERT_TRUST_IS_NOT_TIME_VALID` | Этот сертификат или один из сертификатов в цепочке сертификатов является недопустимым по времени |
## Сборка из исходников
Инструкции по сборке из исходников см. "Инструкция по сборке.md"
@ -116,5 +134,3 @@ export SIGN_LOG_TIME=on
```
unset SIGN_LOG_TIME
```