Как настроить SSL-сертификаты для дополнительных портов в Apache?

Простой вопрос, я просто хотел узнать, как устанавливать SSL-сертификаты в других портах на веб-сервере. Я пытаюсь получить веб-приложение, чтобы иметь действительный сертификат SSL. Я использую apache2. Я уже пытался редактировать файл virtualhost. Я даже не знаю, что я пытаюсь сделать.

Вы вносите изменения в /etc/apache2/ports.conf от apache, чтобы сообщить apache, чтобы прослушивать эти разные порты:

 Listen 8080 <IfModule ssl_module> Listen 446 </IfModule> 

Этапы:

  1. Создайте свои сертификаты SSL:

    • Сделать каталог для добавления сертификатов:

       mkdir -p /etc/apache2/ssl/example.com 
    • Создайте самоподписанный сертификат:

       sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/example.com/apache.key –out /etc/apache2/ssl/example.com/apache.crt 
  2. Включить модуль ssl с помощью: sudo a2enmod ssl

  3. Сделайте записи в файлах Virtualhost (например example.conf), с помощью sudo nano /etc/apache2/sites-available/example.conf

     <VirtualHost *:8080> ServerAdmin webmaster@localhost ServerName example.com DocumentRoot /var/www/html </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:446> ServerAdmin webmaster@localhost ServerName example.com DocumentRoot /var/www/html # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key </VirtualHost> </IfModule> 
  4. Скажите apache для прослушивания в новых портах, добавив порты в файл /etc/apache2/ports.conf :

     Listen 8080 <IfModule ssl_module> Listen 446 </IfModule> <IfModule mod_gnutls.c> Listen 446 </IfModule> 
    • Это говорит apache, чтобы прослушивать трафик SSL на порте 446 против 443
  5. Включить конфигурационные файлы:

     sudo a2ensite example 
  6. Перезапустить apache:

     sudo systemctl restart apache2 

Сначала вы должны прочитать эти ответы:

  • Как настроить дополнительный VirtualHost
  • Измените порт phpMyAdmin с 80 на другой номер
  • Как создать и активировать сертификат Encrypt HTTPS

Основываясь на приведенных выше ответах, этапы:

  • Создайте новый файл конфигурации VirtualHost, посвященный вашему дополнительному порту. Предположим, что это порт 99 , а имя файла конфигурации – https-99.conf :

     sudo nano /etc/apache2/sites-available/https-99.conf 

    Содержимое https-99.conf должно выглядеть так:

     <IfModule mod_ssl.c> Listen 99 <VirtualHost *:99> ServerName www.example.com DocumentRoot /var/www/html-99 <Directory /var/www/html-99> Options None FollowSymLinks AllowOverride None # To enable .htaccess Overrides: AllowOverride All DirectoryIndex index.html index.php Order allow,deny Allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/https-99.error.log CustomLog ${APACHE_LOG_DIR}/https-99.access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem </VirtualHost> </IfModule> 

    Скопируйте вышеуказанный контент и в nano использование: Shift + Insert для вставки; Ctrl + O и Enter для сохранения; Ctrl + X для выхода.

  • Включить конфигурационный файл:

     sudo a2ensite https-99.conf 
  • Генерировать Давайте зашифровать файлы сертификатов:

     sudo letsencrypt --apache certonly --rsa-key-size 4096 --email email@example.com -d www.example.com 

    Где email@example.com и www.example.com должны быть реальными.

  • Откройте порт 99 в брандмауэре:

    • Если вы используете UFW, вы можете сделать это с помощью этой команды: sudo ufw allow 99/tcp

    • Если вы используете IPTables : sudo iptables -A INPUT -p tcp -m tcp --dport 99 -j ACCEPT

  • Создайте каталог DocumentRoot :

     sudo mkdir /var/www/html-99 
  • Поместите некоторый простой контент в каталог DocumentRoot :

     echo 'Hello!!!' | sudo tee /var/www/html-99/index.html 
  • Обновить конфигурацию Apache:

    • Ubuntu 14.04: sudo service apache2 reload
    • Ubuntu 16.04: sudo systemctl reload apache2.service
  • Попробуйте открыть https://www.example.com:99 через браузер. Результат должен быть:

    введите описание изображения здесь