프론트엔드와 백엔드가 소통을 하지 못하는 일이 발생하였습니다.
프론트에서 백으로 HTTPS 요청을 보내도록 하였는데 HTTPS이 인증이 안되어 에러가 발생하는 것처럼 보였습니다.
그래서 스프링부트 컨테이너에 직접 HTTPS 옵션을 걸어보도록 하겠습니다.
1️⃣ 먼저 스프링에서는 .pem을 인식하지 못하기 때문에 springboot key 생성을 해줍니다.
openssl pkcs12 -export -in /etc/letsencrypt/live/restagram.shop/fullchain.pem -inkey /etc/letsencrypt/live/restagram.shop/privkey.pem -out keystore.p12 -name restagram -CAfile /etc/letsencrypt/live/restagram.shop/fullchain.pem -caname root
openssl : OpenSSL 명령어 시작
-export: PKCS#12 형식으로 키스토어를 내보내는 옵션
-in: 인증서 파일의 경로를 지정
-inkey: 개인 키 파일의 경로를 지정
-out: 출력될 PKCS#12 파일의 경로를 지정
-name: 키스토어에 저장될 인증서 체인의 이름을 지정
-CAfile: 인증서 체인 파일의 경로를 지정
-caname: 인증서 체인 내에서 검증된 루트 인증서의 이름을 지정
만약 권한 오류가 발생하면 다음과 같이 권한을 부여하고 실행합니다.
sudo chmod 644 /etc/letsencrypt/live/restagram.shop/privkey.pem
2️⃣ 비밀번호를 입력해줍니다. 꼭 기억해야 합니다.
3️⃣ 해당 파일을 젠킨스 내부로 복사합니다.
docker cp keystore.p12 [젠킨스 컨테이너 ID]:[복사할 경로]/keystore.p12
저는 다음과 같이 해주었습니다.
docker cp keystore.p12 e3878101f910:/var/jenkins_home/restagram/api/keystore.p12
4️⃣ 잘 복사 되었는지 확인해보겠습니다.
docker exec -it e3878101f910 ls -l /var/jenkins_home/restagram/api/keystore.p12
-rw-r--r-- 1 root root 2803 Jun 21 15:00 /var/jenkins_home/restagram/api/keystore.p12
root root 뒤의 2803은 파일 크기입니다. 만약 0이라면 복사가 잘못된 것이니, 권한 설정 등을 한 후 다시 복사해주세요.
권한 오류가 발생하면 다음 명령어를 실행해줍니다.
sudo chmod 644 keystore.p12
5️⃣ 스프링 부트 application.yml을 수정해줍니다.
server:
ssl:
key-store: classpath:keystore.p12 # 파일 경로
key-store-password: yourpassword # 2번에서 입력한 비밀번호
key-store-type: PKCS12
key-alias: restagram
6️⃣ 젠킨스 파이프라인에 해당 파일을 /src/main/resource 로 복사하는 명령어를 추가합니다.
dir('/var/jenkins_home/restagram/api') {
sh '''
mkdir -p ${WORKSPACE}/src/main/resources/
cp application.yml ${WORKSPACE}/src/main/resources/
cp keystore.p12 ${WORKSPACE}/src/main/resources/ # 추가
'''
}
7️⃣ 새로 빌드를 하면 끝 !
참고
https://firstblog912.tistory.com/233
'프로젝트 > CICD' 카테고리의 다른 글
[CI/CD] nginx 설치부터 Let's Encrypt 인증서 발급 받기 with Ubuntu 24.04 (1) | 2024.06.20 |
---|---|
[CI/CD] 가비아에서 도메인을 구매한 후 AWS EC2 서버 연결하기 (0) | 2024.06.19 |
[CI/CD] 도커와 젠킨스, 그리고 WebHooks로 React 자동 배포로직 만들기 (0) | 2024.06.19 |
[CI/CD] 도커와 젠킨스, 그리고 WebHooks로 Spring boot 자동 배포로직 만들기 (4) | 2024.06.19 |
[트러블슈팅][QueryDSL/CI/CD] Attempt to recreate a file for type QClass 해결 (0) | 2024.06.19 |