Как создать и установить самоподписанный сертификат для HTTPS домена в Apache?

417

В прошлый раз мы вам рассказывали как создать виртуальный хост на Apache, а теперь перевести его на HTTPS!

Перед вами стоит задача на сервере в целях разработки создать сайт прикрепить домен и перевести его на https? Если это так, то подробно читайте данную статью!

Вначале читаем статью про создание виртуальных хостов, а потом возвращаемся сюда и читаем далее!

Включаем модуль:

a2enmod ssl

перезагружаем apache2:

service apache2 restart

генерируем rsa ключ:

openssl genrsa -out site.key 2048

генерируем ключ при запросе на выдачу:

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

и отвечаем или не отвечаем на вопросы, нажимая Enter, кроме «Common Name» вам необходимо указать адрес сайта.

Country Name (2 letter code) [AU]:  можно не указывать
State or Province Name (full name) [Some-State]:  можно не указывать
Locality Name (eg, city) []:можно не указывать
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:можно не указывать
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:    можно не указывать
An optional company name []:   можно не указывать

и создаем сертификат:

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

Проверяем что у вас есть три файла,  вводим команду:

ls
 и видим
 site.crt site.csr site.key

перемещаем все файлы в папку /etc/ssl/certs/:

mv site.* /etc/ssl/certs/

Переходим в папку /etc/apache2/sites-available:

cd /etc/apache2/sites-available

вносим правки в существующий файл конфиуграции:

nano /example.com.conf

редактируем:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    SSLEngine on
    SSLCertificateFile  /etc/ssl/certs/site.crt
    SSLCertificateKeyFile /etc/ssl/certs/site.key
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Перезапускаем apache2:

sudo service apache2 restart

Если хотим чтобы все запросы переадресовывались с версии http на htpps, то добавьте еще строчку:

Redirect / https://example.com/

должно выйти:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    Redirect / https://example.com/
</VirtualHost>

<VirtualHost *:443>
......... и так далее.....

Перезапускаем apache2:

sudo service apache2 restart

Если что-то не получается, то прочтите статью о создание виртуальных хостов в apache.

У вас еще остались вопросы? Пишите их в комментариях, рассказывайте, что у вас получилось или наоборот!

Вот и все! Больше полезных статей и инструкций читайте в разделе Статьи и Хаки Linux. Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней!