[Java][WAS] 특정 브라우저에서 HTTPS 접속 시 화면이 보이지 않는경우 (Cipher Suites 이슈)




PS.
WebLogic 10.3.6 사용중 해당 이슈로 Cipher Suites 강제지정 했었는데, BSU(BEA Smart Update)로 WebLogic Patch 후 Cipher Suites를 강제지정하지 않더라도 WebLogic이 Diffie-Hellman을 사용하지 않아 문제가 사라졌다.



증상

1. 특정 브라우저만 https 접속 시 정상적으로 보이지 않는다.
1004lucifer
2. 같은 브라우저인데 특정 PC에서만 https 접속 시 정상적으로 보이지 않는다. 
  (링크 - GPKI적용 2년차, 일부PC에서 https 접속이 안됩니다. 제발 도와주세요.)

3. Chrome 또는 Firefox 에서 아래와 같은 문자열이 보인다.
  - ERR_SSL_PROTOCOL_ERROR
  - ERR_SSL_VERSION_OR_CIPHER_MISMATCH
  - SSL_ERROR_NO_CYPHER_OVERLAP
  - SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY











PS. 원인을 보기에 앞서..
- SSL/TLS(https) 프로토콜 통신 시 내부 작동사항
  1) 브라우저는 서버(WAS)에 자기가(브라우저 스스로) 처리할 수 있는 암호화 알고리즘 리스트(Cipher Suites)를 서버에 전송한다.
  2) 서버는 해당 리스트중에서 (위에서부터)처리 가능한 암호화 알고리즘을 선택 후 브라우저에 답변한다.

링크 - [Java] SSL/TLS 디버깅 방법 및 로그분석
링크 - 알아두면 쓸데없는 신비한 TLS

원인

1. WAS에서 브라우저가 처리할 수 없는 암호화 알고리즘을 답변한경우
1004lucifer
2. WAS에서 정상적인 암호화 알고리즘을 답변했지만 해당 알고리즘의 보안이 취약하여 화면에 보여주지 않는경우
 - 이부분이 참 이해가지 않는게 브라우저가 처리가능한 알고리즘에 대해서 답변을 했는데 브라우저 스스로 처리 가능하다고 서버에 요청했던 알고리즘이 보안에 취약하니 보여주지 않는다는게 너무 어이가 없었다.



여기서 중요한 부분이 같은 브라우저라도 PC에 따라 서버에 올리는 Cipher Suites의 갯수와 순서가 아래와 같이 다르다.
(특히 IE11의 경우 Cipher Suites 갯수가 크게 차이난다.)

Windows 7 Enterprise K SP1 x64
1004lucifer
[IE 11.0.9600]
Cipher Suites:
[
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_256_CBC_SHA,
    TLS_RSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
    SSL_RSA_WITH_3DES_EDE_CBC_SHA,
    SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
]

[Chrome 63.0.3239]
Cipher Suites:
[
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_256_CBC_SHA,
    SSL_RSA_WITH_3DES_EDE_CBC_SHA
]

[Firefox 39.0]
Cipher Suites:
[
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_256_CBC_SHA,
    SSL_RSA_WITH_3DES_EDE_CBC_SHA
]




Windows 10 Pro(ver. 1803) x64

[IE 11.407.17134]
Cipher Suites: 
[
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_256_CBC_SHA,
    TLS_RSA_WITH_AES_128_CBC_SHA,
    SSL_RSA_WITH_3DES_EDE_CBC_SHA
]

[Chrome 70.0.3538]
Cipher Suites: 
[
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_256_CBC_SHA,
    SSL_RSA_WITH_3DES_EDE_CBC_SHA
]

[Firefox 63.0]
Cipher Suites: 
[
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
    TLS_RSA_WITH_AES_128_CBC_SHA,
    TLS_RSA_WITH_AES_256_CBC_SHA,
    SSL_RSA_WITH_3DES_EDE_CBC_SHA
]






IE11이 WAS에 요청하는 Cipher Suites 가 PC마다 다를 때 나타나는 문제점


만일 WAS에서 처리 가능한 Cipher Suites가 아래와 같다고 해보자.
 - TLS_DHE_RSA_WITH_AES_128_CBC_SHA
 - TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 - TLS_RSA_WITH_AES_128_CBC_SHA
 - TLS_RSA_WITH_AES_256_CBC_SHA
 - SSL_RSA_WITH_3DES_EDE_CBC_SHA


그런 경우에 각 PC-브라우저에서 요청 후 WAS에서 받은 Cipher Suites는 아래와 같으며, 응답받은 Cipher Suites는 브라우저가 올린 Cipher Suites 순서와 상관이 있다.
 - Win7Ent-IE11: TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 - Win10Pro-IE11: TLS_RSA_WITH_AES_256_CBC_SHA


이중에 Win7Ent-IE11 이 받은 DHE(Diffie-Hellman) 대칭키전달방식은 보안에 취약한 문제가 발견되었다.
Win10Pro에서는 정상적으로 화면을 보여주지만 Win7Ent는 화면에 아래의 캡쳐와 같이 보여주며 화면상으로 인터넷에 문제가 있는지 서버에 문제가 있는지 알수가 없다.






해결방안

1. WAS에서 SSL/TLS에서 사용할 Cipher Suites 를 강제로 지정한다.
 - 링크: WebLogic 10.3.6 에서 Cipher Suites 강제지정 방법
1004lucifer
2. 취약한 Cipher Suites를 사용하지 않는 WAS버전으로 업데이트를 하거나 패치를 한다.
 - 링크: 웹로직 Patch 설치/제거/확인 방법 (BSU 이용)


댓글