아파치는 GNU/Linux 시스템 상에 가장 일반적으로 사용되는 웹 서버 입니다. 웹 서버는 클라이언트 컴퓨터에 의해 요청되는 웹 페이지를 제공하기 위하여 사용 됩니다. 클라이언트는 전형적으로 Firefox, Opera, 또는 Mozilla 와 같은 웹 브라우저를 사용하여 웹 페이지를 요청하고 보게 됩니다.
사용자는 웹 서버를 가리키기 위하여 완전히 지정된 도메인 이름(FQDN)과 요구되는 자원의 경로를 가지는 Uniform Resource Locator (URL) 을 입력 합니다. 예를 들어, 우분투 웹 사이트의 홈 페이지를 보려고 한다면, 사용자는 오직 FQDN 만을 입력할 것 입니다. 비용지불 지원에 특정 정보를 요청하려면, 사용자는 FQDN에 경로를 추가하여 입력 합니다.
웹 페이지를 전송하기 위하여 사용되는 가장 일반적인 프로토콜은 Hyper Text Transfer Protocol (HTTP) 입니다. Secure Sockets Layer 상의 Hyper Text Transfer Protocol (HTTPS) 와 파일을 업로드 또는 다운로드 하기 위한 File Transfer Protocol (FTP) 같은 프로토콜들도 또한 지원 됩니다.
아파치 웹 서버는 MySQL 데이타베이스 엔진, HyperText Preprocessor (PHP) 스크립트 언어, 그리고 Python과 Perl과 같은 다른 인기있는 스크립트 언어들과 함께 종종 사용되어 집니다. 이런 설정을 LAMP (Linux, Apache, MySQL 과 Perl/Python/PHP)라 명명하고, 이것은 웹 기반의 프로그램을 개발하고 이행하기 위한 강력하고 튼튼한 플랫폼을 구성 합니다.
아파치2 웹 서버는 우분투 리눅스에서 사용 가능합니다. 아파치2를 설치하려면:
터미널 프롬프트에서 다음의 명령을 입력 합니다:
sudo apt-get install apache2
아파치는 일반 텍스트 설정 파일 내에 지시자를 넣는 것으로 설정이 됩니다. 주 설정 파일은 apache2.conf
입니다. 추가하여, 다른 설정 파일들은 Include 지시자를 사용하여 더해질 수 있고, 많은 설정 파일을 포함하기 위하여 와일드카드를 사용할 수 있습니다. 어떠한 지시자도 이러한 설정 파일들에 놓여질 수 있습니다. 주 설정 파일의 변경은 아파치2가 시작 또는 재시작될 때만 인식이 됩니다.
서버는 또한 TypesConfig 지시자에 의해 정해지는 파일 이름과 그리고 기본으로 mime.types
인 mime 문서 종류를 가지는 파일을 읽을 수 있습니다.
기본 아파치2 설정 파일은 /etc/apache2/apache2.conf
입니다. 아파치2 서버를 설정하기 위하여 이 파일을 편집할 수 잇습니다. 포트 번호, 문서 루트, 모듈, 로그 파일, 가상 호스트, 기타 등등을 설정할 수 있습니다.
이 영역은 아파치2 서버의 필수적인 설정 파라미터를 설명 합니다. 더 자세한 것은 아파치2 문서를 참조 합니다.
아파치2는 가상 호스트에 친근한 기본 설정과 함께 제공 됩니다. 그것은, 하나의 기본 설정 가상 호스트를 (VirtualHost 지시자를 사용하여) 가지고 설정되어 있고, 변경되거나 만약 하나의 사이트를 가지고 있다면 그대로 사용할 수도 있으며, 여러 개의 사이트를 가지고 있다면 추가적인 가상 호스트를 위한 예제 양식으로 사용될 수도 있습니다. 그대로 사용을 하면, 기본 설정된 가상 호스트는 여러분의 기본 사이트로 동작하거나, 또는 사이트 사용자가 여러분이 지정한 사이트의 ServerName 지시자와 그들이 입력한 URL이 일치되는 않는 경우를 볼 수 있습니다. 기본 설정 가상 호스트를 변경하려면, /etc/apache2/sites-available/default
파일을 편집 합니다. 만약 새로운 가상 호스트나 사이트를 설정하기를 원한다면, 같은 디렉토리 내로 여러분이 선택한 이름을 가지고 그 파일을 복사 합니다. 예를 들어, sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite 아래에 기술하는 몇 가지 지시자들을 사용하여 새로운 사이트를 설정하기 위하여 그 새로운 파일을 편집 합니다.
ServerAdmin 지시자는 서버의 시스템 관리자를 위한 이메일 주소를 광고하기 위하여 지정 합니다. 기본 설정값은 webmaster@localhost 입니다. 이것은, 만약 여러분이 그 서버의 시스템 관리자라면, 여러분에게로 배달될 수 있는 이메일 주소로 변경되어야 합니다. 만약 여러분의 웹 사이트가 문제를 가지고 있다면, 아파치2는 그 문제를 보고하기 위하여 이 이메일 주소를 가지는 에러 메세지를 보여줍니다. /etc/apache2/sites-available 내의 사이트 설정 파일에서 이 지시자를 찾으십시오.
Listen 지시자는 아파치2가 들어야하는, 포트, 그리고 선택 사항으로 IP 주소를 지정 합니다. 만약 IP 주소가 지정되지 않았다면, 아파치2는 서버가 실행되는 기계에 지정된 모든 IP 주소를 듣습니다. Listen 지시자를 위한 기본 설정값은 80 입니다. 오직 여러분의 루프백 인터페이스를 듣게하기 위하여 이것을 127.0.0.1:80으로 변경하고 그러면 서버는 인터넷으로는 사용할 수 없고, 듣고자 하는 포트를 변경하기 위하여 (예를 들어) 81로 지정할 수도 있고, 또는 보통의 동작을 위하여 있는 그대로 나두기도 합니다. 이 지시자를 위한 /etc/apache2/ports.conf
파일에서 지시자를 찾고 변경할 수 있습니다.
ServerName은 선택사항입니다. 이 부분은 웹사이트에 접근할 수 있는 FQDN을 지정하는 역할을 합니다. 기본 가상 호스트에는 설정하둔 ServerName이 없기 때문에 다른 가상 호스트에서 사용하는 ServerName이 아닌 FQDN은 모두 기본 가상 호스트로 연결됩니다. ubunturocks.com이라는 도메인 이름을 구했을 때, 가상 호스트 설정 파일에 있는 ServerName의 값으로 ubunturocks.com을 입력하십시오. ServerName은 앞에서 만든 가상 호스트 파일(/etc/apache2/sites-available/mynewsite
)에 넣으십시오.
www를 앞에 붙이는 것을 당연하게 생각하는 사용자들도 많기 때문에 www.ubunturocks.com를 통해서도 웹사이트에 접근할 수 있게 설정하고 싶어할 수도 있습니다. 이 때 ServerAlias를 사용하면 됩니다. ServerAlias에 와일드카드를 사용할 수도 있습니다. 예를 들어, ServerAlias *.ubunturocks.com를 입력하면 .ubunturocks.com으로 끝나는 주소를 아무거나 사용하여 웹사이트에 접근할 수 있게 됩니다.
DocumentRoot는 웹사이트를 구성하는 파일들을 아파치가 찾을 때 사용하는 위치입니다. 기본값은 /var/www입니다. 아직은 /var/www에 아무런 웹사이트가 없지만, /etc/apache2/apache2.conf
에 있는 RedirectMatch의 주석을 풀면 연결 요청이 /var/www/apache2-default로 연결되어 아파치2의 기본 웹사이트를 볼 수 있게 됩니다. 서버의 가상호스트 파일에 있는 이 값을 바꾸고, 필요한 경우에는 그 디렉토리를 변경하는 것은 잊지 마십시오.
아파치는 /etc/apache2/sites-available 디렉토리를 직접 파싱하지 않습니다. /etc/apache2/sites-enabled에 있는 심볼릭 링크는 "접근할 수 있는" 사이트를 가리킬 뿐입니다. a2ensite (Apache2 Enable Site) 프로그램을 사용하여 sudo a2ensite mynewsite를 입력하여 필요한 심볼릭 링크를 만들 수 있습니다. 이 때 mynewsite는 새로 연결할 사이트의 설정 파일 /etc/apache2/sites-available/mynewsite
입니다. 비슷한 방법으로 a2dissite를 사용하여 사이트의 연결을 해제할 수도 있습니다.
이 부분은 아파치2의 기본 설정을 설명합니다. 예를 들어, 가상호스트를 추가할 경우 그 가상호스트에서는 그 호스트를 위해 설정한 값이 우선순위를 가집니다. 가상호스트를 위해 설정한 값이 없을 때 기본값을 사용합니다.
DirectoryIndex는 사용자가 디렉토리명 끝에 /(슬래시)를 지정하여 디렉토리의 목록을 보고자 할 때 서버에서 기본으로 제공하는 페이지를 지정합니다.
예를 들어, 사용자가 http://www.example.com/this_directory/라는 페이지를 요청한다면, 사용자가 볼 수 있는 페이지에 몇 가지가 있습니다. 우선, DirectoryIndex 페이지가 있을 경우에는 그 페이지를 보게 됩니다. 이 페이지가 없고, Indexes 옵션이 설정되어있다면 서버에서 생성한 디렉토리 목록을 보게 됩니다. 마지막으로 DirectoryIndex 페이지도 없고 Indexes 옵션도 설정이 안 되어있으면 Permission Denied 페이지를 보게 됩니다. 즉, 사용자의 요청이 들어오면 서버는 우선 DirectoryIndex에 설정된 파일 중에서 가장 먼저 발견하는 파일을 사용자에게 제공합니다. DirectoryIndex에 있는 파일이 하나도 없고, Indexes 옵션이 설정되어 있다면 서버는 HTML 형식으로 그 디렉토리에 있는 하위 디렉토리와 파일의 목록을 생성해서 사용자에게 제공합니다. /etc/apache2/apache2.conf
에 있는 DirectoryIndex의 기본값은 "index.html index.cgi index.pl index.php index.xhtml"입니다. 사용자가 요청한 디렉토리에 앞의 파일 중 하나가 있다면 아파치2는 이 중 가장 앞의 것을 사용자에게 제공합니다.
ErrorDocument 지시자는 특정한 에러 사건을 위하여 사용할 수 있도록 아파치를 위한 파일을 지정하는 것을 허용 합니다. 예를 들어, 사용자가 요청한 자원이 존재하지 않으면, 404 에러가 일어나고, 아파치2 기본 설정에 따라, /usr/share/apache2/error/HTTP_NOT_FOUND.html.var
파일이 보여지게 됩니다. 그 파일은 서버의 DocumentRoot에 없고, /error 디렉토리를 /usr/share/apache2/error/ 로의 요청으로 재지정하는 /etc/apache2/apache2.conf
내의 Alias 지시자가 있습니다. 기본 설정된 ErrorDocument 지시자들의 목록을 보려면, 이 명령을 사용 합니다: grep ErrorDocument /etc/apache2/apache2.conf
기본 설정에 의하여, 서버는 /var/log/apache2/access.log 파일로 전송 로그를 기록 합니다. CustomLog 지시자를 가지고 가상 호스트 설정 파일 내의 사이트당 이것을 변경하거나, 또는 /etc/apache2/apache2.conf
에 지정된 기본 설정된 것을 제외시킬 수 있습니다. 또한 ErrorLog 지시자를 통하여 에러가 기록되는 파일로 지정할 수도 있습니다. 이 경우의 기본 설정은 /var/log/apache2/error.log
입니다. LogLevel (기본 설정은 "경고")과 LogFormat (기본 설정은 /etc/apache2/apache2.conf
를 보십시오)도 역시 지정할 수 있습니다.
몇 가지 선택 사항은 서버당 설정이기 보다는 디렉토리당 지정이 됩니다. Option은 이러한 지시자들 중의 하나 입니다. Directory 부분은 XML 비슷하게 태크로 묶여지고, 그래서 다음과 비슷합니다:
<Directory /var/www/mynewsite>
...
</Directory>
Options 지시자는 Directory 부분 내에 하나 또는 그 이상의 다음의 값들을 가지고 (다른 것들과 함께), 공백으로 구분 됩니다:
ExecCGI - CGI 스크립트의 실행을 허용 합니다. 만약 이 선택사항이 선택되지 않았다면 CGI 스크립트는 수행될 수 없습니다.
대부분의 파일은 CGI 스크립트로서 실행이 되어서는 안됩니다. 이것은 매우 위험할 수 있습니다. CGI 스크립트는 여러분의 DocumentRoot 밖의 다른 디렉토리 내에 저장되어야만 하고, 오직 이 디렉토리만이 ExecCGI 옵션을 가져야 합니다. 이것은 기본 설정이고, CGI 스크립트를 위한 기본 위치는 /usr/lib/cgi-bin 입니다.
Includes - 서버 측의 includes를 허용 합니다. 서버 측 includes는 include 파일들로 HTML 파일을 허용 합니다. 이것은 일반적인 선택 사항이 아닙니다. 더 많은 정보는 아파치2 SSI 하우투를 보십시오.
IncludesNOEXEC - 서버측 includes를 허용하지만, CGI 스크립트 내의 #exec과 #include 명령을 사용하지 못하도록 합니다.
Indexes - 요청된 디렉토리내에 DirectoryIndex가 (index.html과 같은) 없다면, 디렉토리 내용물의 형식화된 목록을 보여 줍니다.
Multiview - 컨텐츠에 따라 복수개의 보기를 지원 합니다. 이 선택 사항은 보안상의 이유로 기본 설정으로는 사용하지 못하도록 되었습니다. 이 선택 사항에 대한 아파치2 문서를 보십시오.
SymLinksIfOwnerMatch - 만약 타켓 파일 또는 디렉토리가 링크와 같은 소유자를 가졌다면 오직 심볼릭 링크를 따릅니다.
가상 호스트는 같은 기계를 다른 IP 주소, 다른 호스트 이름, 또는 다른 포트로 실행할 수 있도록 합니다. 예를 들어, 같은 웹 서버에서 가상 호스트를 사용하여 http://www.example.com 과 http://www.anotherexample.com 을 실행할 수 있습니다. 이 선택 사항은 기본 설정 가상 호스트와 IP 기반 가상 호스트를 위한 <VirtualHost> 지시자와 대응 합니다. 이름 기반의 가상 호스트는 <NameVirtualHost> 지시자와 대응 합니다.
하나의 가상 호스트를 위한 지시자의 집합은 그 특정 가상 호스트에만 적용이 됩니다. 만약 서버 전체로 지시자가 지정이 되고 가상 호스트 설정 내에 정의가 안되었다면, 기본 설정 값이 사용 됩니다. 예를 들어, 웹마스터 이메일 주소를 지정할 수 있고 각각의 가상 호스트를 위한 개별적인 이메일 주소를 설정하지 않을 수도 있습니다.
가상 호스트를 위하여 루트 문서를 (index.html과 같은) 가지는 디렉토리는 DocumentRoot 지시자로 지정을 합니다. 기본 설정된 DocumentRoot는 /var/www
입니다.
ServerAdmin 지시자는 VirtualHost 절에 포함되는, 에러 페이지에서 이메일 주소와 함께 바닥글을 보여주는 것을 선택하였다면, 에러 페이지의 바닥글에 사용되는 이메일 주소 입니다.
이 영역은 어떻게 기본적인 서버 설정을 하는지를 설명 합니다.
LockFile - LockFile 지시자는 서버가 USE_FCNTL_SERIALIZED_ACCEPT 또는 USE_FLOCK_SERIALIZED_ACCEPT 중의 하나로 컴파일 되었을 때 사용되는 lockfile의 경로를 지정 합니다. 그것은 반드시 로컬 디스크에 저장되어야 합니다. NFS 공유 상에 로그 디렉토리가 위치하지 않는 한 기본 설정된 값으로 나두십시오. 이 경우라면, 오직 root에 의해서만 읽을 수 있는 디렉토리로 로컬 디스크 상의 위치를 기본 설정 값으로 변경 합니다.
PidFile - PidFile 지시자는 서버가 프로세스 ID (pid)를 기록하는 파일을 지정 합니다. 이 파일은 반드시 root에 의해서만 읽혀질 수 있어야 합니다. 많은 경우에, 이 지시자는 기본 설정값으로 남겨져야 합니다.
User - User 지시자는 요청을 대답하기 위하여 서버에 의해 사용되는 사용자 아이디를 지정 합니다. 이 설정은 서버의 접근을 결정 합니다. 이 사용자가 접근할 수 없는 파일은 또한 여러분의 웹 사이트 방문자도 접근할 수 없습니다. User를 위하여 기본 설정된 값은 www-data 입니다.
여러분이 하는 것을 정확히 알지 않는 한, User 지시자를 root로 지정하지 마십시오. User로 root를 사용하는 여러분의 웹 서버에 거대한 보안 구멍을 만들게 됩니다.
Group 지시자는 User 지시자와 비슷합니다. Group은 서버가 요청을 대답하는 그룹을 지정 합니다. 기본 설정된 그룹은 또한 www-data 입니다.
아파치는 모듈 방식의 서버 입니다. 이것은 핵심 서버에는 가장 기본적인 기능만을 포함하는 것을 의미 합니다. 확장되는 기능은 아파치로 올려질 수 있는 모듈을 통하여 사용 가능 합니다. 기본 설정으로, 모듈의 기본적인 집합은 컴파일 시에 서버에 포함 됩니다. 만약 서버가 동적으로 올려지는 모듈을 사용하도록 컴파일 되었다면, 모듈은 분리하여 컴파일 될 수 있고, LoadModule 지시자를 사용하여 어느 때나 추가될 수 있습니다. 그렇지 않다면, 아파치는 모듈을 추가하거나 삭제하도록 반드시 재 컴파일 되어야 합니다. 우분투는 아파치2가 동적 모듈의 올림을 허용하도록 컴파일 하였습니다. 설정 지시자들은 <IfModule> 블럭 내에 특정 모듈의 존재를 넣는 것으로 조건적으로 포함될 수 있습니다. 여러분은 추가적인 아파치2 모듈을 설치할 수 있고 웹 서버와 함께 사용을 할 수 있습니다. 아파치2 모듈은 apt-get 명령을 사용하여 추가할 수 있습니다. 예를 들어, MYSQL 인증을 위한 아파치2 모듈을 설치하려면, 다음의 명령을 터미널 프롬프트에서 실행을 합니다:
sudo apt-get install libapache2-mod-auth-mysql
모둘을 설치한 후, 그 모듈은 /etc/apache2/mods-available
디렉토리 내에 있게 됩니다. 모둘을 사용 가능하게 하는 것은 a2enmod 명령을 사용할 수 있습니다. 모듈을 사용 가능하게 하면, 그 모듈은 /etc/apache2/mods-enabled
디렉토리 내에 있게 됩니다.
mod_ssl 모듈은 아파치2 서버에 중요한 - 통신을 암호화 하는 기능을 더합니다. 그러므로, SSL 암호화를 사용하여 여러분의 브라우저가 통신을 할 때, https:// 접두 주소가 브라우저 주소 막대 내의 Uniform Resource Locator (URL)의 시작에 사용 됩니다.
mod_ssl 모듈은 apache2-common 패키지 내에 있습니다. 이 패키지가 설치되어 있다면, 터미널 프롬프트에서 다음의 명령을 실행하여 mod_ssl 모듈을 활성화 할 수 있습니다:
sudo a2enmod ssl
여러분의 안전한 서버를 만들기 위하여, 공개와 사적 키 쌍을 만들기 위한 공개 키 암호화를 사용 합니다. 대부분의 경우에, 여러분의 공개 키를 포함하는 인증 요청, 여러분 회사의 이름 등의 증명, 그리고 인증 기관(CA)에 지불하는 비용을 보냅니다. CA는 인증 요청과 여러분의 식별을 확인한 후 보안 서버를 위하여 인증서를 보내게 됩니다.
다른 방법으로, 여러분 스스로 자가-사인한 인증서를 만들 수 있습니다. 그러나, 자가-사인 인증서는 대부분의 현업 환경에서는 사용하지 말아야 함을 주의 하십시오. 자가-사인 인증서는 사용자의 웹브라우저에 의해 자동적으로 받아들여지지 않습니다. 사용자는 웹브라우저에 의하여 인증서를 받아들이고 보안 연결을 만들기 위한 질문을 받게 됩니다.
자가-사인 인증서 또는 여러분이 선택한 CA에서 사인한 인증서를 가진 후에, 그것을 보안 서버에 설치하는 것이 필요 합니다.
보안 서버를 동작하게 하려면 키와 인증서가 필요 합니다. 이것은 자가-사인한 인증서를 만들거나 또는 CA-사인 인증서를 구매하여야 하는 것을 의미 합니다. CA-사인 인증서는 여러분의 서버에 두 가지 중요한 능력을 제공 합니다:
웹브라우저들은 (대개) 사용자에게 묻는 것 없이 자동적으로 인증서와 만들어진 보안 연결을 인식 합니다.
CA가 사인된 인증을 발행하였을 때, 그것은 웹 페이지를 브라우저에 제공하는 단체의 식별을 보장 합니다.
SSL을 지원하는 대부분의 웹 브라우저는 그들이 자동적으로 받아들이는 인증한 CA의 목록을 가집니다. 만약 브라우저가 목록 내에 인증된 CA를 가지지 않은 인증서를 만나게 되면, 브라우저는 사용자에게 접속을 허용할 것인지 또는 거절할 것인지를 물어보게 됩니다.
여러분은 보안 서버를 위하여 자가-사인된 인증서를 만들 수 있지만, 자가-사인된 인증서는 CA-사인된 인증서와 같은 기능을 제공하지 않음을 알고있어야 합니다. 자가-사인된 인증서는 대부분의 웹 브라우저에 의해 자동적으로 인식되지 않고, 자가-사인된 인증서는 웹 사이트를 제공하는 단체의 식별에 대한 염려를 위한 어떤 보증도 제공하지 않습니다. CA-사인된 인증서는 보안 서버를 위한 이 두 가지의 중요한 능력을 제공 합니다. CA에서 인증서를 받는 절차는 아주 쉽습니다. 빠른 개괄적인 것은 다음과 같습니다:
사적 그리고 공개 암호 키 쌍을 만듭니다.
공개 키에 근거하여 인증서 요청을 만듭니다. 인증서 요청은 여러분의 서버와 그것을 호스팅하는 회사에 대한 정보를 가집니다.
인증서 요청을, 여러분의 인적 사항을 제공하는 문서와 함께 CA로 보냅니다. 우리는 여러분에게 어떤 인증 기관을 선택할 지를 이야기할 수 없습니다. 여러분의 결정은 아마 여러분의 과거 경험, 친구나 동료의 경험, 또는 순전히 금전상의 요인에 근거할 겁니다.
CA를 결정하였다면, 그들에게서 어떻게 인증서를 얻을 수 있는지를 그들이 제공한 지시에 따르는 것이 필요 합니다.
CA가 여러분이 정말로 요청을 한 사람임을 만족하게 되면, 그들은 디지털 인증서를 여러분에게 보냅니다.
이 인증서를 여러분의 보안 서버에 설치하고, 보안 트랜잭션을 관리하기 시작 합니다.
CA에서 인증서를 받던지 또는 여러분 스스로 자가-사인 인증서를 만들던지, 첫 번째 단계는 키를 만드는 것 입니다.
인증서 서명 요청 (CSR)을 만드려면, 여러분 소유의 키를 만들어야만 합니다. 키를 만들기 위하여 터미널 프롬프트에서 다음의 명령을 수행할 수 있습니다:
openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus .....................++++++ .................++++++ unable to write 'random state' e is 65537 (0x10001) Enter pass phrase for server.key:
이제 여러분의 암호 문구를 입력 합니다. 최선의 보안을 위하여, 그것은 최소한 8자리 문자여야 합니다. -deb3을 지정하는 경우 최소한의 길이는 4자리 문자 입니다. 그것은 숫자 그리고/또는 구두점을 포함하고 사전내의 단어여서는 안됩니다. 암호 문구는 대소문자 구별을 하는 것을 기억 하십시오.
확인을 위하여 암호 문구를 재 입력 합니다. 그것을 정확히 재 입력한 후, 서버 키는 만들어지고 server.key
파일로 저장이 됩니다.
또한 여러분의 보안 웹 서버를 암호 구문 없이 실행시킬 수 있습니다. 이것은 보안 웹 서버를 시작하는 매 번마다 암호 구문을 입력할 필요가 없으므로 편리합니다. 하지만, 그것은 굉장히 안전하지 못한 방법이고 보안 키의 절충은 서버의 절충과 마찬가지의 의미 입니다.
어떤 경우에는, 구문 생성에서 -des3 스위치는 떼는 것 또는 터미널 프롬프트에서 다음의 명령을 수행하는 것으로 암호 구문 없이 보안 웹 서버를 실행하는 것을 선택할 수 있습니다:
openssl rsa -in server.key -out server.key.insecure
위의 명령을 실행하면, 그 insecure 키는 server.key.insecure
파일에 저장 됩니다. 여러분은 이 파일을 암호 구문 없이 CSR을 생성할 때 사용할 수 있습니다.
CSR을 만드려면, 터미널 프롬프트에서 다음의 명령을 실행 합니다:
openssl req -new -key server.key -out server.csr
암호 구문을 입력하도록 물어 봅니다. 만약 여러분이 정확한 암호 구문을 입력하면, 회사 이름, 사이트 이름, 이메일 ID 등을 입력하도록 물어 봅니다. 이러한 모든 사항을 입력한 후에, 여러분의 CSR은 만들어지고 그것은 server.csr
파일에 저장 됩니다. 이 CSR 파일을 이 후의 절차를 위하여 CA로 보낼 수 있습니다. CAN은 이 CSR 파일을 사용하고 인증서를 발행 합니다. 다른 한편으로는, 여러분은 이 CSR을 사용하여 자가-사인 인증서를 만들 수도 있습니다.
자가-사인 인증서를 만들기 위하여, 터미널 프롬프트에서 다음의 명령을 실행 합니다:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
위의 명령은 여러분이 암호 구문을 입력하도록 물어 봅니다. 정확한 암호 구문이 입력된 후, 여러분의 인증서가 만들어지고 그것은 server.crt
파일에 저장 됩니다.
만약 여러분의 보안 서버가 현업 환경에서 사용이 된다면, 아마도 CA가 사인한 인증서가 필요할 겁니다. 자가-사인한 인증서를 사용하는 것은 권장되지 않습니다.
키 파일 server.key
와 인증서 파일 server.crt
또는 여러분의 CA에서 발행한 인증서 파일을 터미널 프롬프트에서 다음의 명령들을 수행하여 설치할 수 있습니다:
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
/etc/apache2/sites-available/default
파일 또는 여러분의 보안 가상 호스트를 위한 설정 파일에 다음의 네 줄을 추가하여야 합니다. VirtualHost 부분에 그것을 넣습니다. 그것은 DocumentRoot 줄 밑에 놓여집니다:
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
HTTPS는 포트 번호 443을 듣습니다. /etc/apache2/ports.conf
파일에 다음의 줄을 추가하여야 합니다:
Listen 443
여러분의 인증서를 설치한 후에, 웹 서버를 재 시작하여야 합니다. 터미널 프롬프트에서 다음의 명령을 실행하여 웹 서버를 재 시작할 수 있습니다:
sudo /etc/init.d/apache2 restart
여러분은 반드시 그 암호 구문을 기억해야 하고 보안 웹 서버가 시작되는 매 번마다 암호 구문을 입력 합니다.
암호 구문을 입력하도록 물어 봅니다. 정확한 암호 구문을 입력한 후에, 보안 웹 서버는 시작 됩니다. 여러분의 웹 브라우저 주소 란에서 https://your_hostname/url/ 형식으로 입력하여 보안 서버 페이지를 접근 합니다.