我使用 Apache HTTPD 2.4 和 mod_ssl 版本 2.4.34 创建了一个 EC2 实例。我在 AWS ElastiCache 版本 1.6.17 上创建了一个 Memcached 集群,并在传输过程中进行加密。
目标是让 HTTPD 使用 MemCached 和 TLS 作为 SSLSessionCache。但是,每当收到请求时,服务器都会记录以下内容:
虚拟主机配置文件
...
SSLSessionCache memcache:test-memcache.2dr943.cfg.use1.cache.amazonaws.com:11322
...
ssl_错误日志
Could not find specified socket in poll list.: AH00790: scache_mc: error setting key 'mod_ssl-session:162534f25cf4152836459039d4c99263a346345e9366230f9a00394f593abcab' with 1447 bytes of data
我可以使用 来验证 Memcached 集群是否可访问且是否可以正常运行openssl s_client -connect test-memcache.2dr943.cfg.use1.cache.amazonaws.com:11322
。
看来 HTTPD 无法连接到正在传输加密的 Memcache 服务。有什么办法可以解决这个问题吗?
答案1
您可以用stunnel
它作为代理来加密默认情况下不支持它的工具的流量。
您可以像这样配置 stunnel:
/etc/stunnel/stunnel.conf
foreground = no
[memcache]
client = yes
accept = 127.0.0.1:11322
connect = test-memcache.2dr943.cfg.use1.cache.amazonaws.com:11322
CAfile = /etc/pki/tls/certs/ca-certs-bundle.crt
sslVersion = TLS1.2
然后您可以按如下方式更新您的 httpd memcache 配置:
虚拟主机配置文件
SSLSessionCache memcache:localhost:11322