첫장에서 계획한 우리의 Web Server 구축 순서이다.
여기서 우리는 세번째 과제를 진행해볼 것이다.
1. Docker이미지로 debian 환경 만들고 접속해보기
2. nginx 설치하고 로컬호스트에서 접속해보기(docker port 설정)
3. SSL인증서 생성 후 nginx conf 설정
4. Nginx에 php실행시켜 띄워보기
5. mysql실행해보기(db를 하나 만들어보기)
6. phpmyadmin 접속할수 있게 설정해보기(설치 및 conf 설정)
7. wordpress 접속할수 있게 설정해보기(설치 및 conf 설정)
8. wordpress에 db적용시켜보기
9. 지금까지 해온걸 dockerfile로 자동화 시키기
0. SSL인증서와 HTTPS
SSL 인증서
디지털 인증서라고도 한다.
SSL 인증서는 브라우저 또는 사용자의 컴퓨터와 서버 또는 웹사이트 간에 암호화된 연결을 수립하는 데 사용된다.
SSL 연결은 인증되지 않은 사용자의 방해로부터 각 방문(세션) 중에 교환된 중요한 데이터를 보호한다.
SSL 인증서는 클라이언트가 서버에 접속한 직후 서버가 클라이언트에게 이 인증서를 전달하게 된다. 그러면 클라이언트는 이 인증서가 신뢰할 수 있는지를 검증한 후, 다음 절차를 진행하는 방식이다.
SSL 인증서를 이용했을 때의 이점은 다음과 같다.
1. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
2. 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
3. 통신 내용의 악의적인 변경을 방지할 수 있다.
HTTPS
HTTP는 Hypertext Transfer Protocol의 약자이고 HTTPS는 마지막 S에 Over Secure Socket Layer의 약자가 포함된 것이다.
Secure라는 말을 통해서 알 수 있듯이 보안이 강화된 HTTP를 의미한다.
HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매우 쉬운데 이를 보완한 것이 HTTPS이다.
그리고 HTTPS는 SSL 프로토콜 위에서 돌아가는 프로토콜이다.
참고 : https://opentutorials.org/course/228/4894
HTTPS와 SSL 인증서 - 생활코딩
HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이
opentutorials.org
1. OpenSSL로 Self-signed SSL 인증서 생성하기
OpenSSL은 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS와 SSL의 오픈 소스 구현판이다.
보통 우리가 서버에 https를 적용하고 싶으면 Verisign 등에서 인증서를 유료로 발급받아야 한다.
하지만 우리는 OpenSSL을 이용해서 인증기관을 직접 만들어서 Self-signed SSL 인증서를 발급할 것이다.
우리의 컨테이너에서 다음 명령어를 이용해서 OpenSSL을 다운받아보자.
apt-get install openssl
openssl를 설치하고 나면, 코드 한줄로 손쉽게 인증서를 생성할 수 있다.
코드를 실행하면 *.crt 파일과 *.key파일 두개가 생성된다.
우리는 설치할 때 루트를 정해줌으로서 이 인증서를 각각 etc/ssl/certs와 etc/ssl/private에 자동으로 저장되게 할 것이다.
openssl req -newkey rsa:4096 -x509 -days 365 -nodes -subj "/CN=localhost/O=42Seoul/C=KR/OU=ssltester/L=Seoul/ST=Gangnam" -keyout etc/ssl/private/localhost.dev.key -out etc/ssl/certs/localhost.dev.crt
각 옵션별 설정은 다음과 같다.
각자의 정보에 맞게 입력해보자.
CN : 도메인 이름
O : 단체명
C : 국가
OU : 단체 내 부서
L : 지역
ST : 상세 지역
다음은 인증서를 생성하는 프로그램 중 하나이다. (우리는 터미널로 만들었지만...)
좀 더 시각화 된 자료이니 참고해보자.
다음과 같은 화면이 뜨면서 SSL인증서 발급이 완료된다.
2. 만든 OpenSSL 인증서 적용하기
인증서는 etc/nginx/sites-available/default 파일을 수정해서 적용할 수 있다.
파일 수정을 위해서는 우리의 컨테이너 안에서 vim을 먼저 설치해야 한다.
apt-get -y install vim // -y 옵션은 설치 확인 메세지에 미리 yes라고 답하는 것
vim 설치가 완료되었으면, default 파일을 다음과 같이 수정해보자
server {
listen 80 default_server;
....
}
밑에 다음의 코드를 추가해주자.
모든 준비가 끝났다!
service nginx restart
마지막으로 nginx를 restart(reload) 해주면 적용되어 있을 것이다.
3. 인증서 적용 확인하기
Safari를 실행하여, (크롬은 안되는 경우가 있다. 밑에 참고를 보자)
https://localhost 혹은 localhost:443 을 입력해보자.
아마 "연결된 네트워크가 비공개가 아님" 이라는 경고창을 보여줄 것이다.
세부 사항 보기를 눌러 이 웹사이트 방문을 클릭하면 된다.
익숙한 화면이 나타날 것이고
주소표시줄 속 인증서 보기를 누르면 우리가 만든 인증서도 확인할 수 있다.
참고
크롬에서는 우리가 만든 인증서가 유효하지 않는다고 접속할 수 없을 것이다.
사파리는 해결이 쉽지만, 크롬에서는 자체적으로 막아놓은 듯 하다.. 혹시 방법을 아시는 분은 답글로 알려주세요
'네트워크, 서버 > Server' 카테고리의 다른 글
프로젝트4. Php 설치 후 실행해보기 (0) | 2020.08.29 |
---|---|
프로젝트2. Nginx 설치 후, local host에 접속하기 (0) | 2020.08.25 |
프로젝트1. Docker로 debian 이미지 만들고 컨테이너 접속하기 (0) | 2020.08.25 |
참고2. Docker(도커) 설치하기 (0) | 2020.08.25 |
참고1. 도커(Docker) 기본 개념 (0) | 2020.08.12 |
시작하며. [필독]웹 서버 구축을 해보자 (0) | 2020.08.12 |