はじめに
毎度お馴染み何もしていないのにDockerが壊れたと思ったら、DockerではなくどうやらJwtの方に原因があるようです。
忘れないようにメモします。
環境:
- Docker
- NestJs
- Jwt認証
- ssh-keygen
問題とコード
NestJSでJwt認証を行う以下コードで発生しました
this.jwtService.signAsync(payload, {
secret: this.configService
.get('auth.jwtSecret.accessToken')
.replace(/\\n/g, '\n'),
.algorithm: 'RS256',
expiresIn: 60 * 60,
}),
secretOrPrivateKey must be a symmetric key when using HS256
この環境で開発を始めて数ヶ月、始めて発生する現象です。
エラーの原因は認証方法がHS256(デフォルト)の処理にRS256ので作成した秘密鍵を入れていたからです。
しかし、これまで問題なく動いていたのに急になぜ?
envファイルをいじってしまったのか、なにかインポートの設定でも変えてしまったのか、
色々調査や再設定を行いましたが、急に現象が発生した理由についてはわかりませんでした。
解決
RS256を使用した秘密鍵を作成します。
passphraseは指定しません。
ssh-keygen -t rsa -b 4096 -f RS256.key
ssh-keygen -p -f RS256.key -m pem
openssl rsa -in RS256.key -pubout -outform PEM -out RS256.key.pub
おわり
Macのせいなのか、Dockerのせいなのか、私がなにかしてしまったのか。
根本的な原因はわかりませんが、とりあえず解決してよかったです。
これで作業が進められます。。。
参考