개발을 진행하고 Intellij를 사용하다 보면 해당 문제가 종종 발생한다.

보통 패키지를 이동하거나 이름을 변경 하였을 경우, 빈은 등록되어 있지만 해당 위치에 없거나 충돌이 나는 경우 대부분 발생하였다.

가장 쉬운 방법으로

터미널 상에서

./gradlew clean

해당 명령어를 입력해 줌으로써 문제를 해결하였다.

'Develop > Spring' 카테고리의 다른 글

Spring Boot HTTPS 설정하기  (0) 2022.05.20
[에러] CompileOnly로 인한 오류  (0) 2022.03.06
Bcrypt 암호화  (0) 2021.09.28

저는 EC2의 Ubuntu 서버에 SSL 인증서를 받아놨습니다.

스프링 부트에서 이를 사용하려면 따로 설정이 필요합니다.

이를 모르고 왜 spring boot가 실행이 안되지 하며 삽질한 기억이 있네요..

 

1. pkcs12 형태로 파일만들기

spring boot에서는 pem 파일을 사용할 수가 없습니다.

pkcs12형태로 바꿔주어야 합니다.

/etc/letsencrypt/live/발급 받은 도메인 주소 로 들어가 보면 pem 파일들이 있을 것 입니다.

openssl pkcs12  -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root

위의 명령어를 통해 keystore.p12라는 파일을 만들어 줍니다.

도중 비밀번호를 입력하는 단계가 나오는데 추후 spring boot 설정에 필요하니 꼭 외워두시기 바랍니다.

 

2. 파일 옮기기

이제 서버에 있는 pkcs12 파일을 로컬로 옮겨와야합니다.

많은 방법이 있다지만 저는 scp를 이용하여 하였습니다.(여기도 나름 삽질을 하였습니다..)

 

Server(Ubuntu) -> Local(Mac)

$ scp 파일경로 Mac사용자이름@Mac주소:~/Mac저장경로

저는 Downloads에 일단 저장하였으며 예시를 들자면

ex) scp keystore.p12 ABCD@123.123.123.12:~/Downloads       입니다.

여기서 connection refused 가 뜰 수 있는데 이는 로컬 맥에서 연결을 거부했기 때문입니다.

mac 설정 -> 공유 -> 원격 로그인을 체크한 후 다시 수행하면 정상적으로 수행 될 것입니다.

이후 저는 다시 설정을 꺼주었습니다.

 

-----------------------------------------------------------

중간에 잘 안되서 새로운 방법도 적어놓습니다.

이하의 방법은 로컬에서 수행하여 원격의 aws서버의 파일을 가져오는 방법입니다.

우선 aws의 서버로 접속해서 su 모드로 접속합니다.

이 후 etc/letsencrypt/live 로 접속하여 줍니다. 이후 live폴더와 keystore.p12 파일을 잠시 권한을 777로 바꿔줍니다.

이제 다시 로컬로 접속하여 원격으로 가져오기를 해줍니다.

이때 로컬에서 aws의 접속 pem 파일이 있는 곳에서 수행해 주어야 합니다.

scp -r -i "접속서버.pem" ubuntu@[aws주소]:[keystore.p12 파일 위치] [로컬의 다운로드 위치]

 

ex) scp -r -i "aaa_server.pem" ubuntu@12.345.67.890:/etc/letsencrypt/live/keystore.p12 /Downloads

 

-----------------------------------------------------------

이제 옮겨온 파일을 spring boot 프로젝트의 resource 폴더로 옮겨 줍니다.

이 후 application.yml 파일에서 해당 설정을 완료해 주면 되겠습니다. password는 아까 파일을 만들며 설정했던 비밀번호입니다.

 

감사합니다.

'Develop > Spring' 카테고리의 다른 글

[에러] ConflictingBeanDefinitionException 문제 해결 방법  (0) 2022.06.24
[에러] CompileOnly로 인한 오류  (0) 2022.03.06
Bcrypt 암호화  (0) 2021.09.28

로컬에서 아무 문제없이 수행이 되던 프로그램이 서버에서 수행을 시키면 각종 에러, 특히 빈 설정 관리 문제가 발생하였다.

로컬에서와 서버에서 프로그램을 돌릴 때 설정에서 문제 될 것은 없어 보였고 수정한 점도 없었다.

구글링을 통해 해결을 하려 하였지만 비슷한 오류가 많지 않았고 삽질을 엄청하였다...

결국 지인의 도움으로 이를 해결하게 되었는데, build.gradle에 CompileOnly 가 있었던 것이 문제였다.

compileOnly 로컬에서 컴파일 시점에 존재했던 클래스가 런타임 시점에 존재하지 않으면 에러가 뜰수있다고 한다..

build.gradle에서 사용하는 compile, compileOnly, implementation 등에 대해 크게 관심을 가지지 않았었는데 관심을 가져야 겠다고 생각하게 된 에러였다.. 앞으로는 조심해야지

 

 

'Develop > Spring' 카테고리의 다른 글

[에러] ConflictingBeanDefinitionException 문제 해결 방법  (0) 2022.06.24
Spring Boot HTTPS 설정하기  (0) 2022.05.20
Bcrypt 암호화  (0) 2021.09.28

기존에 프로젝트들을 수행하며 데이터베이스에 정보를 저장할 때 비밀번호를 암호화 하겠다는 생각으로 aes-128 암호화를 사용하였다. 암호화를 하면 당연히 복호화를 할 수 있어야 한다는 생각이였던 것 같다. 하지만 어느 기업의 면접 자리에서 복호화가 가능한 방식으로는 암호화를 진행해서는 안된다는 얘기를 듣고 머리가 멍해졌다. 어찌보면 당연한 얘기였다. 복호화가 불가능한 방식으로 암호화를 하여야 개인 정보 및 데이터베이스가 안전하게 보호된다는 것이였다. 그래서 이러한 방식을 바꾸고자 spring에서 지원하는 bcrypt방식의 암호화를 공부하고 적용하게 되었다.

 

encrypt함수를 통해 받을 비밀번호를 암호화 합니다.

isMatch를 통해 받은 비밀번호와, 이미 해싱되어 암호화 되어있는 문자열의 비교를 통해 일치여부를 반환합니다.

+ Recent posts