Понимание безопасности OPC-UA с помощью Eclipse Milo

Я новичок в этом мире OPC-UA и Eclipse Milo. Я не понимаю, как здесь работает защита, обсуждая пример клиента, предоставленный eclipse-milo

Я вижу несколько свойств безопасности, используемых для подключения к OPCUA-серверу:

SecurityPolicy, MessageSecurityMode, clientCertificate, clientKeyPair, setIdentityProvider,

  1. Как вышеуказанные конфигурации связаны друг с другом?

Я пытался запустить клиентские примеры -> BrowseNodeExample. Этот пример внутренне запускает ExampleServer. ExampleServer настроен для работы с Anonymous и UsernamePassword Provider. Он также обязан принимать SecurityPolicy.None,Basic128Rsa15,Basic256,Basic256Sha256 с MessageSecurityMode в качестве SignandEncrypt, за исключением SecurityPolicy.None, где MessageSecurityMode тоже не имеет значения.

  1. Проблема с AnonymousProvider, я мог подключиться к серверу со всеми парами SecurtiyPolicy и MessageSecurityMode, упомянутыми выше (без предоставления клиентских сертификатов). Но я не мог сделать то же самое для UsernameProvider, только для провайдера имени пользователя. Пара SecurityPolicy MessageSecurityMode с None выполняется успешно. Все остальные пары выдают проверки безопасности не удалось исключение (если сертификат предоставлен), иначе доступ пользователя запрещен (если сертификат клиента не предоставлен). Как заставить это работать?

Наконец, было бы очень хорошо, если бы кто-то мог указать мне на надлежащую документацию пользователя для Eclipse Milo. Поскольку я не мог видеть никакой документации, кроме примеров кодов, и они не документированы.

1 ответ

Решение

SecurityPolicy а также MessageSecurityMode идти рука об руку. Политика безопасности диктует набор алгоритмов, которые будут использоваться для подписей и шифрования, если таковые имеются. Режим безопасности сообщений определяет, будут ли сообщения подписаны, подписаны и зашифрованы, или нет в случае, если безопасность не используется.

clientCertificate а также clientKeyPair должен быть настроен, если вы планируете использовать безопасность. Вы не можете использовать шифрование или подписи, если у вас нет сертификата и закрытого ключа, в конце концов.

IdentityProvider используется для предоставления учетных данных, идентифицирующих пользователя сеанса, если таковые имеются.

Когда ExampleServer запускается, он регистрирует, что использует временный каталог безопасности, что-то вроде этого: security temp dir: /var/folders/z5/n2r_tpbn5wd_2kf6jh5kn9_40000gn/T/security, Когда клиент подключается с использованием любого вида безопасности, его сертификат изначально не является доверенным для сервера, в результате чего Bad_SecurityChecksFailed ошибки, которые вы видите. Внутри этого каталога вы найдете папку rejected где хранятся отклоненные клиентские сертификаты. Если вы переместите сертификат (ы) в trusted После этого клиент должен иметь возможность подключиться с помощью безопасности.

Другие вопросы по тегам