요즘 취미 코딩에 빠져 이것저것 하며 즐거운 나날을 보내고 있다. 😄
오늘은 SSL 서버 테스트를 해 보았다.
www.ssllabs.com/ssltest/
처음 시도에서 B가 나왔다. 우리 끈닷넷 서버가 A가 아니라니!!!
주된 이유는 서버에서 TLS 1.0과 1.1을 지원하고 있어서다. 걔네들은 안전하지 못한 프로토콜들이란다. 그래서 Apache의 ssl.conf
와 Let's Encrypt의 options-ssl-apache.conf
을 수정했다.
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
오! A로 바뀌었다. 내친김에 더 해 보자.
다음엔 리포트에서 이야기 한 안전하지 못한 암호화 방식들(cipher suites)을 options-ssl-apache.conf
로부터 지웠다.
여전히 A다. 방금 지운 암호화 방식들 때문에 아래 브라우저/운영체제들과는 hand shaking에서 실패한다. 괜찮다. 6년 전 OS들이다. 😤
자, 다음 스텝은 HTTP Strict Transport Security, HSTS다. "이 사이트에서는 https만 쓰겠다고 약속"하여 중간자 공격을 피해보겠다는 것이다.
이런 약속을 하겠다 한다 한들 약속을 하기 전에 http로 접근하면 중간자 공격에 당하는 건 마찬가지 아님? 예전에 비슷한 고민*으로 결국 결론을 내지 못했었는데 이건 나의 무지에서 비롯된 것이었다. 이미 해결책은 존재한다.
blog.kkeun.net/computer/2017-03-13-start-with-https
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
2년 동안, 모든 서브 도메인에 대해서 https를 쓰겠다는 약속이다. 특히 preload
를 이용해서 내 약속을 모두가 볼 수 있는 공간에 미리 등록할 수 있다. (여기서 hstspreload.org/) 그러면 끈닷넷에 처음 방문하는 사람도 무조건 https를 쓰도록 브라우저가 강제할 것이다. 한 번 약속을 하면 무르기가 쉽지 않다고 하니 약간 무섭다.
오! 한 단계 더 올랐다. HSTS preloading에 시간이 걸려 아직 그건 점수에 반영되지 않았지만 그럼에도 올랐다.
아직 Key Exchange와 Cipher Strength가 90점이다. 무엇을 고치면 될까?
discussions.qualys.com/thread/19239-how-to-understand-90100-on-key-exchange
하하 역시 같은 고민을 하는 사람이 많다. 이야기대로 인증서 RSA 키 크기를 4096으로 늘렸다. 두근두근.
변화가 없다. Key Exchange도 그대로다. 그냥 여기서 만족을. 어차피 네 항목을 모두 100점 받아도 A+인 건 똑같은가 보다.
webmasters.stackexchange.com/questions/114447/ssl-labs-cipher-strength-100-why-how-do-i-make-it
헐 정말 오래 Let's Encrypt 툴 업그레이드를 안했구나. 미안. 오히려 그동안 잘 돌아 준 것이 신기하네.
이제 진짜 취미 코딩을.
2020-03-22 씀.