Amazon-Web-Services
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
- 網路伺服器 = Apache 2.4
- AWS NLB 面向內部
- NLB 有監聽器
TCP 443
我已經在埠 80 上嘗試過,一切正常,但我在 443 上遇到了這個問題,我為此搜尋了很多,大多數答案都指出 Apache 上的某些配置缺失,但我所有這些都已經配置在我的 conf 文件中。任何指導都會有所幫助。
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>
經過大量調試後,我發現我正在向正在偵聽埠 80 的目標組發送 https 流量。這就是為什麼 SSL 只是轉到埠 80 並且從未終止的原因。
將目標組的 80 埠更改為 443 後,一切都開始工作了。