NestJS で node-redis TLS 対応したサンプルコードをご紹介します。
今回は node-redis を利用して TLS 対応する方法を調べて、サンプルコードまで書きました。
Redis version 6 から SSL/TLS サポートが始まったようです。
TLS SupportSSL/TLS is supported by Redis starting with version 6 as an optional feature that needs to be enabled at compile time.
引用元: TLS Support – Redis
Property: tlsDefault: null
Description: An object containing options to pass to tls.connect to set up a TLS connection to Redis (if, for example, it is set up to be accessible via a tunnel).
localhost-key.pem, localhost.pem などの ローカル環境用 SSL/TLS サーバ証明書は mkcert で発行しました。
NestJS で redis.createClient() に tls オプションを指定して実行したサンプルコードは以下のとおりです。
import { createClient, RedisClient } from 'redis';
let redisClinet;
if (process.env.REDIS_TLS_URL) {
redisClinet = createClient(process.env.REDIS_TLS_URL, {
tls: {
requestCert: true,
rejectUnauthorized: false,
cert: fs.readFileSync('/your_path/localhost.pem', 'utf8'),
key: fs.readFileSync('/your_path/localhost-key.pem', 'utf8'),
},
});
} else {
redisClinet = createClient({
host: process.env.REDIS_HOST,
port: parseInt(process.env.REDIS_PORT || '')
});
}
以上、NestJS で node-redis TLS 対応のサンプルコードを書いてみた、現場からお送りしました。