1. OpenSSL
1.1. SSL 인증서
: HTTPS 통신을 위한 SSL 인증서 발급
SSL(Secure Socket Laye) : 웹서버와 브라우저 사이의 보안을 위해 만들어짐 대칭키를 이용하여 암호화 통신을 함 |
따라서, SSL 인증서란, 해당 웹 사이트가 해킹에 신뢰 있는 사이트인지, 안전한 통신을 하는 사이트인지를 구분하기 위해 누군가 이 사이트가 신뢰 있는 사이트라고 인증을 해주기 위한 인증서로, 인증서 소유자의 email, 소유자 이름, 용도, 유효기관, 발행기관, 공개키 등이 포함되어 있음.
1.2. openSSL 설치
: SSL 인증서를 발급받기 위해서는 openSSL이 필요
https://sourceforge.net/projects/openssl/files/latest/download?source=typ_redirect
설치가 완료되면, C드라이브 바로 아래 경로에 압축을 풀어주고, /bin/openssl.exe 실행
# 경로 |
필자의 경로는 다음과 같음. 만약 실행이 안되는 경우 관리자 권한으로 실행.
또다른 이유로, 실행이 안되는 경우 cmd에서 해당 경로에서 openssl.exe 파일을 실행시킴
1.3. 개인키, 공개키 발급
1.3.1. 개인키 발급
: openssl 실행이 됐다면 개인키를 먼저 생성
OpenSSL> genrsa –out 키 이름 2048
위 방식은 https의 ssl 인증서에는 서비스를 등록할 때마다 비밀번호를 입력해주어야하기 때문에 비밀번호가 없는 키를 만드는 방식이며, 비밀번호가 있는 키를 만드는 방식은 아래
OpenSSL > genrsa –des3 –out 키 이름 2048
: 위 명령어를 실행하면 비밀번호를 두 번 입력하게 되고 비밀번호가 담긴 개인키를 만들 수 있음
1.3.2. 공개키 발급
: 개인키와 쌍이 되는 공개키 만들기
OpenSSL > rsa –in 개인키 –pubout –out 공개키
1.4. CSR(Certificate Signing Request)
: 인증요청서 만들기
SSL 인증의 정보를 암호화하여 인증기관에 보내 인증서를 발급받게 하는 신청서이고, 정보항목에는 국가코드, 도시, 회사명, 부서명, 이메일, 도메인주소 등이 들어가 있음
OpenSSL > req –new –key private.key –out private.csr
(OpenSSL > req –new –key 개인키 –out CSR이름.csr)
만약, 이런 오류(Unable to load config info from /usr/local/ssl/openssl.cnf)가 뜨면 해결방법은 다음과 같음
OpenSSL > req –config ./openssl.cnf –new –key private.key –out private.csr
위 명령어 진행 후 추가 입력 사항은 테스트 목적으로 임의의 값을 입력했음.
1.5. CRT
: 중간 인증서 만들기
1.5.1. 사설CA 만들기
: 자체적으로 만든 사설CA에서 인증을 받은 인증서를 만들기 위해서는 인증서 서명을 해줄 rootCA를 만들기
· rootCA.key 생성 : genrsa 암호화알고리즘 –out 키이름 2048 |
OpenSSL > genrsa –aes256 –out rootCA.key 2048
- pass : root(임의설정)
· rootCA 사설 CSR 생성하기 : rootCA.key를 이용하여 10년짜리 rootCA.pem을 생성 |
임시로 국가, 도시, 회사, 도메인, 메일 값 등을 입력할 것.
1.5.2. CRT 생성
: 1.2.에서 만들었던 CSR 파일을 나만의 커스텀 CA인 rootCA의 인증을 받아 private.crt로 생성
OpenSSL > x509 –req –in private.csr –CA rootCA.pem –CAKey rootCA.key
–CAcreateserial –out private.crt –days 3650
· 보안인증서 private.crt 파일이 생성됐는지 확인
: 발급대상, 유효기간을 확인하면 설정한 값으로 확인
1.6. TOMCAT-인증서 적용
: TOMCAT에 인증서를 적용하기 위해 PKCS #12 형식으로 변경
인증서 파일 형식에는 여러 가지가 있음. 인증서 가져오기 및 내보내기 작업에는 네 가지 파일 형식이 지원되는데 사용자의 특정 요구사항에 맞는 형식을 선택해야 함.
종류로는 개인정보교환(PKCS #12), 암호화 메시지 구문표준(PKCS #7), DER로 인코딩된 X.509 바이너리, Base 64로 인코딩된 X.509 형식이 있음.
여기서는 PKCS #12을 사용할 것.
OpenSSL > pkcs12 –export –in private.crt –inkey private.key –out .keystore –name tomcat
.keystore 파일이 생성된 것을 확인할 수 있음. 이제 이 파일을 사용하여 SSL 통신을 구현할 것.
1.6.1. HTTPS / SSL 암호화 통신 방법
https://namjackson.tistory.com/25
# 방법
1) 서버 측에서 서버에 대한 정보와 인증이 담긴 인증서와 공개키(비대칭키)를 인증기관(CA)에 등록 |
이렇게 통신을 하기 전에 공통키를 암호화 하고 주고받는 단계를 Handshake라고 함
1.6.2. 적용
: .keystore 파일의 위치를 설정
1) 프로젝트에서 keystore 디렉토리에 .keystore 파일을 복사 |
아래 내용을 추가. 그리고 tomcat 서버를 다시 구동 후 브라우저로 확인.
https://localhost:7443 |
'기타' 카테고리의 다른 글
[Windows] 윈도우 방화벽 특정 포트 IP 허용 (0) | 2021.01.27 |
---|---|
DBCP (Database Connection Pool, 커넥션 풀) (0) | 2021.01.19 |
[기타] 코드 네이밍 규칙 (0) | 2021.01.19 |
[Google Play] Leaked AWS Credientials Vulnerability (2) | 2020.10.26 |
[Android] .aab to .apk Convert (0) | 2020.10.26 |