I use Memcached in AWS ElastiCache and enabled encryption-in-transit as a security requirement.
However, at client side, when trying to connect to the new cache cluster with encryption-in-transit enabled, the connection failed right away with below error.
Error: read ECONNRESET
I use client memcached-elasticache, which essentially wraps around client memcached for cluster node auto-discovery. This client is not easy to work with, but they are so far the best I found in the open source world.
However, quoting from the README, this client does not yet support TLS (Transport Layer Security), which is required after enabling encryption-in-transit in the server cluster.
As in other databases and message queues, this module uses the ASCII protocol to communicate with the server, which means that you can see what is send over the wire. For debugging this is easier for both the users and the developers however this also means that SASL auth is not supported because it demands the binary protocol.
I believe this is the reason why I got connection reset right away because network protocol does not match. There is an open issue in this open source package where people are enquiring on TLS support.
Is there any existing Memcached JS/TS client that has full TLS support?
2
Answers
For Java, we recommend you to use our memcached Java client that supports TLS https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-java
For PHP, we recommend you to use our PHP client which has TLS supports. https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php
For Python, pymemcache client supports TLS https://pypi.org/project/pymemcache/
For Rust, I found this rust-memcache client which supports TLS https://crates.io/crates/memcache
For Ruby, there is memcached Dalli client supports TLS https://github.com/petergoldstein/dalli
So far I am not aware of any NodeJS or C# .NET client that has TLS support.
We recently contributed TLS support into electrode-io memcache client. In addition to NodeJS, it also has typescript support. Please take a look.