Настройка HTTPS на Apache Ubuntu

Настройка HTTPS на Apache Ubuntu

Для того что бы настроить HTTPS на APACHE необходимо создать самоподписанный сертификат для сервера. Делается это просто: выполняем команду:
openssl req -new -x509 -days 30 -keyout server.key -out server.pem
если у вас стоит уже openssl, если же не стоит то ставим его
sudo apt-get install openssl
Первым вопросом при создании сертификата будет "Enter PEM pass phrase" это пароль от сертификата. Запомните его, он нам пригодиться дальше. И так далее в процессе создания сертификата у вас будут просить вводить следующие данные:
  • C — country, двухбуквенный код страны, например, RU или US
  • ST — state,  регион, область, район и т.д.
  • L — locality,  город
  • O — organization, название организации
  • OU — organization unit, отдел в организации
  • CN — common name,  адрес веб-сайта
После того как он создан, появятся 2 файла server.key и server.pem. Помните мы вводили пароль для сертификата, так вот после его установке при каждом запуске apache мы должны будем вводить данный пароль. Неудобно правда ли? Давайте снимем с себя лишние проблемы. Выполняем поочередно:
cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key // на этой строчке попросит ввести тот самый пароль
rm server.key.orig
Вот и все. Теперь пароль у нас спрашивать не будет. Скопируем их в /etc/ssl и сделаем доступными только админу
sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key
Теперь перейдем непосредственно к настройке Apache и Virtual Hosts.

Настойка Apache

включаем mod_ssl
sudo a2enmod ssl
Далее создадим виртуальный хост для ssl соединения. Для простоты решения скопируем все данные из обычного Virtual Hosts и поменяем/добавим некоторые данные. Переходим '/etc/apache2/sites-available/' . Там выбираем нужный нам виртуальный хост для примера example.conf (у меня просто несколько сайтов на одном сервере). Копируем все данные внутри хоста и создаем новый. Допустим example-ssl.conf и вставляем содержимое. Теперь же надо поменять следующие данные вместо
<VirtualHost *:80>
ставим
<VirtualHost *:443>
Теперь добавляем где нибудь внутри следующие строчки
SSLEngine on
SSLProtocol all -SSLv2

# Публичный сертификат сервера
SSLCertificateFile    /etc/ssl/certs/server.pem
# Приватный ключ сервера
SSLCertificateKeyFile /etc/ssl/private/server.key
На этом с редактированием все. Добавляем новый виртуальный хост
sudo a2ensite example-ssl.conf
Теперь перезагружаем apache
sudo service apache2 restart
Если вам надо сделать перенаправление HTTP на HTTPS то читаем далее

Перенаправление HTTP запросов на HTTPS

Включаем mod_alias и перезагружаем apache
sudo a2enmod alias
sudo service apache2 restart
Теперь переходим все по тому же адресу '/etc/apache2/sites-available/' и открываем example.conf и добавляем строчку
Redirect / https://example.com/
Вот и все перенаправление должно заработать

Возврат к списку