Coding

인트라넷 환경에서 SSL사용할때 인증서 업데이트 문제 해결

realizm 2017. 11. 21. 09:42

1차 문제는 폐쇄망 환경에 SSL을 적용하면서 접속지연이 발생한 것이었다.


해당문제는 윈도우가 ctldl.windowsupdate.com으로 접속을 시도하는데 폐쇄망이라 접속이 안되면서 타임아웃이 날 때까지 기다리는 것 


방화벽장비가 IP기반으로 차단을 하는데 ctldl.windowsupdate.com에 해당되는 IP가 너무 많아서 해당IP를 모두 open하는 것이 불가능하다고 네트워크쪽에서 전달받았다.


이 문제는 윈도우의 레지스트리에서 인증서 자동업데이트를 비 활성화 시키는 것으로 해결하였다.


CMD창에서 다음과 같이 치면 된다.


reg ADD "HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot" /v "DisableRootAutoUpdate" /t REG_DWORD /d "1" /f



이걸로 해결된지 알았는데 또 다른 문제가 발생했다.

일부 PC들은 또 인터넷들이 되고 있었고 루트인증서가 업데이트 되지 않아서 일부 사이트의 SSL인증서가 인증받지 못하는 문제가 발생한 것


처음에 윈도우에 있는 루트인증서로 인증받지 못하는 사이트들은 위와 같이 인증서 오류가 나는 것.

(사진은 임의로 루트인증서를 지우고 테스트 한 것이다.)


이 문제를 해결하는 근본적 문제는 루트인증서 집합소인 CTL을 내부에 구축하고 윈도우 설정에서 CTL을 내부 CTL로 보게끔 하는 것인데...


윈도우 서버의 잉여 장비도 없고 우리가 사용하는 인증서의 루트인증서는 윈도우에 기본으로 깔리고 있고 2031년까지 유효한지라 굳이 CTL을 구축하지 않고 우회하는 길을 택하였다.

(2031년이 되면 이 문제는 더 이상 나의 문제가 아니니까.)



ping xxx.xxx.xxx.xxx -n 1 -w 200

if %ERRORLEVEL% equ 0 (

  rem 인터넷 되는 PC

  reg ADD "HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot" /v "DisableRootAutoUpdate" /t REG_DWORD /d "0" /f

) else (

  rem 인터넷 안되는 PC

  reg ADD "HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot" /v "DisableRootAutoUpdate" /t REG_DWORD /d "1" /f

)


이렇게 배치파일을 만들어서 실행하면 인터넷 되는 PC와 안되는 PC의 루트 인증서 자동업데이트 여부의 값을 다르게 설정하도록 한 것.


ping을 받는 장비는 내부 장비중 인터넷 제일 앞에 있는 장비로 인터넷으로만 접속이 가능한 장비를 안내받아서 사용하였다.

(ping받는 장비는 외부DNS와 같은 장비를 사용하려고 했으나 만 여개의 클라이언트가 있고 공용IP는 십수개에 불과해서 DDoS공격으로 오인 받을 여지가 있었기에 컨트롤이 가능한 내부장비로 결정하였다)



이건 팁 일 뿐 정석은 CTL을 구축하는 것이다.

참조 : https://technet.microsoft.com/ko-kr/library/dn265983(v=ws.11).aspx

(근데 해봐도 잘 안되더군요. 뭘 잘못한건지...)