Первым шагом в процессе устранения ошибок является понимание того, откуда возникло сообщение об ошибке. Поэтому важно знать, какие компоненты участвуют в потоке сообщений:
Сообщения об ошибках могут генерироваться Серверами безопасности (2, 3) или информационной системой поставщика услуг (4). Сообщения об ошибках, генерируемые Security Server, имеют фиксированную структуру, зависящую от интерфейса (SOAP/REST). Однако сообщения об ошибках SOAP и REST содержат одну и ту же информацию независимо от интерфейса обмена сообщениями. Сообщения об ошибках, генерируемые Security Server, содержат три поля:
Например, сообщение об ошибке, сгенерированное прокси-сервером клиента на Security Server (2) на стороне потребителя:
{ "type":"Server.ClientProxy.SslAuthenticationFailed", "message":"Client (SUBSYSTEM:PLAYGROUND/COM/1234567-8/TestClient) specifies HTTPS but did not supply TLS certificate", "detail":"2ea02d93-e0b8-4e2b-8c6e-fac20f53a3e3" }
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <error> <type>Server.ClientProxy.SslAuthenticationFailed</type> <message>Client (SUBSYSTEM:PLAYGROUND/COM/1234567-8/TestClient) specifies HTTPS but did not supply TLS certificate</message> <detail>2ea02d93-e0b8-4e2b-8c6e-fac20f53a3e3</detail> </error>
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>Server.ClientProxy.SslAuthenticationFailed</faultcode> <faultstring>Client (SUBSYSTEM:PLAYGROUND/COM/1234567-8/TestClient) specifies HTTPS but did not supply TLS certificate</faultstring> <faultactor /> <detail> <faultDetail>b782c3a4-f279-43d1-8684-2af318ec2ca5</faultDetail> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Также могут возникать ошибки в информационной системе поставщика услуг (4). В этом случае поставщик услуг (4) может вернуть любое пользовательское сообщение об ошибке, если оно соответствует протоколу сообщений X-Road. В случае, если сообщение об ошибке возвращается и не соответствует структуре, представленной выше, ошибка была сгенерирована информационной системой поставщика услуг (4).
В таблице ниже приведены наиболее распространенные сообщения об ошибках, исходящие от Security Server (2) на стороне потребителя, и их описания.
Код ошибки (тип/код ошибки) | Сообщение об ошибке (message/faultString) | Описание |
Server.ClientProxy.UnknownMember | Запрос содержит недопустимый идентификатор клиента или службы. | |
Client 'SUBSYSTEM:instanceIdentifier/memberClass/memberCode/subsystemCode' not found | В случае, если клиент не найден, клиент, указанный в запросе, не зарегистрирован на Сервере безопасности на стороне потребителя (2). Подробнее о регистрации клиентов можно узнать тут Регистрация клиента сервера безопасности | |
Could not find addresses for service provider 'SERVICE:instanceIdentifier/memberClass/memberCode/subsystemCode/serviceCode' | В случае, если адреса для поставщика услуг не найдены, в идентификаторе услуги есть ошибка. Убедитесь, что значение идентификатора услуги в запросе верное и соответствует информации, зарегистрированной на Сервере безопасности поставщика услуги (3). | |
Server.ClientProxy.NetworkError | ||
Could not connect to any target host https://TARGET_HOST:5500 | Сервер безопасности на стороне потребителя (2) не может установить сетевое соединение с сервером безопасности на стороне поставщика (3). Проблема обычно вызвана неправильными настройками брандмауэра. На стороне потребителя Security Server (2) должен быть разрешен исходящий трафик на порты 5500 и 5577 Security Server (3) на стороне провайдера. На стороне провайдера Security Server (3) должен быть разрешен входящий трафик на порты 5500 и 5577 от Security Server (2) на стороне потребителя. Дополнительную информацию о необходимых конфигурациях брандмауэра можно найти в руководствах по установке Security Server для Ubuntu - https://github.com/nordic-institute/X-Road/blob/develop/doc/Manuals/ig-ss_x-road_v6_security_server_installation_guide.md#221-network-diagram. | |
Name or service not known. No address associated with hostname. | Поиск DNS на стороне провайдера Security Server (3) завершается ошибкой, так как сервер зарегистрирован с неправильным общедоступным полным доменным именем. Свяжитесь с администратором Security Server на стороне провайдера (3). | |
Server.ClientProxy.CannotCreateSignature.Signer.TokenNotActive | Token 'softToken' неактивен | Решение проблемы |
Server.ClientProxy.ServiceFailed.InternalError | Причина ошибки, например: Invalid instance identifier: instanceIdentifier | Обработка запроса не удалась из-за внутренней ошибки на сервере Security Server (2) на стороне потребителя. Подробности смотрите в журнале приложений прокси (2) (/var/log/xroad/proxy.log). Если требуется более подробное ведение журнала, настройте прокси (2) Как изменить уровень логирования на Security Server |
Server.ClientProxy.SslAuthenticationFailed | ||
Security server has no valid authentication certificate | Сервер безопасности на стороне потребителя (2) не имеет действительного сертификата проверки подлинности. Сертификат проверки подлинности может не существовать, он может быть отключен, может быть не зарегистрирован или не иметь действительного статуса OCSP. Чтобы устранить проблему, попробуйте выполнить следующие действия: 1. Убедитесь, что сертификат аутентификации импортирован на Security Server (2). 2. Убедитесь, что сертификат активен. 3. Убедитесь, что сертификат зарегистрирован. 4. Если статус OCSP сертификата аутентификации не находится в «GOOD» состоянии, сервер безопасности (2) не может использовать сертификат. Статус OCSP можно проверить в представлении «Keys and certificates» Security Server (2). 5. Убедитесь, что программный токен, содержащий сертификат проверки подлинности, доступен и выполнен вход в систему. Состояние токена можно проверить в представлении «Ключи и сертификаты» на сервере безопасности (2). Как ввести Security Server PIN code? | |
Service provider did not send correct authentication certificate | Сервер безопасности на стороне провайдера (3) не имеет действительного сертификата проверки подлинности. Сертификат проверки подлинности может не существовать, он может быть отключен, может быть не зарегистрирован или не иметь действительного статуса OCSP. Чтобы устранить проблему, попробуйте выполнить следующие действия: 1. Убедитесь, что сертификат аутентификации импортирован на Security Server (2). 2. Убедитесь, что сертификат активен. 3. Убедитесь, что сертификат зарегистрирован. 4. Если статус OCSP сертификата аутентификации не находится в «GOOD» состоянии, сервер безопасности (2) не может использовать сертификат. Статус OCSP можно проверить в представлении «Keys and certificates» Security Server (2). 5. Убедитесь, что программный токен, содержащий сертификат проверки подлинности, доступен и выполнен вход в систему. Состояние токена можно проверить в представлении «Ключи и сертификаты» на сервере безопасности (2). Как ввести Security Server PIN code? Кроме того, сертификат проверки подлинности, возвращенный Security Server (3) на стороне провайдера, не совпадает с сертификатом проверки подлинности, который был зарегистрирован на этом сервере Security Server в глобальной конфигурации. Это может произойти, когда Security Server (3) на стороне провайдера использует внешний балансировщик нагрузки, который не настроен для использования сквозного SSL. | |
Client (SUBSYSTEM:instanceIdentifier/memberClass/memberCode/subsystemCode) specifies HTTPS but did not supply TLS certificate | Клиент указывает HTTPS, но не предоставил сертификат TLS | |
Client (SUBSYSTEM:instanceIdentifier/memberClass/memberCode/subsystemCode) specifies HTTPS NO AUTH but client made plaintext connection | Тип подключения клиентской подсистемы, используемой потребителем службы (1), установлен на HTTPS NO AUTH на сервере Security Server (2) на стороне потребителя, но потребитель службы (1) попытался установить соединение по протоколу http. Тип соединения HTTPS NO AUTH принудительно использует https, но клиентский TLS-сертификат не проверяется Security Server (2). Другими словами, https используется без взаимной аутентификации TLS (mTLS). | |
Server.ClientProxy.IOError | Could not find any certificates for member SUBSYSTEM:instanceIdentifier/memberClass/memberCode/subsystemCode. Are you sure tokens containing the certifications are logged in? | Участник, владеющий подсистемой, используемой в качестве клиента запроса, не имеет действительного сертификата подписи на сервере Security Server (2) на стороне потребителя. Сертификат подписи может не существовать, он может быть отключен или не иметь действительного статуса OCSP. Чтобы устранить проблему, попробуйте выполнить следующие действия: 1.Убедитесь, что сертификат подписи импортирован на Security Server (2). 2.Убедитесь, что сертификат активен. 3. Если статус OCSP сертификата подписи не находится в «хорошем» состоянии, сервер безопасности (2) не может использовать сертификат. Статус OCSP можно проверить в представлении «Ключи и сертификаты» Security Server (2). 4. Убедитесь, что токен, содержащий сертификат подписи, доступен и выполнен вход в систему. Состояние токена можно проверить в представлении «Ключи и сертификаты» на сервере безопасности (2). |
Server.ClientProxy.LoggingFailed.TimestamperFailed | ||
Cannot time-stamp messages: no timestamping services configured | Присвоение временных меток записям журнала сообщений завершилось неудачно, так как служба временных меток не была настроена на сервере Security Server (2) на стороне потребителя. 3.4 Настройка службы времени | |
Cannot time-stamp messages | Отметка времени записей журнала сообщений может завершиться ошибкой по нескольким причинам: 1. сервер Security Server (2) на стороне потребителя не может установить сетевое соединение со службой временных меток, например, из-за неверных настроек брандмауэра. (проверьте через telnet tsp.srs.kg 62302. 2. служба отметки времени в настоящее время недоступна. Подробности смотрите в журнале приложений прокси (2) (/var/log/xroad/proxy.log). Если требуется более подробное ведение журнала, настройте прокси (2) - Как изменить уровень логирования на Security Server | |
Server.ClientProxy.OutdatedGlobalConf | Global configuration is expired | Security Server (2) на стороне потребителя не может загрузить глобальную конфигурацию с центрального сервера, а срок действия локальной копии глобальной конфигурации истек. Подробности смотрите в журнале приложения клиента конфигурации (2) (/var/log/xroad/configuration_client.log). Если требуется более подробное ведение журнала, настройте клиент конфигурации (2) - Как изменить уровень логирования на Security Server. Вы также можете попробовать перезапустить процесс «xroad-confclient». $ systemctl restart xroad-confclient Кроме того, возможно, что Security Server (2) на стороне потребителя не может установить сетевое подключение к центральному серверу, например, из-за неверных настроек брандмауэра - telnet central-server.tunduk.gov.kg 80 |
Server.ClientProxy.LoggingFailed.InternalError | Запись сообщений в базу данных журнала сообщений завершается ошибкой на сервере Security Server (2) на стороне потребителя. | |
Ask timed out on Actor akka Proxy user LogManager # 2110275378 ]] after [40000 ms]. Sender [null] sent message of type «ee.ria.xroad.common.messagelog.LogMessage» | Это может произойти из-за перегрузки Security Server (2) или переполнения жесткого диска. Проверьте загрузку процессора и свободное место на диске сервера (2). Перезапуск сервера также может помочь. | |
Futures timed out after [40 seconds] | Это может произойти из-за того, что Security Server (2) перегружен. Проверьте загрузку процессора сервера (2). Перезапуск сервера (2) также может помочь. |
В таблице ниже приведены наиболее распространенные сообщения об ошибках, исходящие от Security Server (2) на стороне потребителя, и их описания.
Код ошибки (тип/код ошибки) | Сообщение об ошибке (message/faultString) | Описание | |
Server.ServerProxy.AccessDenied | Request is not allowed: SERVICE:instanceIdentifier/memberClass/memberCode/subsystemCode/serviceCode | Предоставление доступа другому участнику 7.2.2 | |
Server.ServerProxy.ServiceFailed.MissingHeaderField | Malformed SOAP message: header missing | В ответном сообщении, возвращаемом информационной системой поставщика услуг (4), отсутствует один или несколько обязательных заголовков SOAP. Сообщения запроса и ответа SOAP должны содержать определенные заголовки X-Road. | |
Server.ServerProxy.ServiceFailed.InvalidSoap | Cause of the error, for example: org.xml.sax.SAXParseException; Premature end of file. | Информационная система поставщика услуг (4) вернула искаженное сообщение SOAP в качестве ответа. В этом случае более подробную информацию можно найти в журнале прокси-сервера Security Server (3) на стороне потребителя (/var/log/xroad/proxy.log). Если требуется более подробное ведение журнала, настройте прокси (3) - Как изменить уровень логирования на Security Server | |
Server.ServerProxy.UnknownService | Unknown service: SERVICE:instanceIdentifier/memberClass/memberCode/subsystemCode/serviceCode | Служба, идентифицированная кодом службы, включенным в запрос, не существует на сервере безопасности поставщика услуг (3). Пожалуйста, убедитесь, что значение кода услуги в запросе правильное и соответствует информации, зарегистрированной на сервере безопасности поставщика услуг (3). | |
Server.ServerProxy.ServiceFailed.HttpError | Cause of the error, for example: Server responded with error 301: Moved Permanently | Security Server (3) на стороне поставщика услуг не смог успешно подключиться к информационной системе поставщика услуг (4). В этом случае более подробную информацию можно найти в журнале прокси-сервера Security Server (3) на стороне потребителя (/var/log/xroad/proxy.log). Если требуется более подробное ведение журнала, настройте прокси (3) - Как изменить уровень логирования на Security Server | |
Server.ServerProxy.ServiceFailed.InternalError | Обработка запроса не удалась из-за внутренней ошибки на сервере Security Server (3) на стороне провайдера. | ||
Signer.UnknownMember: Could not find any certificates for member'SUBSYSTEM:instanceIdentifier/memberClass/memberCode/subsystemCode'. Are you sure tokens containing the certifications are logged in? | Сервер безопасности на стороне провайдера (3) не имеет действительного сертификата проверки подлинности. Сертификат проверки подлинности может не существовать, он может быть отключен, может быть не зарегистрирован или не иметь действительного статуса OCSP. Чтобы устранить проблему, попробуйте выполнить следующие действия: 1. Убедитесь, что сертификат аутентификации импортирован на Security Server (3). 2. Убедитесь, что сертификат активен. 3. Убедитесь, что сертификат зарегистрирован. 4. Если статус OCSP сертификата аутентификации не находится в «GOOD» состоянии, сервер безопасности (3) не может использовать сертификат. Статус OCSP можно проверить в представлении «Keys and certificates» Security Server (3). 5. Убедитесь, что программный токен, содержащий сертификат проверки подлинности, доступен и выполнен вход в систему. Состояние токена можно проверить в представлении «Ключи и сертификаты» на сервере безопасности (3). Как ввести Security Server PIN code? | ||
Connection pool shut down | Security Server (3) на стороне провайдера не может получить доступ к своей базе данных. Подробности смотрите в журнале приложений прокси (3) (/var/log/xroad/proxy.log) и в журнале Postgres (/var/log/postgresql/). Если требуется более подробное ведение журнала, настройте прокси (3) - Как изменить уровень логирования на Security Server | ||
Server.ServerProxy.ServiceFailed.CannotCreateSignature | Failed to get signing info for member HttpError: Connection to Signer (port 5558) timed out | Возникла проблема с подписывающей стороной на Security Server (3) на стороне провайдера. Подробности смотрите в журнале приложения подписывающей стороны (3) (/var/log/xroad/signer.log). Если требуется более подробное ведение журнала, настройте прокси (3) - Как изменить уровень логирования на Security Server. Также можно попробовать перезагрузить xroad-signer $ systemctl restart xroad-signer | |
Server.ServerProxy.CannotCreateSignature.Signer.TokenNotActive | Token 'softToken' not active | Запрос на обслуживание возвращает сообщение об ошибке "Token softToken Not Active" | |
Server.ServerProxy.SslAuthenticationFailed | Server certificate is not trusted | Аутентификация SSL между Security Server (3) на стороне поставщика услуг и информационной системой поставщика услуг (4) не удалась. Ошибка возникает, когда в конфигурации службы выбран параметр «Проверить сертификат TLS», но сертификат службы не был загружен на сервер безопасности на стороне провайдера (3). Ошибку можно устранить, сняв флажок «Проверить сертификат TLS» или загрузив сертификат службы на сервер безопасности на стороне провайдера (3). | |
Server.ServerProxy.LoggingFailed.TimestamperFailed | |||
Cannot time-stamp messages: no timestamping services configured | Присвоение временных меток записям журнала сообщений завершилось неудачей, так как служба временных меток не была настроена на сервере Security Server (3) на стороне поставщика услуг. 3.4 Настройка службы времени | ||
Cannot time-stamp messages | Отметка времени записей журнала сообщений может завершиться ошибкой по нескольким причинам: 1. сервер Security Server (3) на стороне провайдера не может установить сетевое соединение со службой временных меток, например, из-за неверных настроек брандмауэра. (проверьте через telnet tsp.srs.kg 62302 . 2. служба отметки времени в настоящее время недоступна. Подробности смотрите в журнале приложений прокси (2) (/var/log/xroad/proxy.log). Если требуется более подробное ведение журнала, настройте прокси (2) - Как изменить уровень логирования на Security Server | ||
Server.ServerProxy.OutdatedGlobalConf | Global configuration is expired | Global configuration is expired | Security Server (3) на стороне провайдера не может загрузить глобальную конфигурацию с центрального сервера, а срок действия локальной копии глобальной конфигурации истек. Подробности смотрите в журнале приложения клиента конфигурации (3) (/var/log/xroad/configuration_client.log). Если требуется более подробное ведение журнала, настройте клиент конфигурации (3) - Как изменить уровень логирования на Security Server. Вы также можете попробовать перезапустить процесс «xroad-confclient». $ systemctl restart xroad-confclient Кроме того, возможно, что Security Server (3) на стороне провайдера не может установить сетевое подключение к центральному серверу, например, из-за неверных настроек брандмауэра - telnet central-server.tunduk.gov.kg 80 |
Server.ClientProxy.LoggingFailed.InternalError | Запись сообщений в базу данных журнала сообщений завершается ошибкой на сервере Security Server (3) на стороне провайдера. | ||
Ask timed out on Actor akka Proxy user LogManager # 2110275378 ]] after [40000 ms]. Sender [null] sent message of type «ee.ria.xroad.common.messagelog.LogMessage» | Это может произойти из-за перегрузки Security Server (3) или переполнения жесткого диска. Проверьте загрузку процессора и свободное место на диске сервера (3). Перезапуск сервера также может помочь. | ||
Futures timed out after [40 seconds] | Это может произойти из-за того, что Security Server (3) перегружен. Проверьте загрузку процессора сервера (3). Перезапуск сервера (3) также может помочь. |
Автор Даниил Горбенко