인증서 교체작업기

오늘은 엔터프라이즈 고객사에서 SSL인증서의 기간이 만료되는 시점이 얼마남지않아 이를 교체하는 작업을 진행했다. 이전에 작업이 진행되었어야 했지만 해당 인증서를 교체하다가 장애가 발생했고 이로인해 서버는 항상 의심하고 조심하고 테스트를 해야한다고 느끼는 계기가 되었다 내가 한번만 더 미리 개발서버에서 테스트를 진행하고 테스트를 통해 검증된 작업을 진행했다면 이런 일이 발생하지 않았을텐데 아쉽다. 사실 SSL 인증서가 어떤 역할을 하고 왜 인증서를 교체하는지를 모르고 작업했던 것부터가 잘못된 부분이였다. 잘못된 점을 알았으니 이제 고쳐봐야겠다.

SSL 이란

우선 SSL에 대해서 알아보았다. WIKI에서 SSL에 동작과정에 대해서 자세히 설명이 되어져있어 해당 부분을 가져왔다. 데이터를 암호화하여 안전한 통신을 수행하는 시스템을 의미한다. https로 시작하는 웹사이트는 SSL에 의한 암호 통신이다.

  1. [웹브라우저] SSL로 암호화된 페이지를 요청하게 된다. (일반적으로 https://가 사용된다)

  2. [웹서버] Public Key를 인증서와 함께 전송한다.

  3. [웹브라우저] 인증서가 자신이 신용있다고 판단한 CA(일반적으로 trusted root CA라고 불림)로부터 서명된 것인지 확인한다. (역주:Internet Explorer나 Netscape와 같은 웹브라우저에는 이미 Verisign, Thawte와 같은 널리 알려진 root CA의 인증서가 설치되어 있다) 또한 날짜가 유효한지, 그리고 인증서가 접속하려는 사이트와 관련되어 있는지 확인한다.

  4. [웹브라우저] Public Key를 사용해서 랜덤 대칭 암호화키(Random symmetric encryption key)를 비릇한 URL, http 데이터들을 암호화해서 전송한다.

  5. [웹서버] Private Key를 이용해서 랜덤 대칭 암호화키와 URL, http 데이터를 복호화한다.

  6. [웹서버] 요청받은 URL에 대한 응답을 웹브라우저로부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송한다.

  7. [웹브라우저] 대칭 키를 이용해서 http 데이터와 html문서를 복호화하고, 화면에 정보를 뿌려준다.

SSL 인증서 교체작업

해당 고객사의 인프라팀에게 인증서 관련 파일들을 전달받고 인증서 교체가 필요한서버 두대에 대해서 작업할 인증서를 다시 옮겼다 이 전에 개발 서버에서 충분한 테스트를 하지 않았기 떄문에 이번에는 테스를 하기 위해서 개발서버에도 동일한 인증서를 옮겼다 우리가 적용할 서버는 NODE로 동작되는 서버이다 메인으로 사용중인 js를 열고 아래의 구문을 추가한다

const options = {
	key: fs.readFileSync('./keys/private.pem'),
	cert: fs.readFileSync('./keys/public.pem')
};

그리고 아래에 다음과 같이 서버를 생성해준다.

https.createServer(options, app).listen(3000, function() {
  console.log("HTTPS server listening on port " + 3000);
});

이렇게 설정을 해주고 해당 서버를 실행해준다. 이렇게 하면 인증서 교체작업이 끝난다 하지만 개발서버에서 확인을 해보니 인증서 자체에서 오류가 발생하고 있는 상황이 였다. 저번에 작업을 하다 발생한 오류가 인증서 떄문이라고는 못하지만 해당 인증서가 정상적인 인증서 였다면 아무래도 그렇게 큰 장애가 발생하지 않았을텐데 아쉽다. 그래서 다시 인프라팀에게 정상적인 인증서를 전달받고 해당 다시 교체를 했다. 이제 잘 인증서가 적용되었는지 확인 해보자

hosts

인증서가 교체되었는지 확인하기 위해서 내 컴퓨터에 hosts를 변경해서 도메인을 만들고 해당 사이트에서 인증서의 정보를 확인해보면 되는데 이 부분을 잘 몰라서 팀장님꼐 물어보게 되었다. 당연히 알아야하는 부분인데 이를 모르고 있어서 다시한번 많이 부족하다는 생각을 하게 되었다 Hosts파일은 호스트에 대응하는 IP주소가 저장되어서 도메인 시스템에서 주소 정보를 제공 받지 않더라도 설정한 주소값으로 서버의 위치를 찾게 해주는 파일이다

자신이 사용중인 PC의 OS에 따라 위치가 다르니 구글링을 통해서 hosts 파일 위치를 검색해서 찾기 바란다 윈도우를 대상으로 설명을 하자면

  1. C:/windows/system32/drivers/etc/hosts 파일을 관리자 권한으로 실행한다

  2. 그리고 임의도메인 주소를 넣고 뒤에 아이피를 넣는다

# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
  1. 인터넷 주소창에 https://본인이 적은 주소를 적는다

  2. 인터넷 주소창 옆에 자물쇠 버튼을 눌러서 인증서의 기한이 변경되었는지 확인한다.

Notices

오늘은 졸리니까 다음에 더 적자