Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH01906: RSA server certificate is a CA certificate (Basic Constraints: CA:TRUE) Linux / DevOps

Apache Error AH01906: RSA server certificate is a CA certificate — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

При старте Apache с включенным SSL в error.log фиксируется предупреждение уровня [warn]: [ssl:warn] [pid 1234:tid 5678] AH01906: RSA server certificate is a CA certificate (Basic Constraints: CA:TRUE !?). В браузерах клиенты могут видеть ошибку валидации сертификата SEC_ERROR_CA_CERT_USED_AS_END_ENTITY или предупреждение безопасности.

Тип сертификатаРасширение X.509 Basic ConstraintsНазначение
Корневой / Промежуточный CACA:TRUEПодписание других дочерних сертификатов (Certificate Authority)
Конечный серверный сертификатCA:FALSEУстановка на веб-сервер для шифрования TLS-трафика домена
  • Apache предупреждает, что в директиве SSLCertificateFile указан корневой сертификат удостоверяющего центра вместо конечного сертификата домена.
  • Некоторые строгие TLS-клиенты и браузеры разрывают защищенное соединение.
  1. Проверьте расширения X.509 в вашем текущем SSL-сертификате с помощью OpenSSL:
    openssl x509 -in /etc/ssl/certs/server.crt -noout -text | grep -A 2 "Basic Constraints"
  2. Если вывод содержит CA:TRUE, значит, данный файл является ключом удостоверяющего центра (CA) и не должен использоваться в качестве серверного сертификата.
  3. Сгенерируйте корректный конечный сертификат (End-Entity Certificate):
    Создайте файл конфигурации OpenSSL v3.ext:
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = yourdomain.com
    DNS.2 = www.yourdomain.com
  4. Выпустите конечный сертификат, подписав его вашим локальным CA:
    openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365 -sha256 -extfile v3.ext
  5. В конфигурации Apache укажите правильные пути:
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    SSLCACertificateFile /etc/ssl/certs/rootCA.crt
  6. Перезапустите веб-сервер: sudo systemctl restart apache2 # или httpd.
Требования стандартов X.509: Согласно RFC 5280, сертификаты, используемые для идентификации TLS-серверов, обязаны иметь расширение basicConstraints=CA:FALSE (или вовсе не иметь флага CA). Использование корневого CA в роли конечного сервера считается критической архитектурной ошибкой безопасности.
Практический опыт инженера: Для рабочих проектов используйте бесплатные автоматизированные сертификаты Let's Encrypt (Certbot), которые генерируют полностью валидные цепочки X.509 со всеми необходимыми расширениями.

Частые вопросы (FAQ)

Блокирует ли AH01906 запуск Apache?

Нет, это предупреждение (warning), Apache продолжит запуск, но современные браузеры отклонят такое SSL-соединение как небезопасное.

Почему при использовании самоподписанного сертификата появляется эта ошибка?

Если самоподписанный сертификат создавался простой командой openssl req -x509 без указания расширений конечного узла, OpenSSL автоматически выставляет ему статус CA:TRUE.

В чем разница между SSLCertificateFile и SSLCACertificateFile?

SSLCertificateFile содержит публичный сертификат вашего сайта, а SSLCACertificateFile используется для верификации клиентских сертификатов при взаимной mTLS авторизации.

Как сгенерировать правильный самоподписанный сертификат одной командой?

Используйте команду: openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes -subj '/CN=localhost' -addext 'basicConstraints=critical,CA:FALSE'.