Firefox сообщает SEC_ERROR_CA_CERT_INVALID после изменения сертификата веб-сайта
У меня есть сервер, работающий во внутренней сети. Для поддержки SSL я настроил внутренний CA (используя OpenSSL) и выпустил сертификат для сервера. Цепочка сертификатов выглядит следующим образом:
Example Root CA V1
+-- server.example.com
Я установил сертификат сервера на сервер и импортировал корневой сертификат в Firefox, и до сих пор это работало.
Поскольку срок действия корневого сертификата истекает, я решил создать совершенно новый ЦС с более глубокой иерархией:
Example Root CA V2
+-- Example Signing CA V2
+-- server.example.com
Я также создал сертификат пользователя, подписанный подписывающим центром сертификации.
Затем я добавил сертификат пользователя в Firefox. Новый корневой ЦС отображается в разделе "Полномочия", а промежуточный сертификат (подписывающий ЦС) - в разделе "Прочие". Для корневого сертификата я установил все три галочки в Редактировать доверие.
Далее я обновил сертификат на сервере. Когда я сейчас пытаюсь подключиться к серверу, Firefox жалуется, что соединение небезопасно:
server.example.com uses an invalid security certificate.
The certificate is not trusted because it was issued by an invalid CA certificate.
Error code: SEC_ERROR_CA_CERT_INVALID
Нажатие на код ошибки дает мне:
https://server.example.com/
Issuer certificate is invalid.
HTTP Strict Transport Security: true
HTTP Public Key Pinning: false
Certificate chain:
затем следует сертификат сервера, промежуточный сертификат CA и сертификат корневого CA.
Сервер запускает ownCloud и Webmin; до сих пор я только заменил сертификат Webmin. Firefox - это версия 50.1.0.
Что здесь не так?
1 ответ
Решил это. По-видимому SEC_ERROR_CA_CERT_INVALID
является признаком того, что один из сертификатов в цепочке не одобрен / доверен для цели, для которой он используется.
Изучив свои сертификаты, я обнаружил, что мой промежуточный сертификат CA не был сертификатом CA согласно его расширениям x509_v3. Я восстановил промежуточный сертификат со следующими настройками:
X509v3 extensions:
X509v3 Extended Key Usage: critical
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Basic Constraints:
CA:TRUE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign, CRL Sign
Затем я снова подписал запрос сертификата сервера с хорошим промежуточным сертификатом и импортировал промежуточный сертификат в Firefox. Теперь промежуточный сертификат отображается под полномочиями, а не под другими.
Единственная задача состояла в том, чтобы заменить сертификат в Webmin, так как я фактически отключился от веб-интерфейса.
- SSH на сервер
sudo vi /etc/webmin/miniserv.conf
- + Изменить
ssl=1
вssl=0
и сохранить sudo /etc/init.d/webmin restart
- Войдите в Webmin через обычный HTTP, замените сертификат на хороший, затем выйдите снова.
sudo vi /etc/webmin/miniserv.conf
- + Изменить
ssl=0
вернуться кssl=1
и сохранить sudo /etc/init.d/webmin restart
Когда я попытался подключиться к моему серверу через HTTPS, это сработало.
Извлеченный урок: при подписании запроса сертификата с помощью OpenSSL НЕТ проверки, чтобы убедиться, что сертификат подписи действительно является сертификатом CA. Все будет работать нормально, и вы не получите сообщение об ошибке или другие признаки того, что что-то не так, пока не попробуете подключиться к серверу.