ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] RSA public key is not available client side (option serverRsaPublicKeyFile not set)
    공부/etc 2022. 8. 23. 23:23
    반응형

     

    OSS 활동중 프로젝트를 pull할 때마다 mysql 연결 정보가 기본값으로 바뀌면서 해당 에러가 나와 실행이 되지 않습니다. 그래서 맨날 구글링해서 복붙을 하는데, 오늘은 갑자기 제가 복붙하는 내용이 궁금해져서 포스팅을 하고자 합니다.

     

    결과적으로는 ?allowPublicKeyRetrieval=true&useSSL=false 내용을 복붙해서 붙이면 됩니다.

    spring.datasource.url=127.0.0.1:3306/[database_name]?allowPublicKeyRetrieval=true&useSSL=false

     


     

    클라이언트와 디비가 통신을 할 때 서로 주고 받는 데이터를 암호화해서 보내게 됩니다.

    MySQL 8.0부터는 보안이 강화되어 생기게 되는 오류 입니다.

     

    1. allowPublicKeyRetrieval = true


    클라이언트가 디비에 공개키를 자동으로 얻을 수 있도록 요청합니다. 이때 MIMT (중간자 공격)에 취약해집니다.

    중간자 공격이란 A와 B가 서로 RSA로 통신할 경우, B가 A에게 공개키를 주고 A가 B의 공개키로 암호화하여 B에게 데이터를 보낸다고 가정해봅시다.

    이때 해커가 A가 받으려는 B의 공개키를 탈취하여 해커의 공개키를 A에게 보내주고, A가 해커의 공개키로 암호화하여 B에게 데이터를 보내게 될 때 해커는 그 데이터를 탈취합니다. 그리고 내용을 조작해서 원래 A가 받아야할 B의 공개키로 암호화한채 B에게 보내게 됩니다. 이러면 B는 해커가 보낸 데이터를 진짜 데이터인줄 알게 되는 보안상 문제가 생기게 됩니다.


     

     

    2. useSSL = false


    MySQL에서는 기본적으로 SSL 접속을 통해 암호화가 되도록 설정하였습니다. 이때 SSL의 경우에는 서버 인증서 검증을 해야 하는데, 개인용으로 사용하게 된다면 서버 인증서가 없으니 오류가 나오게 됩니다. 그래서 useSSL=false로 설정하게 됩니다.

    useSSL = false로 하게 된다면, 해킹을 당했을 때 패킷에 나온 아이디와 패스워드가 암호화되지 않은 상태로 나와서 보안 문제가 생긴다고 합니다. 하지만 개인 프로젝트에서는 이것도 중요한 것은 아니라서 작동을 끄게 합니다.


     

    반응형

    댓글

Designed by Tistory.