1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Docker][NestJs][Jwt]ある日突然発生した「secretOrPrivateKey must be a symmetric key when using HS256」

Last updated at Posted at 2024-03-25

はじめに

毎度お馴染み何もしていないのに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のせいなのか、私がなにかしてしまったのか。
根本的な原因はわかりませんが、とりあえず解決してよかったです。
これで作業が進められます。。。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?