Свой сервер: подготовка веб-сервера и сертификатов: различия между версиями
Rain (обсуждение | вклад) (Новая страница: «Ниже приводится список команд, необходимых для настройки веб-сервера и получения сертификатов для своего jabber-сервера на примере Debian 12. Первым делом ставим необходимые пакеты. Тут и далее команды выполняются от пользователя root. apt-get install apache2 certbot a2enmod h...») |
Rain (обсуждение | вклад) (+SSL) |
||
Строка 7: | Строка 7: | ||
Вторая команда включает поддержку установки header'ов для отдаваемого контента - это пригодится в дальнейшем для настройки [https://xmpp.org/extensions/xep-0156.html XEP-0156]. | Вторая команда включает поддержку установки header'ов для отдаваемого контента - это пригодится в дальнейшем для настройки [https://xmpp.org/extensions/xep-0156.html XEP-0156]. | ||
Создаем конфиг-файл для веб-сервера | Создаем конфиг-файл для веб-сервера. Здесь и далее вместо указанных IP-адресов используем адрес своего сервера, а вместо EXAMPLE.COM - свой домен. | ||
{{Hider hiding | {{Hider hiding | ||
Строка 80: | Строка 80: | ||
После успешного выполнения команд будет выдана информация о созданном сертификате, в том числе 2 файла - цепочка ключей и приватный ключ - сохраните эти пути для дальнейшего использования, они нам еще пригодятся. Всего получится 10 файлов. certbot обновляет сертификаты автоматически, если срок их истечения составляет менее 30 дней - т.е., обновление происходит раз в 2 месяца. | После успешного выполнения команд будет выдана информация о созданном сертификате, в том числе 2 файла - цепочка ключей и приватный ключ - сохраните эти пути для дальнейшего использования, они нам еще пригодятся. Всего получится 10 файлов. certbot обновляет сертификаты автоматически, если срок их истечения составляет менее 30 дней - т.е., обновление происходит раз в 2 месяца. | ||
В дальнейшем, для использования созданных на веб-сервере доменов - например, для размещения сайта, посвященного jabber-серверу, или размещения чат-логов конференций - можно включить в Apache2 поддержку SSL. Делается это следующим образом: | |||
a2enmod ssl | |||
Создаем конфиг-файл: | |||
{{Hider hiding | |||
|title=Конфиг-файл /etc/apache2/sites-available/ssl.jabber_service_domain_EXAMPLE.COM.conf | |||
|content=<pre> | |||
<VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> | |||
ServerAdmin webmaster@EXAMPLE.COM | |||
DocumentRoot /var/www/html/EXAMPLE.COM/htdocs | |||
ServerName EXAMPLE.COM | |||
SSLEngine on | |||
SSLCertificateFile /etc/letsencrypt/live/EXAMPLE.COM/fullchain.pem | |||
SSLCertificateKeyFile /etc/letsencrypt/live/EXAMPLE.COM/privkey.pem | |||
<Location ~ "/\.well-known/host-meta(\.json)?"> | |||
Header set Access-Control-Allow-Origin "*" | |||
</Location> | |||
</VirtualHost> | |||
<VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> | |||
ServerAdmin webmaster@upload.EXAMPLE.COM | |||
DocumentRoot /var/www/html/upload.EXAMPLE.COM/htdocs | |||
ServerName upload.EXAMPLE.COM | |||
SSLEngine on | |||
SSLCertificateFile /etc/letsencrypt/live/upload.EXAMPLE.COM/fullchain.pem | |||
SSLCertificateKeyFile /etc/letsencrypt/live/upload.EXAMPLE.COM/privkey.pem | |||
</VirtualHost> | |||
<VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> | |||
ServerAdmin webmaster@pubsub.EXAMPLE.COM | |||
DocumentRoot /var/www/html/pubsub.EXAMPLE.COM/htdocs | |||
ServerName pubsub.EXAMPLE.COM | |||
SSLEngine on | |||
SSLCertificateFile /etc/letsencrypt/live/pubsub.EXAMPLE.COM/fullchain.pem | |||
SSLCertificateKeyFile /etc/letsencrypt/live/pubsub.EXAMPLE.COM/privkey.pem | |||
</VirtualHost> | |||
<VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> | |||
ServerAdmin webmaster@conference.EXAMPLE.COM | |||
DocumentRoot /var/www/html/conference.EXAMPLE.COM/htdocs | |||
ServerName conference.EXAMPLE.COM | |||
SSLEngine on | |||
SSLCertificateFile /etc/letsencrypt/live/conference.EXAMPLE.COM/fullchain.pem | |||
SSLCertificateKeyFile /etc/letsencrypt/live/conference.EXAMPLE.COM/privkey.pem | |||
</VirtualHost> | |||
<VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> | |||
ServerAdmin webmaster@proxy.EXAMPLE.COM | |||
DocumentRoot /var/www/html/proxy.EXAMPLE.COM/htdocs | |||
ServerName proxy.EXAMPLE.COM | |||
SSLEngine on | |||
SSLCertificateFile /etc/letsencrypt/live/proxy.EXAMPLE.COM/fullchain.pem | |||
SSLCertificateKeyFile /etc/letsencrypt/live/proxy.EXAMPLE.COM/privkey.pem | |||
</VirtualHost> | |||
</pre> | |||
}} | |||
И включаем его: | |||
a2ensite ssl.jabber_service_domain_mychat.name.conf | |||
systemctl restart apache2 | |||
[[Category:Свой сервер]] | [[Category:Свой сервер]] |
Версия 13:41, 1 ноября 2023
Ниже приводится список команд, необходимых для настройки веб-сервера и получения сертификатов для своего jabber-сервера на примере Debian 12.
Первым делом ставим необходимые пакеты. Тут и далее команды выполняются от пользователя root.
apt-get install apache2 certbot a2enmod headers
Вторая команда включает поддержку установки header'ов для отдаваемого контента - это пригодится в дальнейшем для настройки XEP-0156. Создаем конфиг-файл для веб-сервера. Здесь и далее вместо указанных IP-адресов используем адрес своего сервера, а вместо EXAMPLE.COM - свой домен.
<VirtualHost 185.161.208.130:80 [2a07:c801:0:1e::]:80> ServerAdmin webmaster@EXAMPLE.COM DocumentRoot /var/www/html/EXAMPLE.COM/htdocs ServerName EXAMPLE.COM <Location ~ "/\.well-known/host-meta(\.json)?"> Header set Access-Control-Allow-Origin "*" </Location> </VirtualHost> <VirtualHost 185.161.208.130:80 [2a07:c801:0:1e::]:80> ServerAdmin webmaster@upload.EXAMPLE.COM DocumentRoot /var/www/html/upload.EXAMPLE.COM/htdocs ServerName upload.EXAMPLE.COM </VirtualHost> <VirtualHost 185.161.208.130:80 [2a07:c801:0:1e::]:80> ServerAdmin webmaster@pubsub.EXAMPLE.COM DocumentRoot /var/www/html/pubsub.EXAMPLE.COM/htdocs ServerName pubsub.EXAMPLE.COM </VirtualHost> <VirtualHost 185.161.208.130:80 [2a07:c801:0:1e::]:80> ServerAdmin webmaster@conference.EXAMPLE.COM DocumentRoot /var/www/html/conference.EXAMPLE.COM/htdocs ServerName conference.EXAMPLE.COM </VirtualHost> <VirtualHost 185.161.208.130:80 [2a07:c801:0:1e::]:80> ServerAdmin webmaster@proxy.EXAMPLE.COM DocumentRoot /var/www/html/proxy.EXAMPLE.COM/htdocs ServerName proxy.EXAMPLE.COM </VirtualHost> <VirtualHost 185.161.208.130:80 [2a07:c801:0:1e::]:80> ServerAdmin webmaster@proxy.EXAMPLE.COM DocumentRoot /var/www/html/xmpp.EXAMPLE.COM/htdocs ServerName proxy.EXAMPLE.COM </VirtualHost>
Создаем каталоги:
mkdir -p $(awk '/DocumentRoot/{print $2}' /etc/apache2/sites-available/jabber_service_domain_EXAMPLE.COM.conf) chown www-data:www-data -R /var/www/html/
Включаем наши сайты и удаляем дефолтный:
a2ensite jabber_service_domain_EXAMPLE.COM.conf a2dissite 000-default.conf mv /var/www/html/index.html /var/www/html/EXAMPLE.COM/htdocs/
Перезапускаем веб-сервер:
systemctl restart apache2
Теперь можно создать все необходимые сертификаты. Для этого воспользуйтесь следующими командами:
certbot certonly --webroot --webroot-path /var/www/EXAMPLE.COM/htdocs/ -d EXAMPLE.COM --rsa-key-size 4096 certbot certonly --webroot --webroot-path /var/www/conference.EXAMPLE.COM/htdocs/ -d conference.EXAMPLE.COM --rsa-key-size 4096 certbot certonly --webroot --webroot-path /var/www/upload.EXAMPLE.COM/htdocs/ -d upload.EXAMPLE.COM --rsa-key-size 4096 certbot certonly --webroot --webroot-path /var/www/pubsub.EXAMPLE.COM/htdocs/ -d pubsub.EXAMPLE.COM --rsa-key-size 4096 certbot certonly --webroot --webroot-path /var/www/proxy.EXAMPLE.COM/htdocs/ -d proxy.EXAMPLE.COM --rsa-key-size 4096
В параметрах после --webroot-path указывается каталог веб-сервера для данного домена, а после -d - сам домен.
После успешного выполнения команд будет выдана информация о созданном сертификате, в том числе 2 файла - цепочка ключей и приватный ключ - сохраните эти пути для дальнейшего использования, они нам еще пригодятся. Всего получится 10 файлов. certbot обновляет сертификаты автоматически, если срок их истечения составляет менее 30 дней - т.е., обновление происходит раз в 2 месяца.
В дальнейшем, для использования созданных на веб-сервере доменов - например, для размещения сайта, посвященного jabber-серверу, или размещения чат-логов конференций - можно включить в Apache2 поддержку SSL. Делается это следующим образом:
a2enmod ssl
Создаем конфиг-файл:
<VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> ServerAdmin webmaster@EXAMPLE.COM DocumentRoot /var/www/html/EXAMPLE.COM/htdocs ServerName EXAMPLE.COM SSLEngine on SSLCertificateFile /etc/letsencrypt/live/EXAMPLE.COM/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/EXAMPLE.COM/privkey.pem <Location ~ "/\.well-known/host-meta(\.json)?"> Header set Access-Control-Allow-Origin "*" </Location> </VirtualHost> <VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> ServerAdmin webmaster@upload.EXAMPLE.COM DocumentRoot /var/www/html/upload.EXAMPLE.COM/htdocs ServerName upload.EXAMPLE.COM SSLEngine on SSLCertificateFile /etc/letsencrypt/live/upload.EXAMPLE.COM/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/upload.EXAMPLE.COM/privkey.pem </VirtualHost> <VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> ServerAdmin webmaster@pubsub.EXAMPLE.COM DocumentRoot /var/www/html/pubsub.EXAMPLE.COM/htdocs ServerName pubsub.EXAMPLE.COM SSLEngine on SSLCertificateFile /etc/letsencrypt/live/pubsub.EXAMPLE.COM/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/pubsub.EXAMPLE.COM/privkey.pem </VirtualHost> <VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> ServerAdmin webmaster@conference.EXAMPLE.COM DocumentRoot /var/www/html/conference.EXAMPLE.COM/htdocs ServerName conference.EXAMPLE.COM SSLEngine on SSLCertificateFile /etc/letsencrypt/live/conference.EXAMPLE.COM/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/conference.EXAMPLE.COM/privkey.pem </VirtualHost> <VirtualHost 185.161.208.130:443 [2a07:c801:0:1e::]:443> ServerAdmin webmaster@proxy.EXAMPLE.COM DocumentRoot /var/www/html/proxy.EXAMPLE.COM/htdocs ServerName proxy.EXAMPLE.COM SSLEngine on SSLCertificateFile /etc/letsencrypt/live/proxy.EXAMPLE.COM/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/proxy.EXAMPLE.COM/privkey.pem </VirtualHost>
И включаем его:
a2ensite ssl.jabber_service_domain_mychat.name.conf systemctl restart apache2