HTTPD - веб сервер Apache2

  1. Остновние настройки
  2. Налаштування за замовчуванням
  3. Параметри віртуальних хостів
  4. параметри Сервера
  5. конфігурація HTTPS
  6. Сертифікати та безпеку
  7. типи сертифікатів
  8. Генерація Certificate Signing Request (CSR)
  9. Створення сертифіката зі своїм підписом
  10. установка сертифіката
  11. Доступ до Сервера

Apache is the most commonly used Web Server on Linux systems. Web Servers are used to serve Web Pages requested by client computers. Clients typically request and view Web Pages using Web Browser applications such as,, or.

Users enter a Uniform Resource Locator (URL) to point to a Web server by means of its Fully Qualified Domain Name (FQDN) and a path to the required resource. For example, to view the home page of the Ubuntu Web site a user will enter only the FQDN. To request specific information about paid support , A user will enter the FQDN followed by a path.

Самі використовувані протоколи для передачі веб сторінок - це HTTP (Hyper Text Transfer Protocol). Протокол, подібний HTTP, через безпечне з'єднання (HTTPS) і протокол передачі файлів (FTP).

Веб сервер Apache часто використовується в зв'язці з движком баз даних, скриптовою мовою та іншими популярними скриптовими мовами - і. Дана конфігурація позначена аббрівіатурой LAMP (Linux, Apache, MySQL, Perl / Python / PHP) і формує собою потужний набір інструментів для розробки і використання веб-додатків.

Веб сервер Apache2 доступний в Ubuntu Linux. Щоб встановити Apache2:

Apache налаштований за допомогою директив, записаних звичайним текстом в конфігураційні файли. Осовном конфігураційний файл названий apache2.conf. Крім того, інші конфігураційні файли можуть додаватися за допомогою директиви Include; в ній можуть використовуватися узагальнюючі символи для підключення декількох файлів. Будь-яка директива може бути розташована в будь-якому і конфігураційних файлів. Зміни в основному файлі конфігурації приймаються сервером Apache2 тільки після запуску / перезапуску. На працюючий сервер зміни не подіють.

Сервер так само читає файл, який містить mime-тип документа; ім'я файлу встановлюється директивою TypesConfig і за замовчуванням воно mime.types.

Файл конфігурації Apache2 за замовчуванням: /etc/apache2/apache2.conf. Ви можете редагувати його для настройки сервера Apache2. Ви можете налаштувати номер порту, розташування файлів сторінок, модулі, лог файли, віртуальні хости і так далі.

Остновние настройки

Даний розділ описує основні параметри настройки сервера Apache2. За додатковою інформацією звертайтеся за адресою Apache2 Documentation .

  • Apache 2 поставляється із зручною для користувача конфігурацією віртуальних хостів. Тобто, налаштований один віртуальний хост за замовчуванням (з використанням директиви VirtualHost), настройку якого можна модифікувати або використовувати як є або використовувати шаблони для додавання інших віртуальних хостів, якщо у вас кілька сайтів. Якщо нічого не змінювати, зазначений за замовчуванням віртуальний хост буде відображатися як ваш сайт за замовчуванням. Так само цей сайт побачать користувачі, запити яких не співпадуть ні з одним значенням директиви ServerName в файлі конфігурації віртуальних хостів. Для зміни віртуального хоста за замовчуванням відредагуйте файл / etc / apache2 / sites-available / default. Якщо ви хочете налаштувати новий віртуальний хост або сайт, скопіюйте цей файл в той же каталог з вибраними вами ім'ям. Наприклад: sudo cp / etc / apache2 / sites-available / default / etc / apache2 / sites-available / mynewsite Відредагуйте новий файл для настройки нового сайту використовуючи директиви, описані нижче

  • Директива ServerAdmin визначає поштову адресу адміністратора сервера, який буде відображатися користувачам. Значення за замовчуванням - webmaster @ localhost. Дана змінна повинна бути змінена на доступний для вас поштову адресу (якщо ви - адміністратор сервера). Якщо на вашому сайті виникнуть проблеми, Apache2 відобразить помилку, в якій так само буде відображено вказану поштову адресу з метою повідомлення проблеми. Ви можете знайти цю директиву в вашому файлі конфігурації сайтів, в каталозі / etc / apache2 / sites-available.

  • Директива Listen визначає порт і, при вказівці, IP адреса, на якому повинен працювати Apache2. Якщо IP адреса не вказана, Apache2 працює на всіх IP адреси, які доступні комп'ютера, на якому він запущений. Значення директиви за замовчуванням - порт 80. Ви можете змінити значення на 127.0.0.1:80 щоб Apache2 працював тільки на локальному інтерфейсі і не був доступний із зовні. Так само можна вказати, наприклад, значення 81 для зміни порту сервера або залишити все як є для роботи за умовчанням. Дана директива може бути знайдена і змінена в її власній файлі /etc/apache2/ports.conf

  • Директива ServerName вказує, на яке FQDN (повне доменне ім'я) повинен відповідати ваш сайт. У віртуальному хості за замовчуванням директива ServerName не вказана, тому він буде відповідати на будь-які запити, невідповідні директивам ServerName в інших віртуальних хостах. Якщо ви тільки що придбали домен ubunturocks.com і хочете його розмістити на своєму сервері, вам буде потрібно встановити значення директиви ServerName ubunturocks.com в вашому файлі конфігурації віртуального хоста. Додайте цю директиву до нового віртуального хосту, файл якого ви створили раніше (/ etc / apache2 / sites-available / mynewsite).

    Додайте цю директиву до нового віртуального хосту, файл якого ви створили раніше (/ etc / apache2 / sites-available / mynewsite)

    Можливо ви захочете, щоб ваш сайт відповідав запиту www.ubunturocks.com, тому що багато пользователелі звикли використовувати приставку www. Скористайтеся директивою ServerAlias для реалізації цього завдання. Ви так само можете скористатися обощающім символом (*). Наприклад, при вказівці значення директиви виду ServerAlias * .ubunturocks.com ваш сайт буде відповідати на будь-які запити, що закінчуються рядком .ubunturocks.com.

  • Директива DocumentRoot визначає, де Apache повинен шукати файли сайту. Значення за замовчуванням / var / www. Цим шляхом сайту немає, але якщо ви раскомментіруете директиву RedirectMatch в файлі /etc/apache2/apache2.conf, запити будуть перенаправлені за адресою / var / www / apache2-default, де розташований сайт Apache2 за замовчуванням. Змініть значення цієї директиви в вашому файлі конфігурації віртуального хоста і не забудьте створити каталог, якщо він ще не створений.

Apache2 не проглядається каталог / etc / apache2 / sites-available. Символічні посилання в / etc / apache2 / sites-enabled вказують на доступні сайти. Скористайтеся утилітою a2ensite (Apache2 Enable Site) для створення символічних посилань. Наприклад: sudo a2ensite mynewsite, де mynewsite - ім'я файлу конфігурації / etc / apache2 / sites-available / mynewsite. Так само використовуйте цю утиліту для виключення активних конфігурації.

Налаштування за замовчуванням

Даний розділ описує налаштування параметрів Apache2 за замовчуванням. Вони необхідні, наприклад, якщо ви додаєте віртуальний хост, налаштовуєте потрібні директиви, а деякі не вказуєте. В цьому випадку використовуються значення за замовчуванням.

  • DirectoryIndex вказує на сторінку (файл) за замовчуванням, яку віддає користувачеві сервер при запиті індексу каталогу, вказуючи слеш (/) в кінці імені каталогу.

    Наприклад, коли користувач запитує сторінку http://www.example.com/this_directory/, він отримає її в разі існування зазначеного в DirectoryIndex файлу, інакше буде відображений згенерований сервером каталог, якщо вказана опція Indexes або буде отбражена сторінка "Доступ заборонено". Сервер спробує знайти один з файлів, зазначених у директиві DirectoryIndex, просматівая її значення по порядку і поверне перший існуючий файл зі списку. Якщо жоден з перерахованих в директиві файлів не буде знайдений і для цього каталогу буде встановлена ​​опція Indexes, сервер згенерує список файлів і підкаталогів в html-форматі. Значення за замовчуванням, яке можна знайти в файлі /etc/apache2/apache2.conf "index.html index.cgi index.pl index.php index.xhtml". Вообщем, якщо Apache2 знайде в запрошенном каталозі один з файлів, зазначених у списку, він його відобразить.

  • Директива ErrorDocument дає можливість вказати файл, який Apache буде повертати в разі повідомлень про помилку. Наприклад, якщо користувач запросить неіснуючу сторінку, буде викликана помилка 404 і Apache поверне файл, вказаний в конфігурації за замовчуванням - /usr/share/apache2/error/HTTP_NOT_FOUND.html.var. Немає запису знаходиться всередині каталогу, зазначеного в директиві DocumentRoot, але директива Alias, описана в файлі /etc/apache2/apache2.conf перенаправляє запити до каталогу / error в каталог / usr / share / apache2 / error /. Щоб переглянути список директив ErrorDocument, скористайтеся командою grep ErrorDocument /etc/apache2/apache2.conf

  • За замовчуванням, лог запитуваних документів сервер пише в файл /var/log/apache2/access.log. Ви можете вказати для кожного віртуального хоста окремий файл для логів за допомогою директиви CustomLog або ж замінити значення за замовчуванням, вказане у файлі /etc/apache2/apache2.conf. Ви так само можете вказати файл для запису помилок за допомогою директиви ErrorLog (за замовчуванням - /var/log/apache2/error.log). Він записується окремо від логів запитуваних документів, що спрощує пошук помилок при будь-яких проблемах з сервером Apache2. Так само ви можете вказати директиви LogLevel і LogFormat (дивіться файл /etc/apache2/apache2.conf для визначення налаштувань за замовчуванням).

  • Деякі опції вказані для кожного каталогу, а не для сервера, опції директив. Строфа Directory укладена в xml-подібні теги:

    <Directory / var / www / mynewsite> ... </ Directory>

    Директива Options всередині строфи Directory може приймати одне або кількома такими значень, розділених пропуском:

    • emphasis role = "bold"> ExecCGI

    • Includes - Дозволити server-side includes. Server-side includes дозволяють підключати до html-файлів інші файли. Це не загальна опція. Для додаткової інформації відвідайте сторінку the Apache2 SSI Howto .

    • IncludesNOEXEC - Дозволити server-side includes, але вимкнути команди #exec і #include в CGI скриптах.

    • Indexes - Відображати список вмісту каталогу, якщо жодного файлу зі списку DirectoryIndex не розпізнається в запрошенном каталозі.

      Indexes - Відображати список вмісту каталогу, якщо жодного файлу зі списку DirectoryIndex не розпізнається в запрошенном каталозі

      З міркувань безпеки зазвичай це не встановлюється і природно не було завдано для каталогу DocumentRoot. Включайте цю опцію тільки на окремі каталоги і тільки в тому випадку, якщо впевнені, що хочете, щоб користувачі могли переглядати весь вміст каталогу.

    • Multiview - Підтримка content-negotiated multiviews; опція вимкнена за замовчуванням в цілях безпеки. відвідайте Apache2 документацію по цій опції .

    • SymLinksIfOwnerMatch - Переходити за символічними посиланнями тільки в разі, якщо у файлу / каталогу і посилання один і той же власник.

Параметри віртуальних хостів

Віртуальні хости дозволяють вам запускати різні сервера для різних ip-адрес, різні імена хостів або різні порти на одних і тих же комп'ютерах. Наприклад, ви можете запустити сайти http://www.example.com і http://www.anotherexample.com на одному і тому ж веб-сервері використовуючи віртуальні хоста. Ця опція відповідає директиві <VirtualHost> для віртуального хоста за замовчуванням і віртуального хоста по IP-адресою. Вона відповідає директиві <NameVirtualHost> для базованого на імені віртуального хоста.

Директиви, встановлені для віртуального хоста застосовуються тільки для того віртуального хоста, для якого вони встановлені. Якщо директива встановлена ​​в основний конфігурації сервера і не встановлена ​​для конкретного віртуального хоста, то буде використано значення за замовчуванням. Наприклад, ви можете вказати адресу електронної пошти веб-майстра в основному файлі конфігурації сервера і не вказувати його для кожного віртуального хоста.

Встановіть директиву DocumentRoot для визначення каталогу, що містить кореневої документ (такий як index.html) для віртуального хоста. Значення директиви DocumentRoot за замовчуванням - / var / www.

The ServerAdmin directive within the VirtualHost stanza is the email address used in the footer of error pages if you choose to show a footer with an email address on the error pages.

параметри Сервера

Даний розділ пояснює, як налаштувати основні параметри сервера.

LockFile - Директива LockFile встановлює шлях до lock-файлу сервера, який використовується, якщо сервер зібраний з параметрами USE_FCNTL_SERIALIZED_ACCEPT або USE_FLOCK_SERIALIZED_ACCEPT. Він повинен розташовуватися на локальному диске. Значення директиви має бути залишено за замовчуванням за винятком випадку, коли каталог логів знаходиться в розділі NFS. Доступ до файлу повинен бути тільки у суперкористувача (root).

PidFile - Директива PidFile встановлює ім'я файлу, в який сервер записує свій номер поцесса (process ID (pid)). Файл повинен читатися тільки суперкористувачем (root). У більшості випадків слід залишити значення за замовчуванням.

User - Директива User визначає userid, під яким сервер відповідає на запити. Вона визначає можливості в доступі для сервера. Будь-які файли, недоступні для цього користувача не будуть доступні і для відвідувачів сайтів. Значення за замовчуванням www-data.

Без повного розуміння того, що ви робите, не встановлюйте директиву User в значення root. Використання суперкористувача (root) як користувача веб-сервера створить дуже серйозні діри в безпеці вашого сервера.

Директива Group за значенням подібна до директиви User. Вона встановлює групу, від якої працює веб-сервер. Значення за замовчуванням - www-data.

Apache - модульний сервер. Під цим мається на увазі, що в основну частину сервера входять тільки самі базові функції. Розширені можливості доступні за допомогою модулів, які можуть бути завантажені в сервер. За замовчуванням, базовий набір модулів входить до складу збірки. Якщо сервер зібраний з можливістю використання динамічно завантажуваних модулів, то модулі можуть збиратися окремо і додаватися в діректіку LoadModule. Інакше, Apache повинен бути пересобран для додавання або видалення будь-яких модулів. В Ubuntu Apache2 зібраний з підтримкою динамічного завантаження модулів. Ви можете встановлювати додаткові модулі Apache2 і використовувати їх разом з вашим сервером. Ви можете встановити модулі Apache2 використовуючи команду. Наприклад, щоб встановити модуль аутентифікації MySQL, вам потрібно запустити наступну команду в терміналі:

sudo apt-get install libapache2-mod-auth-mysql

Після установки модуля він буде доступний в каталозі / etc / apache2 / mods-available. Ви можете використовувати команду для включення модуля. Ви можете використовувати команду для вимкнення модуля. Після включення модуля він буде доступний в каталозі / etc / apache2 / mods-enabled.

конфігурація HTTPS

Модуль додає важливу функцію до сервера Apache2 - можливість шифрувати передану інформацію. Таким чином, коли ваш браузер використовує SSL шифрацию, на початку посилання (Uniform Resource Locator (URL)) використовується префікс https: //.

Модуль доступний в пакеті. Якщо даний пакет у вас встановлений, ви можете запустити в терміналі наступну команду для включення модуля:

sudo a2enmod ssl

Сертифікати та безпеку

Для настройки безпеки вашого сервера використовуйте криптографію з відкритим ключем (public key cryptography), щоб створити пару публічного / приватного ключів (public and private key pair). У більшості випадків, ви посилаєте запит на сертифікат, доказ ідентифікації вашої компанії і оплату в Certificate Authority (CA). CA перевіряє ваш запит на сертифікат, вашу ідентифікацію та потім висилає сертифікат для вашого сервера.

Альтернативний варіант - ви можете створити свій власний сертифікат, підписаний собственоручно. Однак, собственоручно підписані сертефікат не можуть використовуватися на більшості підприємств. Собственоручно підписані сертифікати не приймаються браузером автоматично. Користувачам задається питання, чи приймати сертифікат і створювати чи захищене з'єднання.

Як тільки у вас буде сертифікат (не важливо, підписаний в CA або собственоручно), вам потрібно встановити його на ваш сервер.

типи сертифікатів

Вам потрібен ключ і сертифікат для управління вашим безпечним сервером, тобто вам потрібно згенерувати власне підписаний сертифікат або придбати сертифікат підписаний в CA. Підписаний в CA сертифікат надає дві важливі можливості вашого сервера:

  • Браузери (зазвичай) автоматично визначають сертифікати і дозволяють безпечні з'єднання без підтвердження користувача.

  • Виданий CA підписаний сертифікат є гарантією ідентифікації організації, що надає веб сторінки браузеру.

У більшості браузерів, що підтримують SSL, є список сертифікатів CA, який вони автоматично приймають. Якщо у браузера немає в списку сертифіката, підписаного CA, браузер задасть питання користувачеві, встановлювати з'єднання чи ні.

Ви можете сформувати свій самоподпісанний сертифікат для вашого безпечного сервера, але треба поміть, що самоподпісанний сертифікат не надає ту ж функціональність як сертифікат підписаний підписом CA. Самоподпісанний сертифікат не зізнається автоматично більшістю Веб браузерів, і подібний сертифікат не надає жодної гарантії щодо компанії, яка забезпечує вебсайт. Сертифікат підписаний підписом CA гарантує обидва цих важливих критерію для безпечного сервера. Процес отримання сертифікату підписаного CA досить простий. Далі слід короткий огляд:

  1. Створіть пару ключів шифрування, відкритий і закритий

  2. Створіть запит сертифіката заснований на відкритому ключі. Даний запит містить в собі інформацію про ваш сервер і компанії де він розміщується.

  3. Надішліть запит сертифіката разом з документами підтверджує вашу особистість в CA.Ми не можемо рекомендувати вам, який тип сертифіката вибрати. Ваше рішення може грунтуватися на вашому останньому досвіді, на досвіді ваших друзів і колег або просто на фінансових факторах

    Якщо ви зупинилися на CA, вам необхідно слідувати інструкціям, які вони нададуть для отримання їх сертифіката

  4. Коли CA встановить, що ви є тим, за кого себе видаєте, вони надішлють вам цифровий сертифікат

  5. Встановіть цей сертифікат на свій сервер і починайте використовувати безпечну передачу даних.

Чи отримуєте ви сертифікат від CA або генеруєте його собственоручно, першим кроком має бути створення ключа.

Генерація Certificate Signing Request (CSR)

Для генерування Certificate Signing Request (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:

Тепер ви можете ввести ваш пароль. Для кращої безпеки він повинен містити не менше восьми символів. Мінімальна довжина - чотири символи. Пароль повинен містити цифри і / або спеціальні символи і не бути словом зі словника. Запам'ятайте те, що ви введете.

Повторіть пароль для достовірності. Після правильного повтору пароля сервер згенерує ключ і запише його в файл server.key.

key

Ви так само можете запустити захищений веб сервер без паспорт-пароля. Це зручно тому, що вам не потрібно буде вводити пароль кожного разу при запуску захищеного сервера. Але це дуже небезпечно.

У будь-якому випадку, ви можете запускати ваш сервер і без паспорт-паролі не вказуючи параметр -des3 при генерації паспорта або вказавши наступну команду в терміналі:

openssl rsa -in server.key -out server.key.insecure

Запустивши вищевказану команду сервер збереже небезпечний ключ у файлі server.key.insecure. Ви можете використовувати цей файл для генерації CSR без паспорт-пароля.

Для створення CSR, виконайте наступну команду в терміналі:

openssl req -new -key server.key -out server.csr

Буде видано запрошення ввести ключову фразу. Якщо ви ввели правильну ключову фразу, вам буде запропоновано ввести назву компанії, назва сайту, адресу ел. пошти і т.д. Після того як ви введете ці параметри, ваш CSR буде створений і збережений у файлі server.csr. Ви можете відправити даний CSR в CA для обробки. CAN використовує даний CSR для випуску сертифіката. З іншого боку ви можете створити самоподпісанний сертифікат використовуючи цей CSR

Створення сертифіката зі своїм підписом

Для того, щоб створити сертифікат зі своїм підписом виконаєте наступну комманду в терміналі:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Вищенаведена команда запропонує ввести ключову фразу. При введенні правильної ключової фрази, ваш сертифікат буде створений і збережений у файлі server.crt.

crt

Якщо ваш захищений сервер буде використаний в комерційних цілях, вам швидше за все необхідний сертифікат підписаний CA. В даному випадку не рекомендується використовувати самоподпісанний сертифікат.

установка сертифіката

Ви можете встановити файл ключа server.key і файл сертифіката server.crt або сертифікат, наданий вам CA, за допомогою такої команди в терміналі:

sudo cp server.crt / etc / ssl / certssudo 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 restartsudo /etc/init

Вам потрібно запам'ятати і вводити паспорт-пароль кожного разу при запуску вашого безпечного сервера.

У вас буде запитано паспор-пароль. Після введення правильного пароля сервер буде запущений. Ви зможете відвідати сторінки на безпечному сервері вказавши посилання https: // your_hostname / url / в адресному рядку браузера.

Дополнительная информация

rss
Карта