Подключение к AWS Нептун с Gremlin. net с локальной windows машины - PullRequest
1 голос
/ 11 апреля 2020

Я следую документации Amazon на access-graph-gremlin-do tnet и пытаюсь запустить ее на локальной windows машине, которая подключена к Нептуну через туннель S SH через экземпляр EC2.
Я протестировал туннель S SH с консолью gremlin, и он отлично работает.
Запуск программы на экземпляре EC2 также работает, но при запуске программы на локальном windows машина Я получаю следующее исключение, потому что сертификат Нептуна должен быть добавлен к доверенным сертификатам:

System.Net.WebSockets.WebSocketException (0x80004005): Unable to connect to the remote server ---> 
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner 
 exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is 
invalid according to the validation procedure.

Я ищу, как это сделать в Gremlin. Net 3.4.6 (предпочтительно * * тысяча двадцать-одиной).

  • Импорт сертификата из # 6 на access-graph-gremlin-console в качестве доверенного root сертификата также не помог.

Ответы [ 2 ]

5 голосов
/ 12 апреля 2020

Вам нужно будет сделать следующее:

  1. Открыть cmd.exe в качестве администратора
  2. notepad c:\windows\system32\drivers\hosts
  3. добавить строку 127.0.0.1 <your neptune cluster endpoint just the name without port>
  4. Сохраните файл
  5. Теперь попробуйте и снова введите код. Net

Это потому, что вы, скорее всего, подключаетесь к localhost и сертификат подписан для имя хоста кластера, поэтому существует несоответствие.

0 голосов
/ 12 апреля 2020

Другим вариантом является использование параметра webSocketConfiguration в конструкторе GremlinClient и использование RemoteCertificateValidationCallback для проверки вручную.
При проверке сертификата следует соблюдать особую осторожность из-за очевидных угроз безопасности.

var webSocketConfiguration = new Action<ClientWebSocketOptions>(options => {options.RemoteCertificateValidationCallback=(o, c, ch, er) => Test and return true if certificate is valid;});
var gremlinServer = new GremlinServer(endpoint, 8182, enableSsl: true );
var gremlinClient = new GremlinClient(gremlinServer, webSocketConfiguration: webSocketConfiguration);
...