如何通过 Haproxy 连接 Neptune?

How can I connect with Neptune by Haproxy?

在本地开发环境中,我想连接AWS Neptune 端点。但是,在 ap-north-east2 中,我必须使用 ssl。 所以,我尝试在我的堡垒服务器上设置 Haproxy。 (参考:https://docs.aws.amazon.com/neptune/latest/userguide/security-ssl.html

但是,我现在不知道如何将 Amazon 根 CA 证书用于 Haproxy。 (AmazonRootCA1.pem: https://www.amazontrust.com/repository/AmazonRootCA1.pem)

此代码是我的haproxy.cfg。

frontend neptune
  bind :59999 ssl crt ca-file /usr/local/etc/haproxy/SFSRootCAG2.pem verify required.
  reqadd X-Forwarded-Proto:\ https
  mode http
  timeout client 60m
  default_backend neptune

backend neptune
  mode http
  option forwardfor
  option httpclose
  timeout server 60m
  balance roundrobin
  server neptune my-alpha.cluster-abcdefg.ap-northeast-2.neptune.amazonaws.com:8183 weight 1 check inter 10000

我不明白这个

"如果您正在使用负载均衡器或代理服务器(例如 HAProxy),则必须使用 SSL 终止并在代理服务器上拥有您自己的 SSL 证书。

SSL 直通不起作用,因为提供的 SSL 证书与代理服务器主机名不匹配。

(https://docs.aws.amazon.com/neptune/latest/userguide/security-ssl.html)

我需要做什么?

这是错误日志

[ALERT] 215/115034 (6) : parsing [/usr/local/etc/haproxy/haproxy.cfg:7] : 'bind :59999' : unable to load SSL private key from PEM file '/usr/local/etc/haproxy/SFSRootCAG2.pem'.
[ALERT] 215/115034 (6) : Error(s) found in configuration file : /usr/local/etc/haproxy/haproxy.cfg
[ALERT] 215/115034 (6) : Fatal errors found in configuration.

虽然我不完全理解上下文,但听起来您想要海王星服务器的 http -> https 代理。为此,您需要执行以下操作:

frontend neptune
  bind *:59999 
  mode http
  # your options here...
  default_backend neptune

backend neptune
  mode http
  # your options here...
  server neptune my-alpha.cluster-abcdefg.ap-northeast-2.neptune.amazonaws.com:8183 ssl ca-file /usr/local/etc/haproxy/SFSRootCAG2.pem verify required weight 1 check inter 10000

如果这只是一个开发环境,您或许可以简化您的代理,省略 ca 文件并使用 verify none,例如:

server neptune my-alpha.cluster-abcdefg.ap-northeast-2.neptune.amazonaws.com:8183 ssl verify none weight 1 check inter 10000