Назад | Перейти на главную страницу

Как зашифровать несколько виртуальных серверов на apache

Я размещаю несколько экземпляров одного и того же приложения ruby ​​on rails через пассажира на сервере Apache. В прошлом эти приложения были доступны через отдельные домены. Но теперь я получил домен и несколько отделений от нашего ИТ-отдела, и мне нужно обслуживать приложения следующим образом:

domain.example.de/app_one
domain.example.de/app_two
....

Хотя это прекрасно работает без Let's-encrypt (просто нужно настроить таким образом apache и ruby ​​on rails-приложения). Я хочу, чтобы страницы доставлялись через https (Let's-encrypt), как и раньше. Я настроил Apache таким образом:

<VirtualHost *:80>
    ServerName http://domain.example.de/app_one

    # Tell Apache and Passenger where your app's 'public' directory is
    DocumentRoot /var/www/app_one/public

    PassengerRuby /usr/local/rvm/gems/ruby-2.3.8/wrappers/ruby

    # Relax Apache security settings
    <Directory /var/www/app_one/public>
      Allow from all
      Options -MultiViews
      # Uncomment this if you're on Apache >= 2.4:
      Require all granted
    </Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain.example.de/app_one
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Но при звонке

sudo certbot --apache

В нем не указаны новые «ServerNames», для которых нужно выдавать сертификаты. Если я вызываю certbot с флагом «-d» и вручную указываю «ServerName», я получаю сообщение об ошибке, что имя домена содержит недопустимые символы.

Можно ли таким образом выдать сертификат для каждого приложения? Или мне нужно выпустить один для домена и использовать его для каждого приложения в этом домене?

http://domain.example.de/app_one не является действительным доменным именем. Доменная часть этого domain.example.de. Это то, что вы должны использовать в ServerName директива и в certbot. Все остальное настраивается в другом месте.

/app_one можно настроить в <Location> блокировать или как обратный прокси, http:// уже подразумевается :80 участие в вашем <VirtualHost>

Что касается certbot, то --apache параметр только указывает ему использовать Apache для обработки проверки. Вам по-прежнему необходимо предоставить домену -d параметр.