안그래보이지만 개발자/백엔드

openssl로 자체 서명 인증서 생성 및 톰캣 https 설정 (self-signed certificate)

자네트 2019. 5. 17. 14:05
반응형

SSL/TLS를 위한 테스트용 자체 서명 인증서를 생성하려고 한다

말 그대로 자체-서명이기 때문에 브라우저에서는 신뢰할 수 없는 인증서라고 자꾸 경고하지만

테스트용으로는 편리하게 사용할 수 있다

이 게시물은 내가 공부하는 용도로 작성하는 기록물이다.

 

1. 개인키 생성

# openssl genrsa -des3 -out keyname.key.origin 2048

keyname은 마음대로 설정한다.

중간에 비밀번호를 물어보므로 하고 싶은 비밀번호를 적는다. 어차피 곧 제거할 것이다.

keyname이라는 키 파일을 생성했다. 이대로 사용하면 비밀번호가 걸려 있는데 귀찮으므로 비밀번호를 제거한다.

 

2. 인증 요청서 (CSR) 생성

# openssl req -new -key keyname.key.origin -out csrname.csr

csrname은 마음대로 설정한다.

방금 설정한 키의 비밀번호를 물으니 입력해준다.

이후 Country Name, State Name 같은 걸 묻는데 적당히 적어준다.

단 Common Name은 https를 적용할 서버의 도메인이나 IP를 적어준다. 안 적어주면 브라우저에서 신뢰할 수 없는 인증서라고 나온다. (그래도 뚫고 들어갈 수 있긴 하다)

challenge password나 optional company name은 말 그대로 optional 하므로 그냥 엔터쳐서 넘어가도 된다.

 

3. 개인키 비밀번호 제거

# openssl rsa -in keyname.key.origin -out keyname.key

1에서 생성한 키 origin 파일 이름을 넣으면 비밀번호가 제거된 키가 생성된다.

제거하지 않으면 번거롭게 자꾸 비밀번호를 물어본다고 한다.

처음부터 제거했기 때문에 경험하진 않았다.

 

4. 인증서 생성 (CRT)

# openssl x509 -req -days 3650 -in csrname.csr -signkey keyname.key -out crtname.crt

2에서 생성한 csr 파일과 3에서 비밀번호를 제거한 키파일을 입력하여 crt 파일을 생성한다.

3650은 유효 기간(일)이다. 귀찮아서 3650일로 설정.

 

5. 톰캣에서 사용할 수 있는 키스토어 파일 생성

# openssl pkcs12 -export -in crtname.crt -inkey keyname.key -out keyname.p12 -name tomcat

톰캣은 jks, pkcs12 등을 지원하기 때문에 pkcs12 포맷 파일을 생성하였다.

키스토어 비밀번호를 입력하라고 나오면 적당히 원하는 비밀번호를 설정한다.

 

6. 톰캣 설정 변경

<Connector protocol=org.apache.coyote.http11.Http11NioProtocol"
			port="8443" SSLEnabled="true" maxThreads="200"
            scheme="https" secure="true"
            keystoreFile="p12 파일이 위치한 경로"
            keystorePass="키스토어 생성시 입력한 패스워드" keystoreType="pkcs12"
            clientAuth="false" sslProtocol="TLS" />

톰캣 디렉토리 내 conf/server.xml 파일을 수정한다.

https 관련 설정이 주석처리 되어 있으므로 주석을 지워주고 위처럼 설정한다.

 

톰캣을 재시작하면 https 접속이 가능하다.

반응형