Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 1

Ошибка в mozilla firefox с кодом: sec_error_unknown_issuer

Как исправить sec_error_unknown_issuer

Если вы заметили ошибку sec_error_unknown_issuer на одном конкретном сайте, то это значит, что сам сайт настроен неправильно, и виноват в этом его вебмастер. Если сайт не касается оборота финансовых средств, то вы можете добавить его в исключения, нажав на экране ошибки «Дополнительно», затем «Добавить исключение», а затем и «Подтвердить исключение».

Если же данная ошибка повторяется при входе на множество проверенных ресурсов, то, для начала, попробуйте просто перезагрузить ПК, а также проверить вашу систему надёжным антивирусом (напр., Dr.Web CureIt!, Trojan Remover, AVG и др.). Возможно, причиной возникновения ошибки sec_error_unknown_issuer является злокачественная программа, и надёжный антивирусный софт позволит вам легко исправить проблему.

Если перезагрузка и поиск антивирусов не помог, тогда необходимо вручную удалить файл с сертификатом безопасности Mozilla Firefox под названием cert8.db. Этот файл может быть повреждён и по данной причине может возникать описанная мной ошибка.

Для удаления cert8.db нужно сделать следующее:

  1. Зайдите в ваш Firefox, щёлкните на значок настроек (иконка с тремя горизонтальными линиями справа сверху);
  2. Нажмите на кнопку с вопросительным знаком (Справка) в самом низу окна настроек;
  3. Кликните на «Информация для решения проблемы»;
  4. В сведеньях о приложении нажмите на «Показать папку» вашего профиля;
  5. После того как откроется папка вернитесь в браузер, нажмите вновь на значок настроек, а затем нажмите на кнопку «Выход» внизу справа;
  6. В открывшейся ранее папке найдите файл certdb и удалите его.
  7. Вновь запустите ваш Firefox, в процессе запуска файл certdb будет автоматически создан заново.

Как устранить ошибку при переходе на защищенный сайт?

В большинстве случаев пользователь сталкивается с ошибкой при установлении защищенного подключения при переходе на защищенный сайт.

О том, что сайт защищен, пользователю может говорить «https» в адресной строке перед названием самого сайта.

Если вы столкнулись с сообщением «Ошибка при установлении защищенного соединения», то под ним вы сможете увидеть разъяснение причины возникновения проблемы.

Причина 1: Сертификат не будет действителен до даты

При переходе на защищенный веб-сайт Mozilla Firefox в обязательном порядке проверяет у сайта наличие сертификатов, которые позволят быть уверенным в том, что ваши данные будут передаваться только туда, куда они были предназначены.

Как правило, подобного типа ошибка говорит о том, что на вашем компьютере установлены неправильные дата и время.

В данном случае вам потребуется изменить дату и время. Для этого щелкните в правом нижнем углу по иконке даты и в отобразившемся окне выберите пункт «Параметры даты и времени».

На экране отобразится окно, в котором рекомендуется активировать пункт «Установить время автоматически», тогда система самостоятельно установит верные дату и время.

Причина 2: Сертификат истек

Эта ошибка как также может говорить о неправильно установленном времени, так и может являться верным знаком того, что сайт все-таки вовремя не обновил свои сертификаты.

Если дата и время установлены на вашем компьютере, то, вероятно, проблема в сайте, и пока он не обновит сертификаты, доступ к сайту может быть получен только путем добавления в исключения, который описан ближе к концу статьи.

Причина 3: к сертификату нет доверия, так как сертификат его издателя неизвестен

Подобная ошибка может возникнуть в двух случаях: сайту действительно не стоит доверять, или же проблема заключается в файле cert8.db, расположенном в папке профиля Firefox, который был поврежден.

Если вы уверены в безопасности сайта, то, вероятно, проблема все же заключается в поврежденном файле. И чтобы решить проблему, потребуется, чтобы Mozilla Firefox создала новый такой файл, а значит, необходимо удалить старую версию.

Чтобы попасть в папку профиля, щелкните по кнопке меню Firefox и в отобразившемся окне щелкните по иконке со знаком вопроса.

В той же области окна отобразится дополнительное меню, в котором потребуется щелкнуть по пункту «Информация для решения проблем».

В открывшемся окне щелкните по кнопке «Показать папку».

После того, как на экране появится папка профиля, необходимо закрыть Mozilla Firefox. Для этого щелкните по кнопке меню браузера и в отобразившемся окне кликните по кнопке «Выход».

Теперь вернемся к папке профиля. Найдите в ней файл cert8.db, щелкните по нему правой кнопкой мыши и выберите пункт «Удалить».

Как только файл будет удален, можете закрыть папку профиля и снова запустить Firefox.

Причина 4: к сертификату нет доверия, т.к. отсутствует цепочка сертификатов

Подобная ошибка возникает, как привило, из-за антивирусов, в которых активирована функция SSL-сканирования. Перейдите в настройки антивируса и отключите функцию сетевого (SSL) сканирования.

Missing intermediate certificate

On a site with a missing intermediate certificate you will see the following error description after you click on Advanced on the error page:

The certificate is not trusted because the issuer certificate is unknown.The server might not be sending the appropriate intermediate certificates.An additional root certificate may need to be imported.

The website’s certificate might not have been issued by a trusted certificate authority itself and no complete certificate chain to a trusted authority was provided either (a so-called «intermediate certificate» is missing).
You can test if a site is properly configured by entering a website’s address into a third-party tool like SSL Labs’ test page. If it is returning the result «Chain issues: Incomplete», a proper intermediate certificate is missing.
You should contact the owner of the website you’re having troubles accessing to inform them of that problem.

Monitoring/filtering in corporate networks

Some traffic monitoring/filtering products used in corporate environments might intercept encrypted connections by replacing a website’s certificate with their own, at the same time possibly triggering errors on secure HTTPS-sites.

If you suspect this might be the case, please contact your IT department to ensure the correct configuration of Firefox to enable it working properly in such an environment, as the necessary certificate might have to be placed in the Firefox trust store first. More information for IT departments on how to go about this can be found in the Mozilla Wiki page CA:AddRootToFirefox.

Extensions

Basic Constraints

This allows certificates to be asserted as issuing certificates (it is mandatory for CA certificates). It can also be used to express the maximum depth of the trust path from the CA.

Key Usage

This extension is used to constrain the purpose for the key in the certificate. More than one key usage can be asserted. Examples of key usages are: digitalSginature, keyEncipherement, dataEncipherement, keyCertSig, crlSign. For CA certificates the keyCertSign bit MUST be asserted.

Extended Key Usages

This is another bitfield to constrain the usages of the key of the certificate. Its is directed mostly at what type of application the certificate was issued for. Examples of extended key usages are: serverAuth, clientAutn and OCSPSigning. For end-entity certificates for PKI this extension is required to exist with the serverAuth bit asserted.

Name Constraints

This is an extension exclusive for CA and indicates limits on the name space for its children. This is one of the most powerful extensions for businesses to have to help limit risk imposed by losing the private key of the CA.

Authority Information Access

This extension is primarily used to to describe the OCSP location for revocation checking. It is mandatory for certificates that chain up to a root in the Mozilla CA program.

Self Signed Certs

These are the steps to generate a certificate for www.example.com. Replace this value with the actual server name in the steps below.
1. Generate key:

«openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits: 2048»
2048 is considered secure for the next 4 years.

2. Generate csr

«openssl req -new -key key.pem -days 1096 -extensions v3_ca -batch -out example.csr — utf8 -subj ‘/CN=www.example.com’
Make a new Certificate Signing Request (CSR) that will be valid for 3 years.

3. Write extensions file (make a new file with name openssl.ss.cnf with the following contents)

basicConstraints = CA:FALSE
subjectAltName =DNS:www.example.com
extendedKeyUsage =serverAuth

4. Self-sign csr (using SHA256) and append the extensions described in the file

«openssl x509 -req -sha256 -days 3650 -in example.csr -signkey key.pem -set-serial $ANY_INTEGER -extfile openssl.ss.cnf -out example.pem»

You can now use example.pem as your certfile

CAs Included in Firefox

When you visit a secure website, Firefox will validate the website’s certificate by checking that the certificate that signed it is valid, and checking that the certificate that signed the parent certificate is valid and so forth up to a root certificate that is known to be valid. This chain of certificates is called the Certificate Hierarchy.

If your certificates will only be used to verify one domain (e.g. *.yourcompany.com) but you want others outside of your organization to be able to browse to your website using https without having to manually import a root certificate, then you can get an SSL certificate from one of the CAs who already have a root certificate included in the major browsers.

If you are going to have your own CA, we recommend building 3 certificates: a long term root cert, a medium term intermediate cert, and a short term end-entity cert. This type of hierarchy allows for a relatively simple long term root to be distributed to clients, and some flexibility on the intermediate cert so that you can change parameters based on best practices and security research.

HSTS required

Other websites may require (HSTS) and will not allow access with an insecure connection.

Security software conflict

Many security products use a feature that intercepts secure connections by default. This can produce connection errors or warnings on secure websites. If you see secure connection errors on multiple secure websites, updating your security product or modifying its settings may resolve the issue. See for help with specific security products that can produce these errors, such as Avast, AVG and ESET software.

Alternatively, you can uninstall third-party security software and use Windows Defender, the built-in antivirus on Windows 8 and Windows 10.

Incorrect system clock

Firefox uses certificates on secure websites to ensure that your information is being sent to the intended recipient and can’t be read by eavesdroppers. An incorrect system date can cause Firefox to detect that the website’s security certificate is expired or invalid. Make sure your computer is set to the correct date, time and time zone. For more information, see How to troubleshoot time related errors on secure websites.

Other secure connection issues

To troubleshoot other secure connection issues not described above, see:

Certificate Pinning ReportsError code: MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE

Certificate contains the same serial number as another certificateError code: SEC_ERROR_REUSED_ISSUER_AND_SERIAL

Когда возникает ошибка sec_error_unknown_issuer

В нашем случае, использумый пользователем браузер Мозилла пытается проверить идентификатор сайта, дабы убедиться, что это именно тот сайт, который нужен, а не его суррогат. По каким-либо причинам сертификат сайта не может быть проверен, и пользователь получает ошибку с сообщением «Это соединение является недоверенным», «Сертификат издателя неизвестен» и «sec_error_unknown_issuer».

Проблема «Это соединение является недоверенны»

Кстати, если у вас ошибка sec_error_unknown_issuer возникла внезапно и начала происходить на множестве сайтов, проверьте дату и время на своём ПК. Вполне возможно, что вследствие разряда батарейки или по другим причинам данные о дате и времени сбилось, и по этой причине сайты выдают рассматриваемую мной ошибку.

Missing intermediate certificate

On a site with a missing intermediate certificate you will see the following error description after you click on Advanced on the error page:

The certificate is not trusted because the issuer certificate is unknown.The server might not be sending the appropriate intermediate certificates.An additional root certificate may need to be imported.

The website’s certificate might not have been issued by a trusted certificate authority itself and no complete certificate chain to a trusted authority was provided either (a so-called «intermediate certificate» is missing).
You can test if a site is properly configured by entering a website’s address into a third-party tool like SSL Labs’ test page. If it is returning the result «Chain issues: Incomplete», a proper intermediate certificate is missing.
You should contact the owner of the website you’re having troubles accessing to inform them of that problem.

Certificate issued by a authority belonging to Symantec

After a number of irregularities with certificates issued by Symantec root authorities came to light, browser vendors, including Mozilla, are gradually removing trust from these certificates in their products. Firefox will no longer trust server certificates issued by Symantec, including those issued under the GeoTrust, RapidSSL, Thawte and Verisign brands. For more information, see this Mozilla blog post and this compatibility document.

MOZILLA_PKIX_ERROR_ADDITIONAL_POLICY_CONSTRAINT_FAILED will be the primary error, but with some servers, you may see the error code SEC_ERROR_UNKNOWN_ISSUER instead. If you come across such a site you should contact the owner of the website to inform them of the problem.

Mozilla strongly encourages operators of affected sites to take immediate action to replace these certificates. DigiCert is providing certificate replacements for free.

Missing intermediate certificate

On a site with a missing intermediate certificate you will see the following error description after you click on Advanced on the error page:

The certificate is not trusted because the issuer certificate is unknown.The server might not be sending the appropriate intermediate certificates.An additional root certificate may need to be imported.

The website’s certificate might not have been issued by a trusted certificate authority itself and no complete certificate chain to a trusted authority was provided either (a so-called «intermediate certificate» is missing).
You can test if a site is properly configured by entering a website’s address into a third-party tool like SSL Labs’ test page. If it is returning the result «Chain issues: Incomplete», a proper intermediate certificate is missing.
You should contact the owner of the website you’re having troubles accessing to inform them of that problem.

Generate your Intermediate cert

The following steps create an intermediate cert that is valid for 8 years.

  1. Generate key
    • «openssl genpkey -algorithm RSA -out r=intkey.pem -pkeyopt rsa_keygen_bits: 3072»
    • A 3072 bit key is considered secure for the next 8 years.
  2. Generate csr
    • «openssl req -new -key intkey.pem -days 2922 -extensions v3_ca -batch -out int.csr — utf8 -subj ‘/C=US/O=Orgname/OU=SomeInternalName2’
    • Make a new Certificate Signing Request (CSR) that will be valid for 8 years.
  3. Write extensions File (openssl.int.cnf)
    • basicConstraints = critical, CA:TRUE
    • authorityKeyIdentifier = keyid, issuer
    • subjectKeyIdentifier = hash
    • keyUsage = keyCertSign, cRLSign
    • extendedKeyUsage =serverAuth
  4. Sign the intermediate csr with the root key and the intermediate extensions

Certificate issued by a authority belonging to Symantec

After a number of irregularities with certificates issued by Symantec root authorities came to light, browser vendors, including Mozilla, are gradually removing trust from these certificates in their products. Firefox will no longer trust server certificates issued by Symantec, including those issued under the GeoTrust, RapidSSL, Thawte and Verisign brands. For more information, see this Mozilla blog post and this compatibility document.

MOZILLA_PKIX_ERROR_ADDITIONAL_POLICY_CONSTRAINT_FAILED will be the primary error, but with some servers, you may see the error code SEC_ERROR_UNKNOWN_ISSUER instead. If you come across such a site you should contact the owner of the website to inform them of the problem.

Mozilla strongly encourages operators of affected sites to take immediate action to replace these certificates. DigiCert is providing certificate replacements for free.

Обработка Segmentation Fault в C++

Вводная

C++ является «небезопасным» («unmanaged») языком, поэтому программы могут «вылетать» — аварийно завершать работу без сохранения данных пользователя, сообщения об ошибке и т.п. — стоит только, например, залезть в не инициализированную память. Например: void fall() { char * s = «short_text»; sprintf(s,»This is very long text»); } или void fall() { int * pointer = NULL; *pointer = 13; } Всем было бы лучше, если бы мы могли «отловить» падение программы — точно так же, как в java ловим исключения — и выполнить хоть что-то перед тем, как программа упадет (сохранить документ пользователя, вывести диалог с сообщением об ошибке и т.п.) Общего решения задача не имеет, так как C++ не имеет собственной модели обработки исключений, связанных с работой с памятью. Тем не менее, мы рассмотрим два способа, использующих особенности операционной системы, вызвавшей исключение.

Способ 1: SEH

Если Вы используете OS Windows в качестве целевой ОС и Visual C++ в качестве компилятора, то Вы можете использовать Structured Exception Handling — расширение языка С++ от Microsoft, позволяющее отлавливать любые исключения, происходящие в программе. Общий синтаксис обработки исключений выглядит следующим образом:

__try { segfault1(); } __except( condition1 ) { // обработка исключения, если condition1 == EXCEPTION_EXECUTE_HANDLER. // в condition1 может (должен) быть вызов метода, проверяющего // тип исключения, и возвращающего EXCEPTION_EXECUTE_HANDLER // если тип исключения соответствует тому, что мы хотим обработать } __except( condition2 ) { // еще один обработчик } __finally { // то, что выполнится если ни один из обработчиков не почешется }

Вот «работающий пример» — «скопируй и вставь в Visual Studio»

#include #include #include int memento() // обработка Segfault { MessageBoxA(NULL,»Memento Mori»,»Exception catched!»,NULL); return 0; } void fall() // генерация segfault { int* p = 0x00000000; *p = 13; } int main(int argc, char *argv[]) { __try { fall(); } __except (EXCEPTION_EXECUTE_HANDLER) { memento(); } }

Мне лично не удалось заставить заработать __finally (поэтому я и написал __except с кодом проверки, который всегда работает), но это, возможно, кривизна моих рук.

Данная методика, при всей ее привлекательности, имеет ряд минусов:

  • Один компилятор. Одна ОС. Не «чистый С++». Если Вы хотите работать без средств MS — Вы не сможете использовать эту методику
  • Один поток — одна таблица . Если Вы напишете конструкцию из __try… __except, внутри __try запустите другой поток и, не выходя из __try второй поток вызовет segfault, то… ничего не произойдет, программа упадет «как обычно». Потому, что на каждый поток нужно писать отдельный обработчик SEH.

Минусов оказалось настолько много, что приходится искать второе решение.

Способ 2: POSIX — сигналы

Способ рассчитан на то, что в момент падения программа получает POSIX-сообщение SIGSEGV. Это безусловно так

во всех UNIX-системах, но этофактически так (хотя никто не гарантировал, windows — не posix-совместима) и в windows тоже.

Методика простая — мы должны написать обработчик сообщения SIGSEGV, в котором программа совершит «прощальные действия» и, наконец, упадет:

void posix_death_signal(int signum) { memento(); // прощальные действия signal(signum, SIG_DFL); // перепосылка сигнала exit(3); //выход из программы. Если не сделать этого, то обработчик будет вызываться бесконечно. } после чего мы должны зарегистрировать этот обработчик: signal(SIGSEGV, posix_death_signal);

Вот готовый пример:

#include #include #include #include #include int memento() { int a=0; MessageBoxA(NULL,»Memento mori»,»POSIX Signal»,NULL); return 0; } void fall() { int* p = 0x00000000; *p = 13; } void posix_death_signal(int signum) { memento(); signal(signum, SIG_DFL); exit(3); } int main(int argc, char *argv[]) { signal(SIGSEGV, posix_death_signal); fall(); }

В отличие от SEH, это работает всегда: решение «многопоточное» (вы можете уронить программу в любом потоке, обработчик запустится в любом случае) и «кроссплатформенное» — работает под любым компилятором, и под любой POSIX-совместимой ОС.

Как убрать ошибку SEC_ERROR_UNKNOWN_ISSUER

Всё зависит от того, в чем причина возникновения проблемы.

Проблема у одного сайта

Если ошибка вылетает только на одном конкретном сайте, то в этом случае, скорее всего, настоящая причина в сайте, то вам нужно:

Кликнуть на пункт «Дополнительно» и выбрать в появившемся поле «Добавить в исключение»:

Перезагрузите страницу.

Сайт должен загрузиться, браузер больше не будет выдавать сообщение об ошибке с кодом SEC_ERROR_UNKNOWN_ISSUER. Если вы хотите сделать доброе дело, то можете дополнительно написать администратору портала, что у него проблемы с SSL сертификатом – так как всё, что вы сделали, лишь попросили ваш браузер игнорировать проблемы, по-настоящему устранить их может только администратор проекта.

Ошибка SEC_ERROR_UNKNOWN_ISSUER на всех сайтах в браузере FireFox

Если ошибка SEC_ERROR_UNKNOWN_ISSUER вылетает на всех сайтах, то проблема несколько глобальнее, и вышеизложенный метод не поможет её решить. В этом случае нужно найти, что именно создает проблемы с SSL сертификатом. В 99% случаев – это антивирусная программа. Вы можете проверить это, либо отключив её на 1 минуту и зайдя на сайт – проблемы должны пропасть, либо же проверив любую другую утилиту, которая может вмешиваться в работу SSL сертификата.

Для примера решения возьмем популярный антивирус – Касперский. Первый делом вам нужно зайти в настройки (вызвать можно из Поиска, или через трей). Далее зайдите в раздел «Дополнительно», где перейдите в пункт «Сеть»:

В открывшемся окне выберите пункт «Не проверять защищенные соединения», как показано на скриншоте ниже. Но если вам нужны дополнительные настройки, то кликните на кнопку «Дополнительно»:

Если вы не хотите отказываться от проверки сертификатов – это один из важных моментов в безопасности любого ПК, то перейдите во вкладку «Дополнительные», и затем кликните на кнопку «Установить сертификат».

Это переустановит имеющийся сертификат, что в большинстве случаев решит проблему. Если проблема осталась, то перезагрузите компьютер. Вариант с установкой или переустановкой сертификатов антивируса – предпочтительный, так как он не снижает уровень безопасности вашего ПК.

Таким образом вы устраните проблему, и ошибка SEC_ERROR_UNKNOWN_ISSUER из-за антивируса вас более не потревожит.

Missing intermediate certificate

On a site with a missing intermediate certificate you will see the following error description after you click on Advanced on the error page:

The certificate is not trusted because the issuer certificate is unknown.The server might not be sending the appropriate intermediate certificates.An additional root certificate may need to be imported.

The website’s certificate might not have been issued by a trusted certificate authority itself and no complete certificate chain to a trusted authority was provided either (a so-called «intermediate certificate» is missing).
You can test if a site is properly configured by entering a website’s address into a third-party tool like SSL Labs’ test page. If it is returning the result «Chain issues: Incomplete», a proper intermediate certificate is missing.
You should contact the owner of the website you’re having troubles accessing to inform them of that problem.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации