使用 Gremlin.net 从本地 windows 机器连接到 AWS Neptune
Connecting to AWS Neptune with Gremlin.net from a local windows machine
我正在 access-graph-gremlin-dotnet 关注亚马逊的文档
并尝试在通过 EC2 实例使用 SSH 隧道连接到 Neptune 的本地 windows 机器上 运行 它。
我已经用 gremlin 控制台测试了 SSH 隧道,它工作正常。
运行 EC2 实例上的程序也能正常工作,但是当 运行 在本地 windows 机器上运行程序时,我收到以下异常,因为需要将 Neptune 的证书添加到可信证书:
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(最好是 C#)中执行此操作。
- 从 access-graph-gremlin-console 的 #6 导入证书作为受信任的根证书也没有帮助。
您需要这样做:
- 以管理员身份打开cmd.exe
notepad c:\windows\system32\drivers\hosts
- 添加一行
127.0.0.1 <your neptune cluster endpoint just the name without port>
- 保存文件
- 现在再次尝试 运行 .Net 代码
这是因为您最有可能连接到 localhost
并且证书是为集群的主机名签名的,所以不匹配。
另一种选择是使用 GremlinClient 构造函数的 webSocketConfiguration 参数并使用 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);
我正在 access-graph-gremlin-dotnet 关注亚马逊的文档
并尝试在通过 EC2 实例使用 SSH 隧道连接到 Neptune 的本地 windows 机器上 运行 它。
我已经用 gremlin 控制台测试了 SSH 隧道,它工作正常。
运行 EC2 实例上的程序也能正常工作,但是当 运行 在本地 windows 机器上运行程序时,我收到以下异常,因为需要将 Neptune 的证书添加到可信证书:
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(最好是 C#)中执行此操作。
- 从 access-graph-gremlin-console 的 #6 导入证书作为受信任的根证书也没有帮助。
您需要这样做:
- 以管理员身份打开cmd.exe
notepad c:\windows\system32\drivers\hosts
- 添加一行
127.0.0.1 <your neptune cluster endpoint just the name without port>
- 保存文件
- 现在再次尝试 运行 .Net 代码
这是因为您最有可能连接到 localhost
并且证书是为集群的主机名签名的,所以不匹配。
另一种选择是使用 GremlinClient 构造函数的 webSocketConfiguration 参数并使用 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);