테스트용 SSL 인증서를 회사에 요청했는데...알아서 하세요(?)라는 대답이 돌아왔다.
이를 극복하기 위해 구글링하며 정리한 내용을 기록하여 보았다.
적용시킬 대상은 Tomcat 8.0 서버이다.
먼저 ssl을 만들기 위한 프로그램을 다운 받는다.
OpenSSL이라는 훌륭한 프로그램을 사용하여 진행 할 예정이다.
https://code.google.com/archive/p/openssl-for-windows/downloads
그럼 아래 단계에 맞추어서 천천히 진행하여 보자.
다운로드 받은 OpenSSL 압축을 풀어준다.
압축을 푼 이후에 bin 디렉토리로 이동하여 openssl.exe를 실행한다.
1. 개인키 , 공개키 만들기를 진행한다.
1) 개인키를 만든다.
* genrsa -des3 -out 키이름 2048
위 명령이 작동하면 OepnSSL 기본 디렉토리에 아래 사진처럼 파일이 만들어진다.
2) https의 ssl 인증서에는 서비스등록할때마다, 비밀번호를 입력해줘야하기 때문에, 비밀번호가 없는 키를 새로 만들어 준다.
* genrsa -out 키이름 2048
3) 개인키를 토대로 공개키를 만들어 준다.
* rsa -in 앞서만든 개인키 -pubout -out public.key
2. CSR(인증요청서) 만들기를 진행 한다.
* req -new -key private.key -out private.csr
만약 위 사진처럼 오류가 난 다면 해당 설정파일을 읽어오지 못한 문제이므로 아래 처럼 하도록 한다.
1) OpenSSL 콘솔에서 나온다 (컨트롤키 + Z)
2) 아래 명령어를 입력한다. 자세히보면 -config라는 옵션으로 openssl.cnf 파일 위치를 지정 한 것을 볼 수 있다.
3) 명령어 : openssl.exe req -config D:\openssl\openssl.cnf -new -key private.key -out private.csr
3. CRT(인증서) 만들기를 진행 한다.
1) rootCA.key 생성한다.
* genrsa -aes256 -out rootCA.key 2048
2) rootCA 사설 CSR 생성한다.
* req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem
3) CRT를 생성한다.
* x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650
4) TOMCAT에 인증서를 적용할것이기 때문에 pkcs12라는 형식으로 바꿔준다.
* pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat
위 단계까지 한다면 작업은 완료 된 것이라 볼 수 있다.
톰캣에서 server.xml 파일을 아래처럼 편집한다.
<Service name="sslTest">
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/키스토어가있는 디렉토리/.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" />
<Connector port="10102" protocol="AJP/1.3" redirectPort="12333" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="배포디렉토리" reloadable="false" useHttpOnly="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
https로 접속하니 잘 나온다.
단계를 표로 정리하여 보았다.
순서 | 내용 |
1 | OpenSSL을 다운 받는다. openssl.exe를 실행 한다. (OpenSSL 압축이 풀린 bin 디렉토리까지 이동 해야 한다.) |
2 | 개인키를 만든다. * genrsa -des3 -out 키이름 2048 |
3 | 비밀번호가 없는 키를 새로 만들어 준다. * genrsa -out 키이름 2048 |
4 | 개인키를 토대로 공개키를 만들어 준다. * rsa -in 앞서만든 개인키 -pubout -out 공개키이름.key |
5 | CSR(인증요청서) 만들기를 진행 한다. * req -new -key private.key -out private.csr * 편의상 private.key는 개인키, public.key는 공개키로 한다. |
6 | 위 CSR 만드는 경우 오류가나면 OpenSSL콘솔을 나온다. 아래 명령어를 입력한다. * openssl.exe req -config openssl디렉토리\openssl.cnf -new -key private.key -out private.csr |
7 | openssl.exe를 실행 한 이후 rootCA.key를 생성한다 * genrsa -aes256 -out rootCA.key 2048 |
8 | rootCA 사설 CSR 생성한다. * req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pe |
9 | CRT를 생성한다. (365일짜리..) * x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 365 |
10 | TOMCAT에 인증서를 적용할것이기 때문에 pkcs12라는 형식으로 바꿔준다. * pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat |
11 | 톰캣 server.xml을 수정한다. |
'Java(자바)' 카테고리의 다른 글
리눅스 jar파일 업데이트(jar -uvf, jar update file) (0) | 2019.10.24 |
---|---|
Java Jsch를 활용하여 파일 다운로드(Jsch sftp, Jsch download file) (0) | 2019.10.23 |
JAVA 반복문 속도 테스트(Java loop speed test, Java stream 속도) (2) | 2019.09.20 |
자바 Soap 클라이언트 간단하게 구현하기 (0) | 2019.09.02 |
JAVA List 중복제거, distinct (stream과 Function을 활용) (0) | 2019.08.06 |
댓글