SSL이란?
SSL은 Secure Sockets Layer 의 약자로 보안 소켓 계층을 이르는 말. 월드 와이드 웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고받기 위한 인터넷 통신 규약 프로토콜.
SSL 기능
- 스니핑(sniffing) 방지
1) 스니핑은 네트워크 중간에서 남의 패킷 정보를 도청하는 스니퍼를 활용한 해킹 기법
2) SSL 인증서 설치를 통해 모든 정보를 암호화하여 중간에서 정보를 볼 수 없도록 처리 - 사이트 피싱(phising) 방지
1) 사이트 피싱은 기관을 사칭한 홈페이지로 개인정보를 해킹하는 사이버 공격
2) 신뢰할 수 있는 인증기관으로부터 심사를 통해 사칭 사이트가 아님을 인증하여 신뢰성을 확보 - 데이터 변조 방지
1) 데이터를 변조할 수 있는 위험을 방지 가능 - 서버인증, 클라이언트인증, 데이터 암호화
SSL 인증서 설치 방법
SSL 인증서 설치 방법은 인증기관으로부터 비용을 지불하고 인증서를 설치할 수 있고 테스트용으로써 사설인증서를 설치 할 수 있다. 설치 방법은 추 후에 다시 정리를 할 것이다
Tomcat https redirect 설정 방법
- conf/servcer.xml
- 먼저 Apache Tomcat 의 기본 포트인 8080 설정 부분을 보면 redirectPort="8443" 이 기본으로 적용되어 있다. 이 부분은 수정하지 않아도 된다.
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
- 아래는 redirectPort인 8443의 포트 구성이다. SSL 인증서 설치 후 생성된 jks 파일을 경로로 설정 하고 해당 pwd 를 입력
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector port="8443" protocol="HTTP/1.1" maxThreads="150" SSLEnabled="true"
scheme="https" secure="true" keystoreFile="/!!!키스토어경로!!!/~~~~~~.jks" keystorePass="!!!비밀번호!!!" clientAuth="false" sslProtocol="TLS" />
- conf/web.xml
- 같은 경로의 web.xml을 편집기로 열어 아래의 설정을 추가한다.
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL Forward</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
- security-constraint : 패턴과 일치하는 URL에 대한 보안 제약조건을 정의
- web-resource-name : 웹 리소스의 이름
- url-patterns : 0개 이상 가능 웹 리소스를 나타내는 URL 패턴
- user-data-constraint : 웹 리소스에 맺어지는 커넥션에 대해 "transport guarantee"(전송 보장)할 것인가를 선언
- NONE : 커넥션을 보장하지 못한다는 의미
- INTEGRAL : 메시지의 무결성(즉, 보내진 메시지는 변경되지 않은 원본이다)을 보장하는 커넥션이라는 의미
- CONFIDENTIAL : 메시지가 도청되는 것을 방지하기 위해 암호화되어 보내진다는 의미
추가 사항 -> redirect 하지않고 http / https 각각 url에 따라 호출
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL Forward</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPS or HTTP</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>