https (SSL) 기본사이트 설정하기

HYEONG HWAN, MUN/ 7월 3, 2018/ 미분류/ 1 comments

https://blog.lael.be/post/7147

이 글을 통해 https (SSL)의 기본사이트 설정 방법을 설명할 것이다.

기본 사이트

기본사이트란 서버에서 지정되지 않는 웹주소(호스트)에 대해 연결될 사이트를 말한다.
모든 웹서버 소프트웨어(Apache, NGINX, IIS) 모두 기본사이트를 지원한다.

 

1. 사이트 설정 파일이 하나도 없는 경우

사이트 설정 파일이 하나도 없는 경우 웹서버 프로그램이 실행될 이유가 없으므로, 에러메세지가 출력되고 켜지지 않는다.

 

2. 사이트가 하나 설정되어 있는 경우

별도로 지정하지 않아도 그 사이트는 기본사이트가 된다.

 

3. 두개 이상의 사이트가 설정되어 있는 경우

별도로 기본사이트를 지정하지 않았다면, 첫번째로 로드되는 사이트가 기본사이트가 된다.
알파벳 순서로 로딩하며 숫자가 문자보다 우선적으로 로딩된다.

 

4. 두개 이상의 사이트가 설정되어 있고, 하나에 기본 사이트 설정이 되어 있는 경우

명시적으로 기본사이트 지정을 하면 그 사이트가 기본사이트가 된다.

 


Ubuntu Apache 웹서버의 경우 자동으로 자가서명인증서(Self-Signed SSL)를 생성하고 기본사이트를 구동합니다.
따라서 Apache 웹서버는 이 본문을 따라할 필요가 없습니다. (이미 설정 되어 있음)

/etc/apache2/sites-available/default-ssl.conf 파일 참조.

 

apache 환경일 경우 다음의 명령어로 SSL 기본사이트를 켤 수 있습니다.

# a2ensite default-ssl
# service apache2 reload

 

HTTPS 의 기본사이트 지정하기

위의 이론을 조금 응용할 것이다.

 

HTTPS 사이트를 구동하기 위해서는 반드시 SSL 인증서가 필요하다.
HTTPS 는 암호화 통신이며 서버에서 암호화 통신 알고리즘을 지정할 수 있다.

 

SSL 인증서 만들기 (Generate a Self-Signed SSL Certificate)

Linux 상에서 openssl 이라는 미리 설치된 프로그램을 통해 SSL 인증서를 생성할 것이다.
다음의 명령어를 root 의 권한으로 실행한다.

 

인증서 폴더 생성
# cd /root
# mkdir ssl
# cd /root/ssl
인증서 발급

인증서는 누구나 발급할 수 있다. 신뢰되지 않은 인증서일 뿐이다. 신뢰되지 않은 인증서도 안전하게 암호화 통신이 된다. 다시말해서 인증서 유효성과 상관없이 https 를 사용하면 안전한 통신이 진행되는 것이다.

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /root/ssl/localhost.key -out /root/ssl/localhost.crt

Common Name 에는 localhost 라고 적고, 나머지에는 . (점) 을 찍도록 하자.

잘못 입력시 생성 파일명을 다르게 입력하거나 다시 실행하면 된다.

 

인증서가 /root/ssl/localhost.crt 위치에 생성된다.

위와 같은 정보의 인증서가 발급된다. 인증서 crt 파일을 자신의 피씨로 복사해서 더블클릭하면 인증서에 쓰여진 정보를 볼 수 있다.
우리는 기본사이트 구동을 위해 인증서 형식에 맞는 파일이 필요할 뿐, 유효한 인증서는 필요없다.

 

HTTPS 기본사이트 설정

/etc/nginx/conf.d/default.ssl.conf 위치에 생성한다.

server {
    listen       443 default_server;
    server_name  localhost;

    ssl_certificate "/root/ssl/localhost.crt";
    ssl_certificate_key "/root/ssl/localhost.key";

    ssl_ciphers 'PSK';

    return 444;
}

사이트 구동을 위해 인증서를 지정하였다.
암호화 통신 알고리즘은 PSK(Pre-Shared Key) 이며 브라우저는 이 알고리즘을 처리할 수 없다.

 

확인해 보기

브라우저로 IP를 입력한 웹사이트에 접속해보자.

 

응답하지 않는 HTTPS 기본사이트가 잘 동작하는군요!

 

 

1 Comment

  1. 제 질문에 별도의 글이 달리다니 영광입니다.

    자기전에 적용해 보겠습니다.

    이 질문을 하게된 계기는 아래에 있는거 시도하다가 질문드렸었는데
    지금은 포기하고 그냥 저냥 ? 살고 있습니다.
    https://sundo.kim/745

    별도의 글까지 써주셔서 감사합니다.
    많은 공부가 되었습니다.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*