我正在关注亚马逊关于访问图小精灵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中做到这一点。净3.4.6(优选C#(。
- 在访问图gremlin控制台从#6导入证书作为受信任的根证书也没有帮助
您需要这样做:
- 以管理员身份打开cmd.exe
notepad c:windowssystem32drivershosts
- 添加一行
127.0.0.1 <your neptune cluster endpoint just the name without port>
- 保存文件
- 现在尝试运行。再次输入网络代码
这是因为您很可能正在连接到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);