Community

[요약] HTTPS와 SSL 인증서 Https와 SSL 인증서 관련 개인적으로 정리한 문서 입니다. 1. https: Hypertext Transfer Protocol Secure. 암호화 하여

[요약] HTTPS와 SSL 인증서 Https와 SSL 인증서 관련 개인적으로 정리한 문서 입니다. 1. https: Hypertext Transfer Protocol Secure. 암호화 하여 데이터 전송 2. SSL 인증서: Transport Layer Security. 디지털 인증서. C/S간의 통신을 제3자가 보증해주는 전자문서. 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장하고, SSL 통신에 사용할 공개키(PKI: Public key infrastructure)를 클라이언트에게 제공한다. 3. 대칭키: 동일한 키로 암호화와 복호화를 하는 기법 4. 공개키(Public key): 공개키로 암호화를 하면 비공개키로 복호화 할 수 있고, 비공개키로 암호화하면 공개키로 복호화 할 수 있는 방식 5. CA(Certificate Authority): 인증서의 역할은 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할을 한다. 판매는 민간기업들 함. 공개키가 안전하다는 걸 입증 해주는 민간기관임. 브라우저는 유명한 CA업체 리스트를 가지고 있음. 6. 중간인증기관(ICA: Intermidiate CA): Root CA 밑에 있는 하위인증기관. 상위기관의 공개키로 하위기관의 인증서 해시값을 복호화함으로써 쉽게 변조 유무를 확인(Chain of Trust)함으로써 중간인증기관도 신뢰할 수 있게됨(ICA에서 발급한 인증서엔 Root CA 정보도 가지고 있음) 7. 사설인증: 자신이 직접 CA 역할을 함 8. SSL 인증서 내용: PKI 표준 X509에 따라 만듦. 서비스정보, 서비측 공개키 포함. 9. 인증서 동작방법(CA와 브라우저가 서버를 인증하는 과정) 1. 웹 브라우저가 서버에 접속할 때 서버는 제일 먼저 인증서를 제공 2. 브라우저는 이 인증서가 CA리스트에 있는지 확인 3. 올바른 인증서라면 CA의 공개키를 이용해 인증서를 복호화 10. SSL 통신과정 1. SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키를 혼합해서 사용한다. 즉 클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 암호화된 실제 정보를 복호화할 때사용할 대칭키는 공개키 방식으로 암호화해서 클라이언트와 서버가 주고 받는다. 2. 실제 대이터는 대칭키 사용. 대칭키는 컴퓨터 자원은 많이 안 사용하기 때문. 3. 대칭키의 키는 공개키 사용. 4. 내부적인 통신과정: 악수(handshake) -> 전송 -> 세션종료 5. 악수(handshake) a. Client Hello: 클라이언트가 서버에 접속. 전달 정보는 클라이언트 측에서 생성한 랜덤 데이터, 클라이언트가 지원하는 암호화 방식들, 세션 아이디 b. Server Hello: 서버의 응답. 전달 정보는 서버측에서 생성한 랜덤 데이터, 서버가 선택한 클라이언트의 암호화 방식, 인증서 c. CA리스트로 인증서 검증: 클라이언트는 CA의 공개키로 복호화함. 복호화 되면 인증완료. 클라이언트는 1)과 2)에서 얻은 렌덤 데이터를 조합하여 pre master secret키 생성 후 서버로 부터 받은 공개키로 암호화하여 서버에 전달. d. 서버는 받은 pre master secret키를 비공개키로 복호화하여 pre master secret키를 공유. pre master secret키로 master secret키를 생성. Master secret키로 session key를 생성. e. Session key를 이용하여 C/S간 데이터 전달을 대칭키 방식으로 주고 받음. f. C/S간 session key 공유가 확인 되면 서로 종료를 알림 6. 세션(보안 전송) a. 실제 C/S간 데이터를 주고 받는 단계 b. 대칭키 사용 이유는 대칭키는 컴퓨터 자원은 많이 안 사용하기 때문 7. 세션 종료 a. 데이터 전송이 끝나면 SSL 통신이 끝났음을 알림 b. 이때 통신시 사용한 대칭키인 세션키들은 폐기함 11. 인증서 구입 1. 구매처: Let's Encrypt 2. 레벨: DV a. DV(Domain Validation) : 도메인 유효성 검사. 도메인 소유권 심사를 통해 발급되는 가장 쉽고 빠른 인증서, 회사에 대한 정보 확인 불가능. b. OV(Organization Validation) : 조직 유효성 검사. 비즈니스 적법성 검증과 도메인 소유권 심사를 통해 발급, 검증된 회사 정보는 인증서에 표기됨. c. EV(Extended Validation) : 확장 유효성 검사. DV,OV보다 까다로운 검증을 통해 기업의 실존성을 인증. EV인증서를 소유한 사이트는 브라우저에서 도메인 소유 회사의 이름이 표시되어 안전한 사이트임을 확인할 수 있음. 3. 와일드카드 인증서 발급: https://gruuuuu.github.io/ocp/ocp-ingress-ca/#wildcard-certificate%EB%B0%9B%EA%B8%B0-lets-encrypt 4. 후이즈에 TXT record 네임과 키 입력: name=도메인명, value=TXT레코드 5. 발급 완료(인증서 다운로드) 12. 웹서버 셋팅 1. 지정된 디렉토리에 다운받은 ssl 인증서 복사 2. 디렉토리 및 파일 권한 조정 3. 웹서버 설정 (https://velog.io/@curiosity806/nginx-Lets-Encrypt-SSL-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89) 13. 인증서 갱신: 3개월마다 수동갱신(https://velog.io/@foreverchoi0706/Linux-Ubuntu%EC%97%90-Lets-encrypt-%EC%99%80%EC%9D%BC%EB%93%9C-%EC%B9%B4%EB%93%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B0%B1%EC%8B%A0%ED%95%98%EA%B8%B0) 14. 참고: https://opentutorials.org/course/228/4894#session

알림

알림이 없습니다