SSL 설정법
Background
- startssl 무료 인증서를 기준으로 설명합니다.
Startssl 인증서 받기
- startssl.com에 가입합니다.
- validations wizard를 클릭하고 진행합니다.
- 어떤 도메인에 대해 ssl을 발급받을지, 도메인이 실존하는지 확인하는 과정입니다.
- certification wizard를 클릭하고 진행합니다.
- private key를 받아서 잠시 저장해둡니다.
- certification 파일도 받아서 잠시 저장해둡니다.
- subdomain 설정은 www로 해야 www.~.com과 ~.com을 같이 사용할 수 있습니다.
- startssl의 ca.pem 파일을 받아 저장해둡니다.
- toolbox에 들어가 Create PKCS#12 (PFX) File 를 선택합니다.
- 3-a, 3-b에서 받았던 키와 입력했던 암호를 넣고
- .p12 파일을 다운받습니다.
Keystore 설정
자바 JDK에 포함된 %JAVA_HOME%/bin/keytool 을 사용합니다.
- keystore를 생성합니다. (tomcat이란 초기 키를 생성합니다. 사용할 일은 없습니다.)
- keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore (path to keystore)
- startssl의 인증 파일을 추가합니다.
- keytool -import -alias startcom.ca -keystore (path to keystore) -trustcacerts -file (path to ca.pem)
- keytool -import -alias startcom.ca.sub -keystore (path to keystore) -file (path to sub.class1.server.ca.pem)
- startssl에서 받은 p12 파일을 추가합니다.
keytool -v -importkeystore -srckeystore (path to p12) -srcstoretype PKCS12 -destkeystore (path to keystore) -deststoretype JKS
Tomcat에 keystore 설정하기
tomcat conf의 server.xml에 Connector 설정을 수정합니다.
<Connector port="8443"
maxThreads="200" scheme="https"
secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore" keystorePass=“키스토어비밀번호"
clientAuth="false" sslProtocol="TLS”/>
keystoreFile 항목을 keystore의 위치로 수정하거나, 만들어진 keystore파일을 tomcat이 접근 가능한 위치로 옮깁니다.
이제 톰캣을 실행시키고 localhost:8443으로 접속했을때, domain이 맞지 않다고 에러페이지가 보이고, 접속을 감행했을 때 톰캣이 뜨면 성공입니다.
nginx 설정하기
보안을 위해 80과 443포트만 열어둔 경우, 톰캣으로 리다이렉션해주는 설정을 해야 한다.
nginx.conf에 아래와 같은 설정을 추가합니다.
server {
listen 80;
server_name (your domain);
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name (your domain);
ssl on;
ssl_certificate (path to certification file)
ssl_certificate_key (path to certification key file)
location / {
proxy_pass https://localhost:8443;
index index.html;
}
}
Tomcat에서 redirect 설정하기
http://tkurek.blogspot.kr/2013/07/tomcat-7-http-to-https-redirect.html
톰캣 기본 설정은 HTTP를 위해 8080 포트를,
HTTPS를 위해 8443 포트를 사용합니다.
톰캣에서 8080으로 들어오는 요청을 8443으로 돌리는 방법은 다음과 같습니다.
server.xml 업데이트
web.xml 업데이트
</web-app> 끝나는 태그 직전에 아래의 마크업을 붙여넣습니다.
<span id="pageNum"/>