일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 보안
- YMODEM
- lambda
- 안드로이드
- esp8266
- 서버리스
- 에버온
- 충전기
- STM32
- raspberry
- 완속충전기
- 전기차충전
- 플라스크
- dynamodb
- IOT Core
- 급속충전기
- everon
- 파이썬
- flask
- 디자인패턴
- AWS
- 전기차
- 라즈베리파이
- 펌웨어
- thread
- 홈어시스턴트
- homeassistant
- 전기차충전기
- OCPP
- Android
- Today
- Total
Louie NRT Story
[SSL/TLS] x509 인증서 본문
작성일: 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가 되는것임
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
직접 인증서를 만들어서 배포한 경우 아래와 같이 신뢰할 수 없는 인증기관이라고 나타남
인증서 만들고 python Flask로 간단한 https 서버 만드는 과정 아래 링크
https://louie0724.tistory.com/459
6. 인증서 다운로드
1) 브라우저 상단의 자물쇠 버튼을 누름
2) 자세히 탭에서 파일에 복사 버튼 클릭
3) 인증서를 Base64로 인코딩 하여 활용함
Referece:
https://opentutorials.org/course/228/4894
'전기차충전기' 카테고리의 다른 글
[everon] stm32f105 부트로더 - Todo (0) | 2021.08.02 |
---|---|
[SSL/TLS] ESP8266 HTTPS 연결 (0) | 2021.08.02 |
[데이터분석] 전기차 충전기 사용자 충전 패턴 분석 (0) | 2021.08.01 |
[데이터분석] 전기차 충전기 시장 연구 분석 (0) | 2021.07.19 |
[everon] 급속충전기 테스트 UI(electron) 개발 - Todo (0) | 2021.07.16 |