작성일자 : 2020.01.24
환경 : CentOS 7, Apache 2.2 ,Tomcat 7, OpenSSL 1.0.2
시나리오 : 서비스 서버를 인증서버로 활용하여 Apache Web Server, Tomcat WAS 에 각각 SSL 적용
1. 인증서 만들기 (OpenSSL 활용)
OpenSSL 설치
> yum install openssl -y |
OpenSSL 설치 확인
> openssl version |
인증기관(CA) 개인 키 발급
> openssl genrsa -des3 -out server.key 1024 |
발급 과정 중 개인키 패스워드 지정 필요.
자가 서명이기에 내 자신이 인증기관이며, 개인 키 생성이 인증기관 개인 키 발급하는 과정이 된다
csr (Certivicate Sinning Request - 인증요청서) 생성
> openssl req -new -days 365 -key server.key -out ssl.csr |
앞에서 지정한 패스워드 입력 필요
정보 입력 부분은 전부 Default 로 진행
인증서 (crt : Cretificate) 생성
> openssl x509 -req -days 365 -in ssl.csr -signkey server.key -out ssl.crt |
2.1) Case1 : Apache SSL 적용
mod_ssl.c 모듈 확인
%APACHE_HOME%/bin/ > ./apachectl -l |
mod_ssl.c 가 없다면 apache 설치 과정에서 추가하거나, 동적으로 적용해야함
apache 설치 중 ./configure --enable-ssl 명령어를 통해 해당 모듈 사용 설정 가능
* ssl 모듈 추가 설정 후 설치 진행 과정에서 아래와 같은 에러 발생 시, openssl-devel 추가 설치
> yum install openssl-devel -y |
Apache 설정
SSLCertificateFile 인증서 파일 설정
SSLCertificateKeyFile 키 파일 설정
SSLCACertificateFile 는 설정하지 않아도 동작한다. 진행하는 테스트 환경은 자가 서명이라 체이닝이 필요 없기 때문일듯(추측..)
%APACHE_HOME%/conf/extra/httpd-ssl.conf
SSLCertificateFile "path" SSLCertificateKeyFile "path" # SSLCACertificateFile "path" // 체이닝이 필요할 경우 설정 |
%APACHE_HOME%/conf/httpd.conf
Include conf/extra/httpd-ssl.conf |
SSL 설정파일을 포함하는 설정
Apache 시작
시작 시 앞에서 설정했던 키 패스워드 입력
HTTPS(SSL) 적용 확인
http 접근 시
https 접근 시
신뢰할 수 없는 인증서이기에 처음엔 위 처럼 뜬다
무시하고 접근 가능
2.2 Case 2 : Tomcat SSL 적용
인증서를 tomcat 용으로 변환
> openssl pkcs12 -export -in ssl.crt inkey server.key -out .keystore -name tomcat |
변환 과정에서 key 패스워드 입력 및 keystore 패스워드 지정 필요
tomcat 설정
%TOMCAT_HOME%/conf/server.xml
server.xml 에 아래 설정 기본 옵션이 주석처리되어 적혀있음
<Connector port="%PORT_NUMBER%" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorePass="%PASSWORD%" keystoreFile="%KEYSTORE_FILE_PATH%"/> |
HTTPS(SSL) 적용 확인
http 8080 접근 시
https 8443 접근 시
3. 인증서 정보