Step 1
SSL 인증서 발급 프로그램 다운
https://sourceforge.net/projects/openssl/files/latest/download?source=typ_redirect%EF%BB%BFVisit
Step 2
개인키 발급
genrsa -des3 -out [키이름] 2048
ex) genrsa -des3 -out private.pem 2048
- genrsa : RSA 개인 키 생성
*RSA : 공개 키 암호 알고리즘, 해독이 어려워 전자서명에 사용된다. - des3 : 암호화 방식
- out [키이름] : [키이름]으로 출력
*pem : 키와 인증서를 파일 하나로 만든다. - 2048 : 생성할 개인 키의 크기(비트)
Step 2-2
공개키 발급
genrsa -out [키이름] 2048
ex) genrsa -out private.key 2048
step 2-3
개인키와 공개키 파일 생성
rsa -in [개인키] -pubout -out [공개키]
ex) rsa -in private.key -pubout -out public.key
- rsa : rsa 키 처리
- in : 키를 읽을 입력 파일 이름 지정
- pubout : 공개 키 출력
- out : 출력 파일 이름 지정
Step 3
CSR(인증요청서) 생성
req -new -key [키] -out [CSR이름.csr]
ex) req -new -key private.key -out private.csr
openssl.cnf 파일을 읽지 못할 때 경로를 지정해서 찾아줌
ex) req -new -config ./openssl.cnf -key private.key -out private.csr
- req : PKCS#10 형식의 인증서 요청 생성 , 처리
- new : 새 인증서 요청
Step 4
CRT(인증서) 생성
Step 4-1
rootCA 생성
genrsa [암호화 알고리즘] -out [키이름] 2048
ex) genrsa -aes256 -out rootCA.key 2048
Step 4-2
rootCA 사설 CSR 생성
req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem
openssl.cnf 파일을 읽지 못하는 경우 절대경로 설정
req -x509 -new -config ./openssl.cnf -nodes -key rootCA.key -days 3650 -out rootCA.pem
Step 4-3
CRT 생성
x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650
- CAkey : 인증서에 서명할 CA 개인 키 설정
- CAcreateserial : 존재하지 않는 경우 CA 일련 번호 파일이 생성된다.
Step 4-4
.keystore 생성
pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat
- pkcs12 : PKCS#12 파일(PFX 파일이라고도 함)을 만들고 구문 분석
- export : PKCS#12 파일이 구문 분석되지 않고 생성되도록 지정
- inkey : 개인 키를 읽을 파일
- name : 일반적으로 파일을 가져오는 소프트웨어
Step 5
Tomcat에 적용 ( server.xml 수정 )
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="파일경로/.keystore" certificateKeystorePassword="password" type="RSA" />
</SSLHostConfig>
</Connector>
도커(Docker) 컨테이너에서 vi 사용하는법
현재 도커 컨테이너에는 리눅스 vi 명령어를 사용할 수 없다.
( 톰캣과 JDK만 설치되어있는 이미지기 때문에 )
그렇기 때문에 vi 명령어를 사용할 수 있는 vim 을 설치해야함
apt-get update
apt-get install nano
apt-get install vim
도커 컨테이너 bash창을 열고 다음과 같이 명령어를 수행하면 된다.
vi가 아닌 vim 으로 실행하면 된다.
ex ) vim server.xml
이렇게 한다면 톰캣 컨테이너 내의 server.xml 파일을 수정할 수 있다.
오류 해결법
로그를 보니 .keystore 경로를 내 경로에서 읽지 못하길래, 어떻게 인식을 시켜줄까 고민을 했다.
생각해보니 Docker 에서 마운트 볼륨으로 설정한 곳을 webapp처럼 읽기 때문에 .keystore 파일을
해당 경로에 직접 넣어주었다.
다음과같이 해당 볼륨을 webapp으로 읽고 있기 때문에
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/usr/local/tomcat/webapps/.keystore" certificateKeystorePassword="password" type="RSA" />
</SSLHostConfig>
</Connector>
다음과 같이 작성해주었다.
[Docker 컨테이너 포트 설정]
컨테이너의 443 포트를 로컬포트 444로 내보내도록 설정한 것이고,
컨테이너포트의 8080 포트를 로컬포트 8888로 내보내는 것이다.
그 후 역방향 프록시를 사용하여
받아놓은 도메인 주소를 https 기본 포트인 443 포트로 접속하게 되면
내부 톰캣의 444 포트를 사용하도록 설정하였다.
[역방향 프록시 설정]
'개발자노트 > 혼자 끄적끄적' 카테고리의 다른 글
리액트 - 범위 슬라이더 (0) | 2023.03.28 |
---|---|
인텔리제이 커뮤니티 ( IntelliJ Community) 에서 스프링부트 + npm + node.js + 리엑트 환경 실행 (0) | 2023.01.04 |
기술면접 준비 각 키워드 (0) | 2022.10.30 |
Docker Oracle 연결하기 (0) | 2022.10.10 |
Docker - Spring 배포기록 (NAS를 이용한 .war 배포) (0) | 2022.10.10 |