|
수누핑 공격에 방어하기 위해 인터넷 연결에 대한 근본적인 보안을 강화하기 위한 방법으로 소켓을 암호화 할 수 있다.
이 방법은 트랜잭션에 대한 기밀성과 인증, 무결성을 제공한다.
보안소켓을 생성하는 것은 JSSE를 사용하여 보안통신을 위한 통신협상과 필요한 암호화를 투명하게 처리하는 소켓과 서버 소켓을만들 수 있다.
소켓과 스트림을 통해 데이터를 보내기만 하면 된다. JSSE(Java Secure Socket Excetion)은 4개의 패키지로 나뉜다.
Javax.net.ssl 보안 네트워크 통신을 위한 자바 API를 정의하는 추상 클래스.
Javax.net 보안 소켓을 생성하기 위해 생성자 대신 사용되는 추상 소켓 팩토리 클래스.
Java.security.cert SSL에 필요한 공개키 인증서를 다루는 클래스
Com.sun.net.ssl JSSE에 대한 썬 마이크로시스템즈의 참조 구현 안에 있는 암호화 알고리즘과 프로토콜을 구현한 구상 클래스이다.
보안 클라이언트 소켓 만들기
Java.net.Socket 객체를 생성하는 대신, javax.net.ssl.SSLSocketFactory로 부터 createSocket() 메소드를 사용하여 소켓 객체를얻을 수 있다.
SSLSocketFactory는 추상 팩터리 패턴을 따르는 추상 클래스이다.
정적 SSLSocketFactory.getDefault() 메소드를 호출하면 SSLSocketFactory의 인스턴스를 얻을 수 있다.
SocketFactory factory = SSLSocketFactory.getDefault();
Socket socket = factory.createSocket("login.ibibloio.org", 7000);
CreateSocket는 파라미터에 따라 5섯개의 createSocket 메소드를 제공한다.
->host, port, InetAddress, localPort, InetAddress, autoClose를 상황에 따라 부여하여 생성할 수 있다.
->autoClose 인자는 이 소켓이 닫힐 때, 내부 프록시 소켓에 대한 연결을 닫을지 여부를 결정
-> 데이터를 주고 받는 것은 기존의 소켓의 동작과 동일하다.
암호화 조합 사용하기
getSuppertedCipherSuites() 메소드는 가능한 알고리즘 조합을 알려준다. 하지만 가능한 알고리즘이 다 사용할 수 있는것은 아니고 일부를 제한될 수 있다.
getEnabledCipherSuites() 메소드는 실제로 해당 소켓에서 적용할 수 있는 암호화 조합을 알려준다.
setEnabledCipherSuites(String[] suites)를 통해 조합을 설정할 수 있다.
'JAVA > 자바 네트워크 프로그래밍' 카테고리의 다른 글
Runnable을 사용한 MD5 다이제스트 생성방법 (0) | 2016.12.24 |
---|---|
HTTP (0) | 2016.12.24 |
소켓 통신 (어플리케이션) (0) | 2016.12.24 |
UDP 통신 (0) | 2016.12.24 |
Java 소켓 통신(서버) (0) | 2016.12.24 |