article thumbnail image
Published 2024. 10. 24. 23:19
반응형

 

어쩌다보니 회사에서 SSL인증서를 교체하는 작업을 맡아서 하게 되었다.

잘 모르고 메뉴얼대로만 했었는데, 사이트에 나가서 SSL인증서를 교체하는데 메뉴얼이 없는 곳도 있었다.

리눅스 명령어로 파일 위치는 찾았는데, 어떤 형태의 인증서를 사용하는건지, SHA-1은 뭐고 SHA-2는 또 뭐고 어떤 파일로 교체해야 하는건지.. 그 파일이 무슨 역할을 하는건지... 정말 하나도 모르겠는거다

작업을 하다보니 다양한 상황이 많이 발생되어서 공부의 필요성을 느꼈다

 

진작에 모르는 것을 인지하였을때부터 공부하는 게 맞지만.. 지금부터라도 공부해서 뭔지 알고서 하자!! 싶어서 공부하는 중이다.

 

공부하기 전엔... SSL이 HTTPS에서 쓰이고 보안을 위해서 쓰는거고 1년마다 갱신을 해줘야하며 만료일 이전에 갱신을 해주지 않으면 서비스를 이용못한다 라는 식으로만 알고 있었다.

HTTPS에서 S가 SSL의 S다 이정도...ㅋㅋㅋ

그래서 어떻게 보안적으로 좋다는건지는 몰랐음

 

 

아래 내용은 우선 이해한대로 정리한 느낌인거라서, 틀린 부분이 있을 수 있습니다

 

 


 

SSL이란?

우선 SSL인증서는 SSL/TLS 통신에서 사용이 된다.

SSL 통신은 보안 취약점이 발견되서 더이상 사용되지 않고 있고,

현재 대부분의 웹 서버와 브라우저는 TLS통신을 사용한다.

SSL인증서는 TLS 통신에도 SSL통신과 동일한 인증서 체계를 사용한다.

 

 

SSL 은 공개키 기반 암호화 이다.

여기서 공개키, 비밀키 개념이 나오게 됨!

공개키: 누구나 볼 수 있는 키

비밀키: 서버만 갖고 있는 키

 

공개키로 암호화한 건 비밀키로 복호화 할 수 있고,

비밀키로 암호화한 건 공개키로 복호화 할 수 있다.

=> 한쌍으로 이뤄져있다.

 

SSL 인증서 안에는 서버의 공개키 서버 신원을 보장하는 정보가 들어 있다.

클라이언트는 SSL 인증서를 보고서 이 서버가 믿을만 한지를 확인한다.

인증서 만료 날짜, 인증기관(CA)가 신뢰적인지, 도메인이 맞는지를 체크한다.

 

 

SSL 인증서를 교체하면 새로운 공개키, 비밀키 쌍이 발급이 된다.

 

클라이언트는 SSL 인증서를 통해서 서버의 신원을 확인하고 서버의 공개키로 대칭키를 암호화해서 서버로 전송한다.

 

 


 

비대칭키를 통해 대칭키를 주고받는 과정

비대칭키(공개키, 비밀키)를 사용하는 이유는 대칭키(세션키)를 안전하게 주고 받기 위함이다.

공개키는 서버가 클라이언트와 핸드셰이크를 할 때 사용된다.

 

1. 클라이언트는 대칭키를 만든다. (난수 생성기를 사용해 대칭키 생성)

2. 클라이언트는 대칭키를 공개키로 암호화해서 서버로 전송한다

3. 서버는 비밀키로 암호화된 대칭키를 복호화한다.

4. 서버와 클라이언트가 동일한 대칭키를 갖게 된다.

5. 이후 데이터 전송할땐 대칭키로 암호화되어 주고받는다.

 

 


 

대칭키, 비대칭기란?

 

비대칭키는 대칭키가 중간에 가로채이지 않도록 보호하는 역할이다.

대칭키는 빠르고 효율적이지만 교환할때 해킹 위험이 있기 때문에 비대칭키를 사용해서 대칭키를 안전하게 전달한다.

비대칭키를 이용해 안전한 대칭키 교환을 할 때 SSL 인증서와 함께 사용된다.

대칭키를 주고받은 후, 실제 데이터 통신에선 대칭키로 데이터를 암호화하여 빠르게 주고받는다.

 

 

 

대칭키: 암호화, 복호화할 때 사용하는 키가 동일하다. 1개의 키만 사용해서, 동일한 키로 암호화/복호화 둘 다 함! 

=> 대칭키를 전달할 때 암호화 되어 있지 않다면 중간에서 해커가 대칭키를 가로채서 서버와 클라이언트의 통신 내용을 볼 수가 있게 된다. 

=> 따라서 대칭키를 안전하게 전달하기 위해 SSL/TLS가 사용되고, 비대칭키를 사용한다.

=> 공개키로 암호화한 대칭키는 서버에 있는 비밀키로만 복호화가 가능하기 때문에 중간에 암호화된 대칭키를 가로채더라도 해독할 수 없어서 안전하다.

비대칭키: 암호화할 때 사용한 키와 복호화할 때 사용하는 키가 다른 경우. 공개키와 비밀키가 쌍을 이룬 형태이고, 2개의 키를 사용한다. 

공개키는 사람들에게 공개된 키이다. 공개키로 암호화한 정보는 쌍을 이룬 비밀키로만 복호화할 수 있다.

 

 

 

 

서버는 클라이언트마다 다른 대칭키(세션키)를 사용하게 된다. 

클라이언트와 서버 간의 세션이 종료되면 대칭키가 더 이상 사용되지 않는다.

새로운 세션이 시작될 때마다 새로운 대칭키가 생성된다.

 

 

 

 

브라우저에선 인증기관(CA)가 신뢰적인지를 보게 되는데, 브라우저의 버전이 낮은 경우에 해당 SSL인증서를 발급한 인증 기관이 신뢰할 수 있는 목록에 없는 경우엔 SSL인증서를 인식하지 못할 수 있다.

이럴땐 브라우저 업데이트가 필요하다..

 

 

 

인증서 체인은 인증서 발급 기관(CA)이 자동으로 구성해줘서 사용자는 별도로 설정해줄 필요는 없다.

SSL인증서를 발급받을 때, CA에서 (필요한 경우) 중간 인증서도 함께 제공해준다.

 

 

인증서 발급 기관 없이 개인이 직접 생성한 인증서인 경우엔 신뢰할 수 있는 CA에 의해 서명된게 아니기 때문에 브라우저에서 신뢰하지 않는다고 나오게 되면서 보안 연결이 되지 않는다.

 

 

 

 

 

 


 

SSL 인증서 확인하는 방법

# 방법1

크롬에서 url 옆에 왼쪽 클릭 -> 이 연결은 안전합니다. -> 인증서가 유효함

 

세부정보 탭에서도 인증서 정보에 대해 많이 나와 있다.👀

 

 

#방법2

크롬 개발자도구(F12)에 Security 탭에서 확인 가능

 

 


 


openssl 명령어를 이용해서 터미널에서 여러가지 작업을 할 수 있다.

(비밀키 생성, 공개키 생성, CSR 생성, SSL 인증서 생성, pem 형식으로 변환, SSL/TLS 연결 테스트)

openssl 명령어로 직접 만들 수 있지만,  실제 운영에선 신뢰성과 보안을 위해 인증기관(CA)에서 발급받은 인증서를 사용하는 게 좋다.

테스트나 개발 환경에선 openssl로 생성한 자체 서명 인증서가 유용함👍

 

 

 

 

앞으로는 Let's Encrypt나 openssl 명령어를 사용해서, 인증서를 설치해보고 서버 재시작하는 과정을 실습해봐야겠다!!

 

 

 

 

 

반응형

'IT지식' 카테고리의 다른 글

PC/모바일 서비스 원리 및 필수지식  (1) 2024.12.01
네트워크 구성, 동작 원리  (0) 2024.12.01
서버 구성 및 동작 원리  (0) 2024.12.01
서버란 무엇일까  (0) 2024.09.09
이클립스 eXERD 사용법  (0) 2022.11.14
복사했습니다!