У меня есть сервер, работающий во внутренней сети. Для поддержки 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 ответ1

0

Решил это. По-видимому, 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. Все будет работать нормально, и вы не получите сообщение об ошибке или другие признаки того, что что-то не так, пока не попробуете подключиться к серверу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .