AWS 私有网络负载均衡器上的 TCP 443 侦听器抛出 SSL_ERROR_RX_RECORD_TOO_LONG

AWS 私有网络负载均衡器上的 TCP 443 侦听器抛出 SSL_ERROR_RX_RECORD_TOO_LONG

我有一个AWS private Network Load Balancer带有侦听器的设置TCP 443,附加到该侦听器的目标组也在端口 443 上运行。附加到该目标的实例正在Apache 2.4上运行Centos 7

我已经仔细检查了 Web 服务器配置,当我运行以下命令时,它就可以正常工作。
这里 xxxx 是实例的私有 IP 地址。
$ curl -kv https://x.x.x.x
上述命令适用于整个 VPC。

但是当我使用私有NLB域名时:
$ curl -kv https://some-unique-id.elb.region.amazonaws.com

它给出了以下错误:

* About to connect() to some-unique-id.elb.region.amazonaws.com port 443 (#0)
*   Trying x.x.x.x...
* Connected to some-unique-id.elb.region.amazonaws.com (x.x.x.x) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* NSS error -12263 (SSL_ERROR_RX_RECORD_TOO_LONG)
* SSL received a record that exceeded the maximum permissible length.
* Closing connection 0
curl: (35) SSL received a record that exceeded the maximum permissible length.

配置摘要

  • 实例操作系统 = Centos 7.7
  • Web 服务器 = Apache 2.4
  • AWS NLB 面向内部
  • NLB 有监听器TCP 443

我已经在端口 80 上尝试过,一切正常,但我在 443 上遇到了这个问题,我对此进行了大量搜索,大多数答案都指出 Apache 上缺少某些配置,但我的配置文件中已经配置了所有这些配置。任何指导都会有所帮助。

Listen 443 https

SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost x.x.x.x:443>

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA


SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key



SSLVerifyClient none


<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

DocumentRoot /path/to/my/app
    
<Directory "/path/to/my/app">
    Options -Indexes -FollowSymLinks -Includes -ExecCGI -MultiViews
    AllowOverride all
    Allow from all
    Require all granted
</Directory>


</VirtualHost>

答案1

经过大量调试后,我发现我正在向在端口 80 上监听的目标组发送 https 流量。这就是为什么 SSL 只转到端口 80 并且从未终止的原因。

将目标组的端口 80 更改为 443 后,一切都开始正常工作。

相关内容