Сбой подключения EPP для регистрации домена при использовании сертификата

Я использую EPP (Extensible Provisioning Protocol) для выполнения операций регистрации домена.

Все работает нормально, но когда я использую сертификат, происходит сбой запроса на вход.

Допустим, у меня есть сертификат в C:\Folder\epp.crt и я использую следующий код:

var tcpTransport = new TcpTransport(url, port, new X509Certificate("C:\Folder\epp.crt"), true);
var service = new Service(tcpTransport);
service.Connect();

Этот код выполняется просто отлично, и служба подключена. Это означает, что соединение с URL-адресом устанавливается с использованием сертификата. Теперь я пытаюсь войти с помощью:

service.Execute(logingCmd);

Но это дает мне «Сервер требует проверки сертификата клиента, сертификат клиента не предоставлен».

Почему? Должен ли быть какой-либо флаг для сертификата в команде входа в систему?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
200
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно RFC5734, EPP использует TLS, а не TCP. Этот RFC также предписывает использование клиентских сертификатов.

В вашем вопросе отсутствуют подробности о содержании epp.crt (где находится соответствующий ключ?) или используемом вами языке. Согласование TLS, включая проверку сертификата клиента, происходит до входа в систему EPP, но точный момент может быть скрыт библиотекой, которую вы используете для подключения.

Итак, чтобы ответить на ваш вопрос «Должен ли быть какой-либо флаг для сертификата в команде входа в систему?», Нет, не должен, поскольку обработка сертификата является частью настройки транспорта, а не команд EPP. Ваша проблема, вероятно, больше связана с использованием TcpTransport.

Вы можете использовать сетевой сниффер, чтобы увидеть, что именно происходит. Реестры, вероятно, пока не предлагают TLS1.3, поэтому вы все равно сможете видеть обмены TLS, включая ваш клиент, предоставляющий сертификат.

Также вам может помочь реестр, к которому вы подключаетесь.

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

A.Ghaffar 15.07.2019 09:24

«Сертификат не был связан с каким-либо закрытым ключом». Технически это невозможно. Сертификат — это, по сути, открытый ключ с некоторыми метаданными и подписью над ним. Открытая и закрытая части ключа вычисляются одновременно в одном месте, потому что они математически связаны. Иными словами: у вас должен быть закрытый ключ, если у вас есть сертификат, иначе он не был бы сгенерирован. Но, конечно, вы также можете просто потерять закрытый ключ постфактум, и тогда свободный сертификат бесполезен.

Patrick Mevzek 05.03.2020 18:53

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