Конфигуриране на Apache със SSL
Следващите инструкции предполагат, че искате да стартирате и защитен сървър (на порт 443
) и обикновен сървър (на порт 80
). Първо, трябва да конфигурирате сървъра да слуша на двата порта. Или редактирайте /etc/apache2/ports.conf
(в Debian; това е включено в apache2.conf
) или редактирайте /etc/apache2/apache2.conf
директно да включва линиите:
Слушайте 80 Слушайте 443
След това редактирайте /etc/apache2/sites-enabled/yoursite
за да използвате SSL настройките. Разделянето на обикновените и сигурни настройки на сървъра с помощта на VirtualHosts е най-лесният вариант по отношение на поддръжката. Всяка конфигурация извън секциите VirtualHosts (като настройка на ServerAdmin) ще се прилага както за VirtualHosts (така и за всички други).
Версиите на Apache 2.4.8 и по-нови очакват сертификатът на вашия сървър да бъде свързан с междинни сертификати в един файл. За да изтеглите верижен файл от SSL.com, изберете Nginx
връзка за изтегляне в акаунта на портала:
Като алтернатива можете да обедините съществуващия си сертификат и междинните файлове с команда като следната:
$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
Добавете следния раздел към вашия конфигурационен файл:
# ===================================================== # SSL /TLS настройки # ================================================== = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine на SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
Няколко бележки за тази конфигурация:
SSLEngine
трябва да се активира, така че сървърът да използва SSL.DocumentRoot
задава коренната директория за този виртуален хост. Това означава, че можете да отделите защитено съдържание изцяло от обичайното съдържание.SSLCertificateFile
трябва да бъде зададено на мястото, където сте поставили файла със сертификата на вашия сървър и междинна верига.SSLCertificateKeyFile
трябва да бъде зададено на мястото, където сте поставили файла на личния си ключ.
Добавете следния раздел към вашия конфигурационен файл:
# ===================================================== # SSL /TLS настройки # ================================================== = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine на SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / sslnd- client.crt
Няколко бележки за тази конфигурация:
SSLEngine
трябва да се активира, така че сървърът да използва SSL.DocumentRoot
задава коренната директория за този виртуален хост. Това означава, че можете да отделите защитено съдържание изцяло от обичайното съдържание.SSLCertificateFile, SSLCertificateChainFile,
намляваSSLCertificateKeyFile
трябва да бъде зададено на местата, където съответно поставяте сертификата си, междинните и частните файлове.
За да стартирате обикновения сървър на порт 80, добавете следния раздел към конфигурационния файл:
NameVirtualHost *: 80 DocumentRoot "/ var / www / tvojeite" # Настройка на директория, опции и т.н. # Повечето от тези опции вероятно ще бъдат зададени извън секциите на VirtualHosts #.
След като запазите редактирания конфигурационен файл, рестартирайте уеб сървъра. Ако сте използвали пропуск при генериране на сертификата си, ще трябва да го въведете, когато бъде оспорен.
Тестване
Създайте основна страница index.html навсякъде, където се намира главната директория за вашия уеб сървър, ако все още нямате съдържание там.
След това насочете уеб браузъра си към https://www.yoursite.com
. Трябва да видите SSL връзка отворена и страницата доставена. Ако използвате самоподписан сертификат, браузърът ви ще изведе предупреждение, което ви предупреждава, че самоличността на сървъра не може да бъде потвърдена. Можете да изберете да видите и приемете сертификата. Ако използвате външен сертификат, всичко трябва да се случи без намеса.
Уверете се също, че нямате достъп до защитеното съдържание чрез http: //. Ако опитате, трябва да получите съобщение за грешка.
Отстраняване на проблеми
Ако не работи както се очаква, първо проверете дали вашият сървър действително работи, използвайки ps -a | grep apache
. Ако това не върне нищо, опитайте да го рестартирате и проверете за съобщения за грешки на терминала.
Също така проверете дали разрешенията за вашите ключови и сертификатни файлове са зададени правилно (вижте по-горе), както и разрешенията за вашия тестов HTML файл и неговата директория.
След това проверете регистрационните файлове. Трябва да проверите както дневниците на основния сървър, така и SSL регистрационните файлове, които сте настроили във вашия конфигурационен файл по-горе. Ако не получите нищо полезно, опитайте да промените стойността LogLevel в конфигурационния файл на Apache2 на „отстраняване на грешки“, рестартирайте Apache2 и тествайте отново. Това трябва да даде повече данни за регистрационния файл.
Ако използвате и редовен уеб сървър на порт 80, опитайте да извлечете тестова страница чрез http: //, а не https: //, за да идентифицирате дали проблемът е в уеб сървъра или в SSL връзката. Имайте предвид, че в настройката по-горе основната директория на уеб сървъра е различна за http: // и https: //, така че няма да имате (или не трябва!) Да имате достъп до същото съдържание. Ако вашата тестова страница в кореновата директория http: // работи добре, а тестовата ви страница в основната директория https: // не, това може да ви помогне да определите проблема.
Ако проблемът е в SSL връзката, полезен инструмент е s_client
, който е диагностичен инструмент за отстраняване на проблеми TLS/ SSL връзки. Основното използване е: /usr/bin/openssl s_client -connect localhost:443
, Има и много други опции, за които можете да проверите документацията. Ако получите съобщения за грешка, това би трябвало да ви помогне при намирането на проблема.