Гид по технологиям

AWStats по HTTPS: SSL, cron и оптимизация

6 min read Серверы Обновлено 16 Sep 2025
AWStats по HTTPS: SSL, cron и оптимизация
AWStats по HTTPS: SSL, cron и оптимизация

К чему это приведёт

Этот материал пошагово объясняет, как создать самоподписанный SSL‑сертификат на сервере с Apache, подключить AWStats для работы по HTTPS, автоматизировать обновления отчётов через cron и снизить накладные расходы на преобразование IP→имён/страны (GeoIP). Подходит для системных администраторов и инженеров DevOps.


1. Подготовка: требования и краткая методология

  • Требуется установленный Apache и OpenSSL на сервере. На CentOS/RHEL пакет называется mod_ssl.
  • Краткая методология:
    1. Сгенерировать приватный ключ и CSR (запрос на подпись сертификата).
    2. Подписать сертификат (самоподписанный или CA/Let’s Encrypt).
    3. Скопировать сертификат и ключ в стандартные каталоги и выставить права.
    4. Настроить Apache для использования SSL (порт 443).
    5. Перенаправить доступ к AWStats на HTTPS и настроить cron для обновлений.

Важно: если сервер открыт в интернет, рассмотрите выпуск сертификата через доверенный CA (например, Let’s Encrypt) вместо самоподписанного.

2. Создание SSL‑сертификата

OpenSSL должен быть установлен — на CentOS/RHEL это делается так:

yum install mod_ssl

Создание RSA-приватного ключа (пример из исходника использует 1024 бит—рекомендуется 2048 или выше):

# openssl genrsa -des3 -out server.key 1024

Вводится pass phrase для защиты приватного ключа:

Generating RSA private key, 1024 bit long modulus  
Enter pass phrase for server.key:  
Verifying - Enter pass phrase for server.key:

Просмотр информации о ключе:

# openssl rsa -noout -text -in server.key

Создание запроса на подпись (CSR) с использованием приватного ключа:

# openssl req -new -key server.key -out server.csr

Во время создания CSR вам будут заданы поля DN (Distinguished Name). Можно оставлять поля пустыми, установив ‘.’

Пример ввода полей:

Country Name (2 letter code) [GB]:JO  
State or Province Name (full name) [Berkshire]:State  
Locality Name (eg, city) [Newbury]: Your Location  
Organization Name (eg, company) [My Company Ltd]:My Company  
Organizational Unit Name (eg, section) []:  
Common Name (eg, your name or your server's hostname) []:ns.somewhere.com  
Email Address []: [email protected]

Подписание CSR и создание самоподписанного сертификата на 365 дней:

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

Пример подтверждения:

Signature ok
subject=/C=JO/ST=State/L=Your Location/O=My Company/CN=ns.somewhere.com/emailAddress=[email protected] Getting Private key

Копирование файлов в стандартные каталоги Apache и установка прав:

# cp server.crt /etc/pki/tls/certs/  
# cp server.key /etc/pki/tls/private/  
# cp server.csr /etc/pki/tls/private
# chmod go-rwx /etc/pki/tls/certs/server.crt  
# chmod go-rwx /etc/pki/tls/private/server.key  
# chmod go-rwx /etc/pki/tls/private/server.csr

Примечание по безопасности: используйте ключи минимум 2048 бит (openssl genrsa -out server.key 2048) и храните приватный ключ в защищённом каталоге; регулярная ротация сертификатов уменьшает риск компрометации.

3. Настройка Apache для SSL

Добавьте в конфигурацию Apache (например, httpd.conf на CentOS) строки, указывающие на сертификат и ключ:

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

Перезапустите или перезагрузите Apache, затем убедитесь, что сервер слушает порт 443:

netstat -aunt

Ожидаемый вывод (фрагмент):

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN  
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN  
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN

После этого откройте сайт через https://ваш-домен/ и примите самоподписанный сертификат в браузере (или установите доверенный сертификат от CA, чтобы избежать предупреждений).

4. Перенаправление AWStats на HTTPS

В .htaccess можно добавить правило редиректа (отредактируйте URL под вашу инсталляцию):

# redirect awstats to https
RewriteCond %{REQUEST_URI} ^/awstats(.*)
RewriteRule ^/rawe/awstats(.*)$ https://example.com/awstats$1 [R,L]

В конфигурационном файле awstats.site.conf есть параметр UseHTTPSLinkForUrl — укажите там корень HTTPS‑ссылок, если необходимо:

UseHTTPSLinkForUrl
Version : 4.0+
   
# When AWStats build HTML links in its report pages, it starts thoose link
# with "http://". However some links might be HTTPS links, so you can enter
# here the root of all your HTTPS links. If all your site is a SSL web site,
# just enter "/".
# This parameter is not used if ShowLinksOnUrl is 0.
# Example: "/shopping"
# Example: "/"
# Default: ""
#
UseHTTPSLinkForUrl=""

Установите UseHTTPSLinkForUrl=”/“ если весь сайт доступен только по HTTPS.

5. Автоматическое обновление AWStats с помощью cron

Чтобы не обновлять отчёты вручную, создайте cron‑задачу. Рекомендуемый график — ежедневно в время, когда нагрузка минимальна.

Откройте crontab:

$ crontab -e

Добавьте задачу, обновляющую AWStats ежедневно в 09:45 (локальное время сервера):

45 9 * * * /usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"

Объяснение: этот cron вызовет скрипт обновления для всех конфигов в указанной директории. Убедитесь, что путь к awstats_updateall.pl и awstats.pl соответствует вашей установке.

Не забудьте оставить пустую строку в конце crontab перед сохранением.

Вместо множества задач можно использовать один вызов awstats_updateall.pl (пример из исходника):

15 4 * * * perl $HOME/awstats/tools/awstats_updateall.pl now -awstatsprog=$HOME/awstats/cgi-bin/awstats.pl -configdir=$HOME/awstats/cgi-bin/

Если awstats.pl вызывается из cron, выставьте корректные права на исполняемый файл:

$ chmod 504 awstats/cgi-bin/awstats.pl

Это позволит cron и владельцу выполнять скрипт.

Пример через logrotate

Можно использовать logrotate, чтобы обновлять AWStats при ротации логов Apache. Пример файла в /etc/logrotate.d/awstats:

/var/log/httpd/*log {
missingok
notifempty
sharedscripts
prerotate
/var/www/awstats/awstats.pl-update -config=somesite.net
postrotate
/etc/init.d/httpd reload > /dev/null 2>&1 || true
endscript
}

6. Cron для множества конфигураций

Если у вас много конфигов AWStats, не добавляйте под каждый отдельную cron‑задачу. Используйте awstats_updateall.pl, который последовательно обновит все найденные конфиги в указанной папке.

Проверьте, что:

  • awstats_updateall.pl доступен и имеет корректный shebang (perl).
  • У пользователя, от имени которого работает cron, есть права читать конфиг‑файлы и запускать awstats.pl.

7. Настройка дополнений: GeoIP и производительность

По умолчанию разрешение имён и геолокация делаются через DNS и запись dns.txt, что при высоком трафике даёт overhead. Альтернатива — использование GeoIP (MaxMind GeoIP/GeoLite) для маппинга IP→страна/город локально.

Рекомендации:

  • Используйте GeoIP модуль и локальные базы для быстрого сопоставления; обновляйте базы регулярно.
  • Отключите обратные DNS‑поиски внутри AWStats, если вам не нужны имена хостов — это снизит нагрузку.
  • Включайте только те ExtraSections и плагины, которые действительно нужны.

Ссылку на качественную статью о GeoIP для AWStats можно найти в документации AWStats и на сайте разработчика GeoIP/MaxMind.

8. Альтернативные подходы и когда они применимы

  • Let’s Encrypt: если ваш сервер публичен и вы хотите убрать предупреждения браузера — используйте certbot для автоматического получения и продления бесплатного CA‑сертификата.
  • Reverse proxy (nginx/Cloudflare): терминальный SSL можно вынести на прокси, при этом внутреннее соединение может оставаться HTTP (но если важна защита внутри сети — используйте HTTPS на backend тоже).
  • В средах с высокой безопасностью храните приватный ключ на аппаратном модуле (HSM) или используйте PKI решения.

9. Контроль качества и критерии приёмки

Критерии приёмки установки:

  • Сертификат корректно загружен, Apache перезапускается без ошибок.
  • Сайт и AWStats доступны по https://ваш-домен/awstats без ошибок сервера.
  • Cron‑задачи выполняются и обновляют отчёты (проверить timestamps в /var/www/awstats/ или логах).
  • Права на приватный ключ ограничены (только root/администратор).
  • При использовании GeoIP сопоставления корректно отображаются страны/регионы.

10. Роль‑ориентованные чек‑листы

Для системного администратора:

  • Установлен mod_ssl и OpenSSL.
  • Созданы и защищены server.key, server.crt.
  • Конфигурация Apache обновлена и перезапущена.
  • Проверен netstat на порт 443.
  • Настроен cron и проверено его выполнение.

Для DevOps/инженера безопасности:

  • Рассмотрен выпуск через Let’s Encrypt или корпоративный CA.
  • Оценены шифры и протоколы TLS (отключены устаревшие SSLv3/TLS1.0).
  • Проведён аудит прав на файлы и ротация ключей.

Для вебмастера/аналитика:

  • Убедился, что AWStats генерирует ссылку на HTTPS (UseHTTPSLinkForUrl).
  • Проверил корректность отчётов после перехода на HTTPS.

11. Безопасность и приватность

  • Защитите приватный ключ паролем и правами доступа.
  • Отключите слабые шифры и старые версии TLS в конфигурации Apache.
  • Если логирование включает персональные данные, проверьте требования локального законодательства по хранению таких данных (GDPR/локальные законы).

12. Краткий глоссарий

  • SSL/TLS — протоколы для шифрования трафика между клиентом и сервером.
  • CSR — Certificate Signing Request, запрос на подпись сертификата.
  • AWStats — инструмент веб‑аналитики на основе логов сервера.
  • GeoIP — локальные базы для сопоставления IP с географией.

Итог и рекомендации

  • Для публичных сайтов используйте Let’s Encrypt вместо самоподписанных сертификатов, чтобы убрать предупреждения в браузерах.
  • Автоматизируйте обновления AWStats через awstats_updateall.pl и/или logrotate, чтобы поддерживать отчёты актуальными и снижать ручной труд.
  • Оцените необходимость обратных DNS‑запросов и GeoIP: локальные базы обычно быстрее и снижают нагрузку.

Вопросы по конкретной конфигурации (версии ОС, пути установки AWStats, требования безопасности) ускорят помощь — приложите выводы команд apachectl -M, netstat и содержимое /etc/httpd/conf.d/ssl.conf при обращении за поддержкой.

Краткая сводка:

  • Создайте SSL и привяжите его к Apache.
  • Перенаправьте AWStats на HTTPS и настройте UseHTTPSLinkForUrl.
  • Автоматизируйте обновления через cron или logrotate.
  • Используйте GeoIP и отключайте лишние поиски для повышения производительности.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Мониторинг Apache Tomcat: счётчики и правила
Мониторинг.

Мониторинг Apache Tomcat: счётчики и правила

Защита от clickjacking: руководство
Кибербезопасность

Защита от clickjacking: руководство

Разные обои для каждого экрана Android
Android.

Разные обои для каждого экрана Android

Удаление данных с сайтов брокеров
Конфиденциальность

Удаление данных с сайтов брокеров

Разные обои для каждой домашней страницы Android
Android.

Разные обои для каждой домашней страницы Android

Мониторинг и управление Apache Tomcat
Мониторинг.

Мониторинг и управление Apache Tomcat