본문으로 바로가기

SSL이란?

SSL은 Secure Sockets Layer 의 약자로 보안 소켓 계층을 이르는 말. 월드 와이드 웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고받기 위한 인터넷 통신 규약 프로토콜.

SSL 기능

  1. 스니핑(sniffing) 방지
    1) 스니핑은 네트워크 중간에서 남의 패킷 정보를 도청하는 스니퍼를 활용한 해킹 기법
    2) SSL 인증서 설치를 통해 모든 정보를 암호화하여 중간에서 정보를 볼 수 없도록 처리
  2. 사이트 피싱(phising) 방지
    1) 사이트 피싱은 기관을 사칭한 홈페이지로 개인정보를 해킹하는 사이버 공격
    2) 신뢰할 수 있는 인증기관으로부터 심사를 통해 사칭 사이트가 아님을 인증하여 신뢰성을 확보
  3. 데이터 변조 방지
    1) 데이터를 변조할 수 있는 위험을 방지 가능
  4. 서버인증, 클라이언트인증, 데이터 암호화

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>