SSL 인증서를 사용하는 이름 기반 가상 호스팅으로 독립 실행 형 Apache 서버를 설정하는 방법-4 부


LFCE ( Linux Foundation Certified Engineer 의 약자)는 Linux 시스템에서 네트워크 서비스를 설치, 관리 및 문제 해결하는 전문 지식을 보유하고 있으며 다음을 담당하는 숙련 된 전문가입니다. 시스템 아키텍처의 설계, 구현 및 지속적인 유지 관리.

이 기사에서는 웹 콘텐츠를 제공하도록 Apache를 구성하는 방법과 자체 서명 된 인증서를 포함하여 이름 기반 가상 호스트 및 SSL을 설정하는 방법을 보여줍니다.

Linux Foundation 인증 프로그램 (LFCE)을 소개합니다.

참고 :이 기사는 Apache에 대한 포괄적 인 가이드가 아니라 LFCE 시험의이 주제에 대한 자습을위한 시작점입니다. 따라서이 튜토리얼에서도 Apache를 사용한로드 밸런싱을 다루지 않습니다.

동일한 작업을 수행하는 다른 방법을 이미 알고있을 수 있습니다. Linux Foundation 인증이 엄격한 성능 기반이라는 점을 고려하면 OK 입니다. 따라서‘ 일을 완수 ’하는 한 시험에 합격 할 가능성이 높습니다.

Apache 설치 및 시작에 대한 지침은 현재 시리즈 ( \"네트워크 서비스 설치 및 부팅시 자동 시작 구성\")의 1 부 를 참조하십시오.

이제 Apache 웹 서버가 설치되어 실행 중이어야합니다. 다음 명령으로이를 확인할 수 있습니다.

# ps -ef | grep -Ei '(apache|httpd)' | grep -v grep

참고 : 위의 명령은 실행중인 프로세스 목록에서 apache 또는 httpd (웹 데몬의 가장 일반적인 이름)가 있는지 확인합니다. Apache가 실행중인 경우 다음과 유사한 출력이 표시됩니다.

Apache 설치를 테스트하고 실행 중인지 확인하는 궁극적 인 방법은 웹 브라우저를 시작하고 서버의 IP를 가리키는 것입니다. 다음 화면 또는 최소한 Apache가 작동하고 있음을 확인하는 메시지가 표시되어야합니다.

Apache 구성

Apache의 기본 구성 파일은 배포에 따라 다른 디렉토리에있을 수 있습니다.

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

다행히도 구성 지시문은 Apache 프로젝트 웹 사이트에 매우 잘 문서화되어 있습니다. 이 기사 전체에서 이들 중 일부를 참조 할 것입니다.

Apache의 가장 기본적인 사용법은 아직 가상 호스트가 구성되지 않은 독립형 서버에서 웹 페이지를 제공하는 것입니다. DocumentRoot 지시문은 Apache가 웹 페이지 문서를 제공 할 디렉토리를 지정합니다.

기본적으로 모든 요청은이 디렉토리에서 가져 오지만 기호 링크를 사용할 수도 있고/또는 별칭을 사용하여 다른 위치를 가리킬 수도 있습니다.

Alias 지시문 ( DocumentRoot 에 지정된 디렉토리가 아닌 로컬 파일 시스템에 문서를 저장할 수 있음)과 일치하지 않는 한 서버는 요청 된 URL의 경로를 추가합니다. 문서 루트로 이동하여 문서 경로를 만듭니다.

예를 들어 다음과 같은 DocumentRoot 가 있습니다.

웹 브라우저가 [ 서버 IP 또는 호스트 이름 ] /lfce/tecmint.html 을 가리키면 서버가 /var /를 엽니 다. www/html/lfce/tecmint.html (해당 파일이 존재한다고 가정)하고 200 ( OK ) 응답으로 이벤트를 액세스 로그에 저장합니다.

액세스 로그는 일반적으로 access.log 또는 access_log 와 같은 대표 이름으로 /var/log 에서 찾을 수 있습니다. 하위 디렉토리 (예 : CentOS의 /var/log/httpd )에서이 로그 (및 오류 로그)를 찾을 수도 있습니다. 그렇지 않으면 실패한 이벤트가 액세스 로그에 계속 기록되지만 404 (찾을 수 없음) 응답이 표시됩니다.

또한 실패한 이벤트는 오류 로그 에 기록됩니다.

액세스 로그 의 형식은 기본 구성 파일의 LogFormat 지시문을 사용하여 필요에 따라 사용자 정의 할 수 있지만 오류 로그에서는 동일하게 수행 할 수 없습니다. ".

액세스 로그 의 기본 형식은 다음과 같습니다.

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

퍼센트 기호가 앞에 오는 각 문자는 서버가 특정 정보를 기록함을 나타냅니다.

nickname 은 전체 구성 문자열을 다시 입력하지 않고도 다른 로그를 맞춤 설정하는 데 사용할 수있는 선택적 별칭입니다.

추가 옵션은 Apache 문서의 LogFormat 지시문 [사용자 정의 로그 형식 섹션]을 참조 할 수 있습니다.

두 로그 파일 ( 액세스 오류 )은 Apache 서버에서 일어나는 일을 한눈에 빠르게 분석 할 수있는 훌륭한 리소스입니다. 말할 필요도없이 시스템 관리자가 문제를 해결하기 위해 사용하는 첫 번째 도구입니다.

마지막으로, 또 다른 중요한 지시문은 Listen 으로, 지정된 포트 또는 주소/포트 조합에서 들어오는 요청을 수락하도록 서버에 지시합니다.

포트 번호 만 정의 된 경우 아파치는 모든 네트워크 인터페이스에서 지정된 포트를 수신합니다 (와일드 카드 기호 *는 '모든 네트워크 인터페이스'를 나타내는 데 사용됨).

IP 주소와 포트가 모두 지정되면 아파치는 주어진 포트와 네트워크 인터페이스의 조합을 수신합니다.

아래 예에서 볼 수 있듯이 여러 개의 Listen 지시문을 동시에 사용하여 수신 할 여러 주소와 포트를 지정할 수 있습니다. 이 옵션은 나열된 주소 및 포트의 요청에 응답하도록 서버에 지시합니다.

이름 기반 가상 호스트 설정

가상 호스트의 개념은 동일한 물리적 시스템에서 제공하는 개별 사이트 (또는 도메인)를 정의합니다. 실제로 단일 \" 실제 \"서버에서 가상 호스트로 여러 사이트/도메인을 제공 할 수 있습니다. 이 프로세스는 다른 사이트가 별개의 웹 서버에 의해 서비스되는 것처럼 보이는 최종 사용자에게 투명합니다.

이름 기반 가상 호스팅을 사용하면 서버가 클라이언트에 의존하여 HTTP 헤더의 일부로 호스트 이름을보고 할 수 있습니다. 따라서이 기술을 사용하면 여러 다른 호스트가 동일한 IP 주소를 공유 할 수 있습니다.

각 가상 호스트는 DocumentRoot 내의 디렉토리에 구성됩니다. 우리의 경우 테스트 설정을 위해 각각 해당 디렉토리에있는 다음 더미 도메인을 사용합니다.

  1. ilovelinux.com – /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org – /var/www/html/linuxrocks.org/public_html

페이지를 올바르게 표시하려면 각 VirtualHost의 디렉토리를 755 chmod 합니다.

# chmod -R 755 /var/www/html/ilovelinux.com/public_html
# chmod -R 755 /var/www/html/linuxrocks.org/public_html

다음으로 각 public_html 디렉토리에 샘플 index.html 파일을 만듭니다.

<html>
  <head>
    <title>www.ilovelinux.com</title>
  </head>
  <body>
    <h1>This is the main page of www.ilovelinux.com</h1>
  </body>
</html>

마지막으로 CentOS openSUSE 에서 /etc/httpd/conf/httpd.conf 또는 /하단에 다음 섹션을 추가합니다. etc/apache2/httpd.conf , 또는 이미있는 경우 수정하십시오.

<VirtualHost *:80>
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html/ilovelinux.com/public_html
     ServerName www.ilovelinux.com
     ServerAlias www.ilovelinux.com ilovelinux.com
     ErrorLog /var/www/html/ilovelinux.com/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html/linuxrocks.org/public_html
     ServerName www.linuxrocks.org
     ServerAlias www.linuxrocks.org linuxrocks.org
     ErrorLog /var/www/html/linuxrocks.org/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

/etc/httpd/conf.d 디렉토리 내의 개별 파일에 각 가상 호스트 정의를 추가 할 수도 있습니다. 그렇게하려면 각 구성 파일의 이름을 다음과 같이 지정해야합니다.

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

즉, 사이트 또는 도메인 이름에 .conf 를 추가해야합니다.

Ubuntu 에서 각 개별 구성 파일의 이름은 /etc/apache2/sites-available/[사이트 이름] .conf 입니다. "그런 다음 각 사이트는 다음과 같이 각각 a2ensite 또는 a2dissite 명령을 사용하여 활성화 또는 비활성화됩니다.

# a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
# a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
# a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
# a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

a2ensite a2dissite 명령은 가상 호스트 구성 파일에 대한 링크를 만들고 /etc/apache2/sites-enabled 디렉토리.

다른 Linux 상자에서 두 사이트를 모두 탐색하려면 해당 컴퓨터의 /etc/hosts 파일에 다음 줄을 추가하여 해당 도메인에 대한 요청을 특정 IP로 리디렉션해야합니다. "주소.

[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

보안 조치로 SELinux는 Apache가 기본/var/log/httpd가 아닌 다른 디렉토리에 로그를 쓰는 것을 허용하지 않습니다.

SELinux를 비활성화하거나 올바른 보안 컨텍스트를 설정할 수 있습니다.

# chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

여기서 xxxxxx는 가상 호스트를 정의한/var/www/html 내의 디렉토리입니다.

Apache를 다시 시작하면 위 주소에 다음 페이지가 표시됩니다.

Apache로 SSL 설치 및 구성

마지막으로 Apache에서 사용할 자체 서명 인증서를 만들고 설치합니다. 이러한 종류의 설정은 사설 LAN과 같은 소규모 환경에서 허용됩니다.

그러나 서버가 인터넷을 통해 외부 세계에 콘텐츠를 노출하는 경우 제 3자가 서명 한 인증서를 설치하여 신뢰성을 확인하는 것이 좋습니다. 어느 쪽이든 인증서를 사용하면 사이트에서 전송되거나 사이트 내에서 전송되는 정보를 암호화 할 수 있습니다.

CentOS openSUSE 에서 mod_ssl 패키지를 설치해야합니다.

# yum update && yum install mod_ssl 		[On CentOS]
# zypper refresh && zypper install mod_ssl	[On openSUSE]

반면 Ubuntu 에서는 Apache 용 SSL 모듈을 활성화해야합니다.

# a2enmod ssl

다음 단계는 CentOS 테스트 서버를 사용하여 설명되지만 설정은 다른 배포판에서 거의 동일해야합니다 (어떤 종류의 문제가 발생하는 경우 주저하지 말고 의견을 사용하여 질문을 남겨주세요. 형태).

1 단계 [선택 사항] : 인증서를 저장할 디렉토리를 만듭니다.

# mkdir /etc/httpd/ssl-certs

2 단계 : 자체 서명 된 인증서와이를 보호 할 키를 생성합니다.

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

위에 나열된 옵션에 대한 간략한 설명 :

  1. req -X509 indicates we are creating a x509 certificate.
  2. -nodes (NO DES) means “don’t encrypt the key”.
  3. -days 365 is the number of days the certificate will be valid for.
  4. -newkey rsa:2048 creates a 2048-bit RSA key.
  5. -keyout /etc/httpd/ssl-certs/apache.key is the absolute path of the RSA key.
  6. -out /etc/httpd/ssl-certs/apache.crt is the absolute path of the certificate.

3 단계 : 선택한 가상 호스트 구성 파일 (또는 앞에서 설명한대로 /etc/httpd/conf/httpd.conf 의 해당 섹션)을 열고 다음 행을 추가합니다. 포트 443 에서 수신 대기하는 가상 호스트 선언.

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

추가해야합니다.

NameVirtualHost *:443

상단, 바로 아래

NameVirtualHost *:80

두 지시문 모두 아파치에게 모든 네트워크 인터페이스의 443 80 포트를 수신하도록 지시합니다.

다음 예는 /etc/httpd/conf/httpd.conf 에서 가져온 것입니다.

그런 다음 Apache를 다시 시작하십시오.

# service apache2 restart 			[sysvinit and upstart based systems]
# systemctl restart httpd.service 		[systemd-based systems]

브라우저를 https://www.ilovelinux.com 으로 지정하십시오. 다음 화면이 표시됩니다.

계속해서 \" 위험을 이해했습니다 \"및 \" 예외 추가 \"를 클릭하십시오.

마지막으로 \"이 예외를 영구적으로 저장 \"을 선택하고 \" 보안 예외 확인 \"을 클릭합니다.

그리고 https 를 사용하여 홈페이지로 리디렉션됩니다.

요약

이 게시물에서는 데이터 전송을 보호하기 위해 SSL 을 사용하여 Apache 이름 기반 가상 호스팅을 구성하는 방법을 보여주었습니다. 어떤 이유로 문제가 발생하면 아래 의견 양식을 사용하여 언제든지 알려주십시오. 성공적인 설정을 수행 할 수 있도록 기꺼이 도와 드리겠습니다.

추가 정보

  1. Apache IP Based and Name Based Virtual Hosting
  2. Creating Apache Virtual Hosts with Enable/Disable Vhosts Options
  3. Monitor “Apache Web Server” Using “Apache GUI” Tool