테스트를 위해 IIS 서버를 구축하여 https 서비스를 올렸다.
https://192.168.130.134 로 접속하였을때 wireshark 캡쳐 내용은 아래와 같다.
TLSv1.2 Payload is encrypted application data 라고 되어있음. 이제 복호화를 해보자.
크롬이나 파이어폭스는 SSLKEYLOGFILE 를 이용해서 private key 없이도 복호화가 가능하다. 편리함. 굳이 내가 인증서를 알고있는 서버 아니라도 가능하다는 소리.
하지만 IE는 서버쪽 private key를 알아야만 복호화가 가능하다. 복잡해진다...
바로되지도 않는다....ㅠ
1. IIS 서버의 인증서를 export 한다. 아래와 같이 설정후 패스워드를 넣고 저장한다.
2. 이제 클라이언트쪽으로 와서 wireshark을 열고 Application Data에서 팝업메뉴를 열고
Protocol Preferences->Open TLS preferences...를 클릭한다.
3. RSA keys list의 Edit 버튼을 클릭해서 아래와 같이 IIS Server에서 추출한 키를 추가한다.
4. 아래와 같이 HTTP2 포맷의 데이타가 보인다.
** 키를 넣어도 복호화가 안될때가 있다.
그럴때는 TLS debug file 에 파일을 지정해주면 에러상태등을 확인할 수있다.
ssl_decrypt_pre_master_secret: session uses Diffie-Hellman key exchange (cipher suite 0xC02F TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) and cannot be decrypted using a RSA private key file.
cipher suit에 diffie hellman 이 포함되있으면 wireshark에서 decyrpt 가 불가능하다.
cipher suit에서 DHE가 들어간 cipher suit을 제거한다.