전체 글

전체 글

    [네트워크] HTTPS은 무엇이고 SSL은 어떻게 통신할까?

    [네트워크] HTTPS은 무엇이고 SSL은 어떻게 통신할까?

    이번 포스팅은 HTTPS와 SSL 통신과정에 대해 정리해보겠습니다. HTTP(Hyper Text Transfer Protocol) HTTP는 사용하면 클라이언트와 서버간의 요청 및 응답을 주고 받을 수 있는 프로토콜입니다. 하지만 HTTP는 암호화되지 않은 평문 데이터를 전송하는 프로토콜이라 해커가 탈취를 하면 데이터를 조회할 수 있습니다. HTTPS(Hyper Text Transfer Protocol Secure) HTTPS는 비대칭키(공개키/개인키) 암호화 방식을 사용하여 클라이언트와 서버간의 주고 받는 데이터를 암호화하는 프로토콜입니다. HTTPS는 HTTP에 SSL을 사용하여 보안을 한층 업그레이드 했다고 보면 됩니다. HTTPS를 사용하면 해커가 정보를 탈취해도 데이터가 암호화되어 있기 때문에 ..

    [스프링부트] MockMvc Test 2가지 방법

    스프링부트에서는 MockMvc로 테스트를 하는 방법에는 두 가지가 있습니다. 1. @SpringBootTest와 @AutoConfigureMockMvc UserController가 존재한다고 가정해보겠습니다. @SpringBootTest @AutoConfigureMockMvc class UserControllerTest() { @Autowired private MockMvc mockMvc; @Test void register() { // todo: ... } } 스프링부트에서는 Test 클래스를 만들면 @SpringBootTest 어노테이션만 붙어 있습니다. MockMvc로 테스트를 하기 위해서는 @AutoConfigureMockMvc를 추가적으로 붙여야 합니다. 주의할 점은 Test 클래스에서는 Moc..

    [스프링부트] Tiles, JSP 사용을 위한 Dependency 설정 및 JSP 수정사항 자동 반영하기

    [스프링부트] Tiles, JSP 사용을 위한 Dependency 설정 및 JSP 수정사항 자동 반영하기

    타일즈 및 JSP 사용을 위한 Dependency 설정 스프링부트 2.x 기준으로 타일즈를 설정할 때는 아래와 같이 3개의 dependency가 필요하다. 1. 스프링부트에서는 JSP 사용을 권장하지 않아 JSP를 사용하려면 추가적인 org.apache.tomcat.embed dependency가 필요하다. 2. 타일즈를 사용하기 위해서는 jstl을 dependency가 필요하므로 추가해주면 된다. 3. 타일즈 dependency를 추가한다. org.apache.tomcat.embed tomcat-embed-jasper javax.servlet jstl 1.2 org.apache.tiles tiles-jsp 3.0.7 JSP 수정 시 자동 반영 JSP를 수정했을 때 톰캣을 다시 시작하는 것은 정신건강에 ..

    [AWS] VPC 엔드포인트를 사용하는 이유

    [AWS] VPC 엔드포인트를 사용하는 이유

    aws 리소스인 s3, codecommit 등은 VPC 밖에 위치해있다. 그래서 public subnet에서는 인터넷 게이트웨이가 연결되어 있어 s3, codecommit 등과 네트워크 통신이 가능하지만 private subnet에서는 인터넷 게이트웨이가 연결되어 있지 않기 때문에 nat-gateway를 설정함으로써 s3, codecommit 등과 통신을 할 수 있다. 그런데 VPC 내에 nat-gateway를 사용하면 'NAT Gateway 시간당 요금'이 부과된다. 그리고 외부로 한 번 나갔다 들어오기 때문에 private subnet에서 '직접' 접근하는 것보다 속도가 느리다. (별 차이는 없겠지만) 그렇다면 private subnet 내에 위치한 EC2들이 nat gateway를 사용하지 않고 s..

    [Java] Comparable, Comparator 인터페이스를 사용하여 비교하고자 하는 기준을 정해 객체를 내맘대로 정렬하기

    [Java] Comparable, Comparator 인터페이스를 사용하여 비교하고자 하는 기준을 정해 객체를 내맘대로 정렬하기

    Comparable 인터페이스, Comparator 인터페이스를 사용함으로써 비교하고자 하는 기준을 정해 객체를 내 마음대로 정렬할 수 있다. 말이 조금 어려울 수 있다. Comparable, Comparator 인터페이스는 객체를 정렬시킬 때 꼭 등장하는 놈들이다. Comparable은 '비교할 만한', '견줄만한'하다는 의미를 가지고 Comparator는 '비교 측정기' 라는 의미를 가진 것처럼 이놈들의 용도는 객체를 정렬하기 위한 기준을 정하는 것이다. Comparable 인터페이스에는 compareTo(T o) 메서드가 정의되어 있어 이를 구현해야 하고 Comparator 인터페이스에는 compare(T o1, T o2) 메서드가 정의되어 있어 이를 구현해야 한다. 위 두 개의 메서드를 통해 추측..

    [Network] nslookup을 통한 웹 ip address 알아내기

    [Network] nslookup을 통한 웹 ip address 알아내기

    1. 윈도우에서 명령프롬프트(cmd)를 켠다. 2. [nslookup + 알고싶은 홈페이지 주소]를 적는다. 네이버 메인 페이지는 총 4개의 ip 주소를 사용하는 것을 알 수 있다. 서버: kns.kornet.net Address: 168.126.63.1 여기서 kns.kornet.net은 DNS Server의 주소를 나타낸다. 나는 KT 공유기를 사용하고 있기 때문에 KT 측에서 제공하는 DNS Server가 자동으로 연결이 되어 사용하고 있다. 각 통신사별 DNS Server 주소는 아래 홈페이지에서 확인이 가능하다. http://passkorea.net/Board/ViewDoc.aspx?brdNo=8&docNo=131 각 ISP 업체별 DNS 서버목록 입니다. > 패스코리아넷 - 그룹웨어, 인트라넷..

    [Network] hosts 파일과 DNS

    [Network] hosts 파일과 DNS

    hosts 파일 윈도우에는 hosts라는 파일이 존재하는데 해당 파일은 C:\Windows\System32\drivers\etc\hosts 경로에 위치한다. hosts 파일은 아래 사진처럼 기본 세팅이 되어 있다. 네이버 메인페이지의 ip는 125.209.222.141이다. 우리는 naver.com 으로 접속할 수 있다. 그런데 cbw1030.com 으로 접속을 했을 때 네이버 메인 페이지로 접속이 되도록 할 수 있다. 이 hosts 파일을 아래와 같이 변경해주면 된다. 관리자의 권한을 통해서만 해당 hosts 파일을 수정할 수 있다. 이렇게 동작하는 이유는 주소창에 cbw1030.com을 입력했을 때 가장 먼저 hosts 파일에 cbw1030.com에 대해 ip 주소값이 매핑되어 있는지 확인하기 때문이..

    [Java] try-with-resources 구문을 사용하여 할당한 자원을 자동으로 해제하기

    jdk 1.7부터 할당한 자원을 자동으로 해제할 수 있는 try-with-resources 구문이 추가됐다. try-with-resources를 사용하지 않는 경우에는 finally 부분에 작성을 하여 자원을 해제했다. // try-with-resources 구문을 사용하지 않은 경우 FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fis != null) { fis.close(); } } try-with-resources 구문을 사용하면 깔끔하게 작성이 가능하다. try ( FileInputSt..

    [블록체인] RBF(Replace By Fee) Protocol

    불법적인 거래나 이상적인 거래를 탐지했을 때 이를 차단할 수 있는 방법으로 멤풀에 있는 처리되지 않은 트랜잭션을 높은 수수료를 가진 새로운 트랜잭션으로 교체할 수 있다. 비트코인을 송금할 때 전송량이 많으면 처리되지 못한 트랜잭션은 Memory Pool에서 대기하게 된다. 멤풀에서 처리되는 우선순위는 수수료가 높은 순이다. https://www.blockchain.com/charts/mempool-size mempool-size The aggregate size in bytes of transactions waiting to be confirmed. www.blockchain.com 역대 비트코인 멤풀 사이즈를 차트로 볼 수 있는 사이트이다. 무튼 해커가 지갑을 털어 비트코인을 해커 지갑으로 송금했을 때..

    [Javascript] 이벤트 루프 동작과정에 대한 이해

    [Javascript] 이벤트 루프 동작과정에 대한 이해

    이벤트 루프(Event Loop) 이벤트 루프란 자바스크립트 엔진이 아닌, 구동하는 환경(브라우저, 노드)에서 가지고 있는 장치이다. Call Stack과 Callback Queue를 감시하며, Call Stack이 비어있을 경우 Callback Queue에 담긴 콜백함수를 Call Stack에 넣어 실행시키는 역할을 한다. 아래 예시를 보자. console.log('시작'); setTimeout(function() { console.log('중간'); }, 0); Promise.resolve() .then(function() { console.log('프로미스'); } ); console.log('끝'); 위의 코드의 호출 순서는 어떻게 될까? '시작' -> '끝' -> '프로미스' -> '중간' 이유..