
인터넷 상에서 데이터를 안전하게 전송하기 위한 암호화 프로토콜이다. 웹사이트와 브라우저 간의 통신을 암호화하여 중간에 데이터가 유출되거나 변조되지 않도록 보호한다. SSL은 주로 웹사이트 주소 앞에 https://를 사용하여 나타낸다. 이는 해당 사이트와 사용자 간의 모든 통신이 암호화되었음을 의미한다.
📌 즉, 안전한 사이트입니다. 라고 인증하기 위해서 SSL 인증서를 적용해야한다.(HTTPS)
SSL은 CA(Certificate Authority, 인증기관)에서 유료로 발급해주는 인증서로 보안 연결(https)을 가능하게 한다.
https의 보급을 위해 mozilla, cisco, chrome, meta, aws 등 다양한 기관에서 후원을 해 2016년에 Let's Encrypt 라는 이름의 무료 인증기관이 생겼다.
Certbot 설치
sudo apt update
sudo apt install certbot
Certbot을 어떤 방식으로 구동할지 선택(standalone)
sudo certbot certonly --standalone
본인 이메일 입력
본인 도메인 입력
📌 Congratulations가 뜨면 성공
📌 etc/letsencrypt/live/도메인/경로에 fullchain.pem(인증서 파일)과 privkey.pem(비공개 키)이 발급 되었는지 확인
Spring Boot는 .p12 형식의 키스토어를 요구하기 때문에, openssl 명령어를 사용해 인증서를 .p12로 변환
sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name yourdomain
📌 Enter Export Password가 나오는데 여기서 입력한 패스워드 기억하기
변환된 keystore.p12를 SpringBoot 프로젝트에 다음 경로로 옮기기
src/main/resources/ssl/keystore.p12
📌 ssl 디렉토리는 새로 만들기
Spring Boot의 application.properties 또는 yml 파일 수정
server.port=443
server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:ssl/keystore.p12
server.ssl.key-store-password={1번에서 입력한 패스워드 입력}
server.ssl.key-alias={도메인}
이제 애플리케이션 빌드하고 배포해서 https 붙으면 성공!
아직 학생이라 부족한 점이 있을 수 있습니다. 댓글과 피드백은 언제든지 환영입니다!
이미지 출처 : By Fabio Lanari - Internet1.jpg by Rock1997 modified., CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=20995390