Louie NRT Story

[SSL/TLS] x509 인증서 본문

전기차충전기

[SSL/TLS] x509 인증서

hyeok0724.kim@gmail.com 2021. 8. 2. 11:23
반응형

작성일: 21년 8월 6일

 

Index

1. 대칭키 암호화 방식

2. 비대칭키 암호화 방식

3. 네트워크 계층

4. SSL/TLS 디지털 인증서

5. 인증서의 종류

6. 인증서 다운로드

 

 

1. 대칭키 암호화 방식

1) 중요한 정보가 담긴 .txt 파일을 작성함 

 echo "We will attack at 10am" > solder_plan.txt

2) 데이터 암호화 하기

 - 중요한 내용이 담겨 있는 "solder_plan.txt" 파일을 des3 방식으로 암호화 하는데 password는 키를 나타내는데 "123456789"라고 작성함

 - 다른 사람들은 des3 방식으로 암호화 됐다는 것을 알고 있더라도 키 값인 "123456789" 라는 값을 모르면 해독 할수가 없음

 openssl enc -e -des3 -salt -in solder_plan.txt -out top_security.bin

3) 데이터 복호화 하기

 - 받은 사람은 des3로 암호화 되어 있으며 키 값 "123456789"를 알고 있기 때문에 쉽게 복호화 하여 내용을 확인함

 openssl enc -d -des3 -in top_security.bin -out order.txt

 

2. 비대칭키 암호화 방식

1) 비밀키 생성

 openssl genrsa -out private.pem 1024

2) 공개키 생성

 - 공개키는 비밀키를 이용해서 생성함

 openssl rsa -in private.pem -out public.pem -outform PEM -pubout

3) 공개키를 이용한 데이터 암호화

 - 공개키를 이용하여 "solder_plan.txt" 파일을 암호화 후 내용을 확인하면 알 수 없음

 openssl rsautl -encrypt -inkey public.pem -pubin -in solder_plan.txt -out file.ssl

4) 비밀키를 이용한 데이터 복화화

 - 비밀키를 이용하여 "file.ssl" 파일을 복호화 후 내용을 확인할 수 있음

 openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt

 

3. 네트워크 계층

1) SSL과 TLS

네스케이프가 보안용도로 SSL을 개발하였고 표준화 기구 IETF로 이관되면서 TLS로 이름이 변경되었음. 하지만 역사적인 이유에서 SSL, TLS 용어를 같이 사용함.

 

SSL/TLS 위에서 http, ftp, telnet 등이 동작함. 즉 http가 SSL 위에서 동작한다면 https가 되는것임

https://sites.google.com/site/tlsssloverview/ssl-tls-protocol-layers

 

4. SSL/TLS 디지털 인증서

- 클라이언트 <-> 서버 간의 통신을 제3자가 보증해주는 전자화된 문서

- 클라이언트가 서버에 접속하게 되면 서버는 인증서 정보를 전달함

- SSL/TLS 인증서를 통하여 신뢰할 수 있는 서버임을 증명하고 SSL 통신에서 사용할 공개키를 클라이언트에게 전달함.

- 인증서를 보증해 주는 역할을 하는 기관으로 CA(Certificate Authority) 또는 Root Certificate 라고 부름

- 여기서 CA기관들은 Chrome, Firefox, Safari 등 브라우저에 탑재되어 있으며 그외 기관들은 인정하지 않음

 

개발사에서는 서비스를 하기 위해서는 CA로 부터 인증서를 구입해야함

이유

- 클라이언트가 서버에 접속했을때 서버는 인증서를 제공함.

- 클라이언트는 인증서의 CA가 공인에서 인정한 CA기관인지 확인함.

- 클라이언트는 해당 CA기관의 공개키로 복호화함으로 CA인증업체의 인증서임을 확인함.

 

 

5. 인증서의 종류

ssl.key: 서버에서 생성한 비밀키로 인증서를 만들때 사용한 공개키의 비대칭키 임

ssl.crt: CA가 기관의 비밀키로 암호화한 인증서로 해당 서버가 맞음을 증명해주는 인증서, 여기에는 공개키와 인증기관 정보가 담겨있음

ca.pem: 인증서를 발급해준 CA의 공개키

sub.class1.server.ca.pem: CA의 역할을 상속받아서 인증해줌

 

중계 인증서 또는 Chain 인증서라고 하는데 이것은 아래의 링크에서 다시 공부

https://m.blog.naver.com/alice_k106/221468341565

 

154. [Security] SSL과 인증서 구조 이해하기 : CA (Certificate Authority) 를 중심으로

이번 포스트에서는 인증서의 구조와 동작 원리에 대해 알아보고, 이것이 실제 SSL 기반의 보안 연결에서...

blog.naver.com

 

 

직접 인증서를 만들어서 배포한 경우 아래와 같이 신뢰할 수 없는 인증기관이라고 나타남

인증서 만들고 python Flask로 간단한 https 서버 만드는 과정 아래 링크

https://louie0724.tistory.com/459

 

[SSL/TLS] 파이썬 Flask https 서버 만들기

작성일: 8월 7일 Index 1. flask 서버 간단하게 만들기 2. 자체 서명된 인증서로 flask 서버 운영 1. flask 서버 간단하게 만들기  - 인증서를 adhoc 이라는 것을 이용하여 간단히 사용할 수 있음 - 위 내용

louie0724.tistory.com

 

 

 

6. 인증서 다운로드

1) 브라우저 상단의 자물쇠 버튼을 누름

2) 자세히 탭에서 파일에 복사 버튼 클릭

3) 인증서를 Base64로 인코딩 하여 활용함

 

 

Referece:

https://opentutorials.org/course/228/4894

 

HTTPS와 SSL 인증서 - 생활코딩

HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이

opentutorials.org

 

반응형
Comments