codestates / codestates/Memory-It
[Error Handling] JWT에러: error:0909006C:PEM routines:get_name:no start line
- Dominant language
- JavaScript
- Stars
- 1
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
### 어떤 에러인가요?
+ jsonwebtoken라이브러리를 이용해서 jwt토큰을 발급하려했다. algorithms을 'ES256'으로 설정하고 발급을 시도했을때 발견한 에러.
### 에러 메시지
```
error:0909006C:PEM routines:get_name:no start line
```
### 에러 핸들링 방법
+ jwt토큰을 이용해서 사용자 인증을 하려고 토큰생성하는 코드를 작성했고 해싱알고리즘으로는 **_ES256_** 이 가장 권장(그러나 RS256이 일반적으로 사용됨)된다는 글을 읽었다.
+ ES256과 RS256 중 ES256이 훨씬 빠르다고하고 이게 가장권장되는 이유라고한다.그렇지만 RS256이 다양한 언어와 구현에서 더 나은 지원을 제공한다고 함. 아무튼 ES256이 더 권장된다고 하니 사용해볼 목적으로 algorithms: 'ES256'이라고 작성했지만 오류발생.
```jsx
jwt.sign({ id }, SECRET, {
algorithm: 'ES256',
expiresIn: '5m',
issuer: '나',
})
```
+ 'no start line'이라는 말이 눈에 띄었다. 알고보니 알고리즘 해싱에 사용되는 비밀키가 별도의 형식으로 필요했다.
+ ES256에 사용되는 비밀키 생성에 대한 리소스는 찾기 어려웠으나, RS256에 사용되는 비밀키 생성에 관한 이슈를 찾았고 해당 이슈에는 적절한 해결책을 제시하고있었다. 천천히 읽으며 따라 해봤고 RS256을 적용해서 토큰생성에 성공했다.
+ 추가) 스프린트에서 다뤘던 토큰생성은 HS256알고리즘으로 토큰을 만들었는데, HS256의 경우 대칭키를 사용하기때문에 실제 서비스에 적용하기에는 부적절한듯하다.
### 에러 핸들링을 위해 참고한 레퍼런스 링크
[curity - jwt best practices](https://curity.io/resources/learn/jwt-best-practices/)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.