개발 공부

(보안, 네트워크) 인증서와 SSL 본문

IT 상식

(보안, 네트워크) 인증서와 SSL

아이셩짱셩 2019. 1. 8. 11:08

1. 인증서란?

 

디지털 인증서(또는 인증서)는 인터넷의 사용자와 자원을 고유하게 식별하는 전자 파일입니다. 인증서는 두 엔티티 간에 안전하고 비밀을 유지하는 통신도 가능하게 해줍니다.

 

인증서의 종류는 여러 가지가 있는데 개인이 사용하는 개인 인증서와 SSL(Secure Sockets Layer) 기술을 통해 서버와 클라이언트 간에 안전한 세션을 설정하기 위해 사용하는 서버 인증서 등이 있습니다.

 

인증서는 디지털  (매우 긴 번호)을 사용하여 대상 수신자만 읽을 수 있도록 정보를 암호화 또는 인코딩하는 공개 키 암호화를 기반으로 합니다. 수신자는 정보의 비밀번호를 해독(디코드)하여 읽습니다.

 

키 쌍에는 공개 키와 개인 키가 포함됩니다. 소유자는 공개 키를 배포하여 모든 사용자가 사용할 수 있게 합니다. 그러나 소유자는 개인 키는 배포하지 않고 항상 비밀로 합니다. 키가 수학적으로 관련되어 있기 때문에 하나의 키로 암호화된 데이터는 키 쌍의 다른 키로만 해독할 수 있습니다.

 

인증서에 포함되는 것

 -공개키

 -소유자의 이름 및 인증서를 사용한 웹 서버의 URL 같은 기타 식별 정보 또는 개인의 전자 메일 주소

 -인증서를 발행한 인증 기관 이름

 -만료일

https://docs.oracle.com/cd/E19159-01/820-4605/abloj/index.html

 

 

 

2. SSL(Secure Sockets Layer)이란?

 

SSL(Secure Sockets Layer)은 인터넷 통신 및 트랜잭션을 보안하기 위한 가장 일반적인 표준입니다. 웹 응용 프로그램은 서버와 클라이언트간 안전한 기밀 통신을 보장하기 위해 디지털 인증서를 사용하는 HTTPS(SSL 상의 HTTP)를 사용합니다. SSL 연결에서 클라이언트와 서버는 모두 데이터를 전송하기 전에 암호화한 다음 요청 시 해독합니다.

 

웹 브라우저(클라이언트)에서 보안 사이트에 연결할 경우 SSL 핸드셰이크가 발생합니다.

 -브라우저는 대개 http 대신 https로 시작하는 URL을 요청하여 보안 세션을 요청하는 네트워크에서 메시지를 전송합니다.

 -서버는 공개 키를 포함하는 인증서를 전송하여 응답합니다.

 -브라우저는 서버의 인증서가 유효한지 그리고 인증서가 브라우저의 데이터베이스에 있고 신뢰할 수 있는 인증 기관에서 서명한 것인지 검증합니다. 그리고 CA 인증서가 만료되지 않았는지 확인합니다.

 -인증서가 유효하면 브라우저는 고유한 일회용 세션 를 생성하고 이를 서버의 공개 키와 함께 암호화합니다. 브라우저는 암호화된 세션 키를 서버에 전송하여 둘 다 복사본을 갖고 있도록 합니다.

 -서버는 개인 키를 사용하여 메시지를 해독하고 세션 키를 복구합니다.


핸드셰이크 후, 클라이언트는 웹 사이트의 아이디를 검증했고 클라이언트와 웹 서버만 세션 키의 사본을 갖고 있습니다. 이 때부터 클라이언트와 서버는 세션 키를 사용하여 서로 간의 모든 통신을 암호화합니다. 따라서 이 통신은 보안이 안전합니다.


SSL 표준의 최신 버전을 TLS(Transport Layer Security)이라고 합니다. Application ServerSSL(Secure Sockets Layer) 3.0 TLS(Transport Layer Security) 1.0 암호화 프로토콜을 지원합니다.


https://docs.oracle.com/cd/E19159-01/820-4605/abloj/index.html

 

 

 

3. 웹 서버에 디지털 인증서 설정 순서 (Apache SSL)

 

SSL을 사용하려면 Application Server에 외부 인터페이스에 대한 인증서나 보안 연결을 승인하는 IP 주소가 있어야 합니다. 디지털 인증서가 설치되지 않으면 대부분 웹 서버의 HTTPS 서비스가 실행되지 않습니다keytool 유틸리티를 사용하여 인증서 생성에 설명된 절차를 사용하여 웹 서버가 SSL에 대해 사용할 수 있는 디지털 인증서를 설정합니다.

 

keystore 파일 생성 -> CSR 파일 생성 -> CA 인증키 생성 -> Self-Signed CA 인증서 생성 -> 인증서 발급 -> Tomcatserver.xmlSSL 설정 

 

기타 오라클 설명

https://docs.oracle.com/cd/E19159-01/820-4605/ablrb/index.html

 

 

 

4. ketstore 파일


Keystore, 지갑을 사용하기 위한 Private Key를 비밀번호로 암호화한 텍스트/파일입니다.


Keystore 텍스트나 파일을 보관하고 있다가, 다른 지갑에 불러올 때 이를 입력한 후 알맞은 비밀번호를 입력하면, 복호화되어 Private Key를 도출할 수 있게 됩니다.


한 번 암호화된 파일이므로 Keystore 파일은 컴퓨터나 메모장 등에 보관하기 안전합니다. (단 비밀번호가 너무 쉬우면, 무차별대입 공격으로 쉽게 뚫릴 수 있습니다. 최소 8, 권장 12자 이상의 어려운 비밀번호 사용을 권장드립니다.)

 

https://medium.com/coinmanager/keystore%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94-553a438c8697

 

 


5. CSR(Certificate Signing Request)이란?


SSL 서버를 운영하는 회사의 정보를 암호화하여 인증기관으로 보내 인증서를 발급받게 하는 일종의 신청서입니다
CSRASCII 텍스트 화일로 생성됩니다
CSR을 생성할 때 서버의 식별명을 입력하게 됩니다. 식별명은 각 서버를 공유하게 나타내는 이름으로 다음과 같은 정보를 포함합니다.

 

Country Name ( 국가코드) [] : KR
State or Province Name ( 지역 ) [] : Seoul
Locality Name ( //) [] : Seocho
Organization Name ( 회사명 ) [] : Hanbiro Inc
Organizational Unit Name ( 부서명 ) [] : Linux Team
Common Name ( 서비스도메인명 ) [] : www.hanbiro.com

Email Address [] : hanbiro@hanbiro.com

 

https://www.comodossl.co.kr/certificate/ssl-installation-guides/Apache-csr-crt.aspx

 

다른 설명

공개키 기반(PKI)private key(개인키)public key(공개키)로 이루어져 있다. 인증서라고 하는 것은 내 공개키가 맞다고 인증기관(CA)이 전자서명하여 주는 것이며 나와 보안 통신을 하려는 당사자는 내 인증서를 구해서 그 안에 있는 공개키를 이용하여 보안 통신을 할 수 있다.


CSR 은 인증기관에 인증서 발급 요청을 하는 특별한 ASN.1 형식의 파일이며(PKCS#10 - RFC2986)  그 안에는 내 공개키 정보와 사용하는 알고리즘 정보등이 들어 있다. 개인키는 외부에 유출되면 안 되므로 저런 특별한 형식의 파일을 만들어서 인증기관에 전달하여 인증서를 발급 받는다.


SSL 인증서 발급시 CSR 생성은 Web Server 에서 이루어지는데 Web Server 마다 방식이 상이하여 사용자들이 CSR 생성등을 어려워하니 인증서 발급 대행 기관에서 개인키까지 생성해서 보내주고는 한다.

https://www.lesstif.com/pages/viewpage.action?pageId=6979614

 

 

 

6. CA 인증키


CA(Certificate Authority) : 인증기관

 

 


7. Self Signed Certificate(SSC)?


인증서(digital certificate)는 개인키 소유자의 공개키(public key)에 인증기관의 개인키로 전자서명한 데이타다. 모든 인증서는 발급기관(CA) 이 있어야 하나 최상위에 있는 인증기관(root ca)은 서명해줄 상위 인증기관이 없으므로 root ca의 개인키로 스스로의 인증서에 서명하여 최상위 인증기관 인증서를 만든다. 이렇게 스스로 서명한 ROOT CA 인증서를 Self Signed Certificate 라고 부른다.


IE, FireFox, Chrome 등의 Web Browser 제작사는 VeriSign 이나 comodo 같은 유명 ROOT CA 들의 인증서를 신뢰하는 CA로 미리 등록해 놓으므로 저런 기관에서 발급된 SSL 인증서를 사용해야 browser 에서는 해당 SSL 인증서를 신뢰할수 있는데


OpenSSL 로 만든 ROOT CASSL 인증서는 Browser가 모르는 기관이 발급한 인증서이므로 보안 경고를 발생시킬 것이나 테스트 사용에는 지장이 없다.


ROOT CA 인증서를 Browser에 추가하여 보안 경고를 발생시키지 않으려면 Browser SSL 인증서 발급기관 추가하기 를 참고하자.

https://www.lesstif.com/pages/viewpage.action?pageId=6979614

 

 

 

 

 

 

 

 

 

 

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

(용어) IT 용어  (0) 2020.12.14
(용어) RFC, ISOC, IETF, IEEE, IAB  (0) 2020.11.10
(용어, 이론) 무어의 법칙  (0) 2018.09.30
(보안) RSA 암호화  (0) 2018.09.27
(개발) python 강의 모음  (0) 2018.08.22
Comments