- Certificate: 두 집단의 transaction 간에 신뢰를 보증하는 용도. 통신이 암호화되었고, 누가 보낸 요청인지 인증서가 보증
- Symmetric encryption: 서버에 요청을 보낼 때 평문을 key로 암호화하여 보내지만, key도 함께 보내 해커가 중간에서 암호문과 key를 sniff하면 위험. 같은 키로 암복호화를 하기 때문.
- Asymmetric encryption: Private key와 public key 동시 사용. 암호문을 복호화하려면 public key에 더해서 private key가 필수적으로 필요함
- ssh-keygen : id_rsa(private) id_rsa.pub(public)
- 서버의 ~/.ssh/authorized_keys에 추가하면 서버는 public key로 locked되고, 내가 ssh -i id_rsa로 요청할 때에만 접근 가능
- 다른 사용자의 접근이 필요할 때에는 다른 사용자의 public key를 authorized_keys에 등록
사용자와 서버간의 통신 암호화 방법
- 사용자가 처음 서버로 https 접속을 하면, 사용자의 브라우저에 서버의 public key가 저장됨.
- 서버가 사용자의 private key를 받기 위해서는 서버에서 openssl 명령어로 private/public key pair를 생성후, 사용자가 서버의 public key로 사용자의 private key를 암호화한 후 서버로 전송하여 해커가 key를 sniff해도 문제가 없도록 함
- 서버는 자신의 public key로 암호화된 사용자의 private key를 자신의 private key로 복호화함.
- 사용자는 자신의 private key로 암호화된 암호문만 전달하면, 서버는 복호화할 수 있게 됨.
- 해커가 도메인을 조작해서 자신이 만든 복제 사이트로 사용자가 접속하게 해버리면, 사용자는 정보를 sniff당할 수 있음.
- 그래서 public key를 보증하는 인증서와 함께 전송한다.
- chrome과 같은 브라우저에는 인증서의 진위를 확인하는 메커니즘이 있음
- Certificate Authority: 인증서가 제대로 된 인증서인지 인증하는 기관
- Certificate Signing Request : CA에 인증서 요청
- Validate Information: CA에서 요청한 정보에 대해서 검증
- Sign and Send Certificate: 인증서에 sign 후 사용자에게 자신들의 private key로 암호화하여 인증서 보냄
- 각 CA는 자신들의 key pair를 가지고 있고, 사용자의 브라우저에 각 CA의 public key가 저장되어 있음. 각 CA의 private key로 암호화된 인증서를 사용자는 로컬 브라우저의 public key로 복호화 가능
!!!!Public Key Infrastructure!!!!
- 1)CA, 2)서버, 3)사용자, 4)디지털 인증서를 생성하고, 분배하고, 유지하는 프로세스 등을 포함하는 infrastructure
- Public key의 확장자: *.crt, *.pem
- Private key의 확장자: *.key, *-key.pem
Reference
- https://babbab2.tistory.com/4
- https://babbab2.tistory.com/5?category=960153
- https://babbab2.tistory.com/7?category=960153
'CKA' 카테고리의 다른 글
Certificates API (0) | 2021.09.25 |
---|---|
TLS Certificates in Kubernetes (0) | 2021.09.25 |
Authentication (0) | 2021.09.17 |
Cluster Maintenance (0) | 2021.09.17 |
Replication Controller & Replica Sets (0) | 2021.09.08 |