https 접속을 위한 ssl 공인인증 적용
http 접속으로 발생하는 보안 경고는 사용자에게 불편함을 느끼게 한다
또한 최근 유저정보의 비밀번호 해싱작업중
클라이언트에서 해싱하는것이아닌 서버에서 해싱하는것이 보안에 더욱 안전하며
클라이언트에서 서버로 전송되는 유저정보중 비밀번호가 노출 될수있다는 고민은
https를 지원하는 서비스에서 해당사항이 없다는것을 알게 되었다
즉 https 를 지원하면서 해싱을 서버에서 처리하면
해사방법을 노출시키지도, 유저정보를 노출시키지노 않는 안전한 방법이라는 결론을 내렸다
그리하여 내 사이트에 https 접속을 지원하도록 했다
작업시간은 3일 소요되었고
zeroSSL 공인인증 과 kro.kr 도메인으로 지출은 없으면서 https 인증을 성공 하였다
개발환경
로컬 - 맥 환경에서
클라우드 - OCI 의 오라클 리눅스8 (트라이얼)
환경에서 구현했으며
Springboot 3.1.4 의 임베디드 톰캣10.1.13 에 yml파일에 ssl설정을 세팅했다
작업 순서
- 도메인 구매 (kro.kr)
- ssl 인증서 발행 (zeroSSL, cname)
- keystore.p12 인증서 생성(openssl)
- springboot ssl 설정 (yml)
- 네트워크,방화벽 설정
- 배포(jar)
- 접근 확인
이 기록은 서드파티 웹,앱서버 없이 spring boot의 기본 서버를 활용했으며 구현을위한 요금이 발생하지않고 오라클 vcn설정과 리눅스8을 사용했다, 도메인과 ssl 인증은 기록하지않고 인증서 사용과 성공여부를 확인하는것을 기록했다
zeroSSl 에서 도메인을 인증 후 발급받은 인증서 파일은 다음과 같다
공개키 인증서, 중간인증서, 개인키파일 3개가 압축파일로 받아진다
keystore.p12 파일을 생성한다
# openssl pkcs12 -export -out keystore.p12 -inkey private.key -in certificate.crt -certfile ca_bundle.crt
명령어 입력시 비밀번호를 보관한다
해당 인증서의 생성 위치는 상관없으며 나는 로컬에서 생성 했다
하지만 서버에서 생성시 파일을 사용할수있도록 그룹권한을 열어줘야 한다
그리고 트러스트스토어는 생성하지않았다
keystore.p12 파일을 서버에 저장한다 (해당 디랙터리 위치가 ssl의 설정 key-store 에 반영된다)
server:
port: 443
ssl:
enabled: true
key-store: /myPath/myServiceIs/SML/ssl/keystore.p12
key-store-password: xxxx
key-store-type: PKCS12
오라클인스턴스의 vcn 규칙중 https 에 대한 네트워크규칙을 설정한다(443)
ssl 설정이 포함된 빌드 파일을 리눅스 서버에 배포하기전에
새로운 포트로 네트워크 연결이 가능한지 확인해본다
리눅스 방화벽에 443포트를 설정한다
# sudo firewall-cmd --add-port=443/tcp --permanent
# sudo firewall-cmd --reload
빌드파일을 백그라운드 실행
nohup java -jar myservice.0.0.0jar &
접속 확인
끝
+
이번작업이 오래 걸린 이유 -
방화벽 설정중 리눅스 버전에따라 바뀐 명령어로 443 포트가 닫혀있는것을 인지하지 못한것
인증된 도메인을 로컬에서 확인하려함
인증서에 대한 기본지식을 먼저 공부하지않음
2024 02/29 https 접속 지원 완료
'걸어서 개발 속으로' 카테고리의 다른 글
서버에서 정렬 vs DB에서 정렬 (0) | 2024.05.15 |
---|---|
admin page를 위한 차트 구현의 잿빛로드 (1) | 2024.03.31 |
html snippet include (0) | 2023.12.23 |
HttpSession 와 HttpServletRequest (0) | 2023.12.20 |
OpenWrt 21.02 불친절한 패키지 속에서 살아남기 (0) | 2023.12.03 |
댓글