Apache Error AH01906: RSA server certificate is a CA certificate — Решение
При старте 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 | Назначение |
|---|---|---|
| Корневой / Промежуточный CA | CA:TRUE | Подписание других дочерних сертификатов (Certificate Authority) |
| Конечный серверный сертификат | CA:FALSE | Установка на веб-сервер для шифрования TLS-трафика домена |
- Apache предупреждает, что в директиве
SSLCertificateFileуказан корневой сертификат удостоверяющего центра вместо конечного сертификата домена. - Некоторые строгие TLS-клиенты и браузеры разрывают защищенное соединение.
- Проверьте расширения X.509 в вашем текущем SSL-сертификате с помощью OpenSSL:
openssl x509 -in /etc/ssl/certs/server.crt -noout -text | grep -A 2 "Basic Constraints" - Если вывод содержит
CA:TRUE, значит, данный файл является ключом удостоверяющего центра (CA) и не должен использоваться в качестве серверного сертификата. - Сгенерируйте корректный конечный сертификат (End-Entity Certificate):
Создайте файл конфигурации OpenSSLv3.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 - Выпустите конечный сертификат, подписав его вашим локальным CA:
openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365 -sha256 -extfile v3.ext - В конфигурации Apache укажите правильные пути:
SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key SSLCACertificateFile /etc/ssl/certs/rootCA.crt - Перезапустите веб-сервер:
sudo systemctl restart apache2 # или httpd.
basicConstraints=CA:FALSE (или вовсе не иметь флага CA). Использование корневого CA в роли конечного сервера считается критической архитектурной ошибкой безопасности.Частые вопросы (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'.