ssl프로토콜의 정의 및 사용법. ssl이란 무엇인가?

이호용·2021년 1월 15일
0

42_ft_server

목록 보기
4/6

1. ssl 이란?

SSL(Secure Socket Layer) 프로토콜은 웹서버와 브라우저 사이의 보안을 위해 만들었다.
예를 들면 niginx와 wordpress사이에 데이터가 전송될 때, 보안처리.

  • HTTPS vs HTTP
    HTTP는 Hypertext Transfer Protocol의 약자입니다
    인데 여기에 SSL(Secure Socket Layer) 프로토콜이 추가된것을 HTTPS라고 한다.
    HTTP의 경우 보안이 취약한 부분이 있다.

2. ssl 동작설명

SSL의 동작원리를 좀더 이해하기위해 osi 7계층으로 살펴봄 .
ssl은 응용계층과 전송계층 사이에 독립적인 프로토콜 계층을 만들어서 동작하며, 이렇게 ssl이 생성되면 응용계층의 프로토콜들은 외부로 보내는 데이터를 전송계층이 아닌 SSL에 보내 암호화 시킨뒤 전송계층으로 보냄. 전송계층에서 응용계층으로 보낼떄도 중간에 ssl로 가는 작업을 거침.

추가적으로 대칭키 개념과 ca개념에 대해 살펴보고 가면 도움이 될거같다.
아래 링크에 잘 정리 되어있으니 살펴보자.
https://wayhome25.github.io/cs/2018/03/11/ssl-https/

3. ssl 사용법.

  • 명령어.
    X509Certificate 아래와 같이 입력을 하면 X509Certificate보안 생성.
    PEM 인코딩된 인증서를 파싱해서 정보를 출력

  • 공인키

openssl x509 -text -noout -in localhost.crt

DER 인코딩일 경우 -inform der 옵션 추가

openssl x509 -inform der -text -noout -in localhost.crt

인코딩 변환Link to 인코딩 변환
DER 인코딩된 인증서를 PEM 으로 변경

openssl x509 -inform der -outform pem -out mycert.pem -in mycert.der

  • 개인키
    RSA 2048(이 수가 높을수록 해석하기 복잡) 키 생성 및 개인키를 AES256(자기가 주고싶은 키를 입려하면됨.) 으로 암호화Link to RSA 2048 키 생성 및 개인키를 AES256 으로 암호화
    암호( pass phrase)는 dkanrjsk 이며 입력창을 띄우지 않고 커맨드에서 바로 설정( -passout 옵션)
    openssl genrsa -aes256 -passout pass:dkanrjsk -out aes-pri.pem 2048

만드는 예제)
그럼 이해를 돕기 위해서 공개키를 이용해서 RSA라는 방식의 공개키를 사용해보자. 아래 명령은 private.pem이라는 이름의 키를 생성한다. 이 키는 1024bit 길이을 갖는다. 이 숫자가 높을수록 안전하다.

openssl genrsa -out private.pem 1024;

다음 명령은 private.pem이라는 이름의 비공개키에 대한 public.pem이라는 이름의 공개키를 생성한다. 이 공개키를 자신에게 정보를 제공할 사람에게 전송하면 된다.

openssl rsa -in private.pem -out public.pem -outform PEM -pubout;
  1. 개인키생성

    1) 3DES 로 암호화(PassPhrase필요)

    openssl genrsa -des3 -out 키이름.key 1024

    2) 암호화 하지 않음

    openssl genrsa -out 파일이름.key 1024

    3) 기존 비밀키에 패스워드 추가

    openssl rsa -in out 키이름.key -des3 -out 새로운키이름.key

    4) 기존 비밀키에 패스워드 제거

    openssl rsa -in 키이름.key -out 새로운키이름.key

  1. CSR생성 (인증서 서명 요청을 위해 필요)

    openssl req -new -key 키이름.key -out csr이름.csr

  1. 자체 서명 인증서 생성하기

    openssl req -new -key 키이름.key -x509 -out 인증서이름.crt

    openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt

  1. 인증서 다루는 법

    1) 인증서 확인(보기)

    openssl x509 -noout -text -in 인증서파일.crt

    2) 비밀키 보기

    openssl rsa -noout -text -in 키파일.key

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
위 cmd의 의미는 x509 인증서 형태로 새로운키를 만드는데, rsa:4096 방식으로 key.pem으로 공개키를 만들고 cert.pem으로 비공개키를 만듭니다. 그리고 기간은 365일로 한다는 의미입니다. (여기서 rsa란 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘 입니다.)

참고 =

0개의 댓글