Firefox и SSL: sec_error_unknown_issuer

Мой клиент получает сообщение об ошибке sec_error_unknown_issuer при посещении https://mediant.ipmail.nl с помощью Firefox. У себя не могу воспроизвести ошибку. Я установил FF на машины с Vista и XP, и проблем не было. FF на Ubuntu тоже работает нормально.

Кто-нибудь получает ту же ошибку, и у кого-нибудь есть какие-то подсказки для меня, чтобы я мог сказать моему провайдеру изменить некоторые настройки? Сертификат представляет собой так называемый wild-card SSL-сертификат, который работает для всех субдоменов (*.ipmail.nl). Я ошибся, выбрав самый дешевый?


person Overbeeke    schedule 09.11.2008    source источник


Ответы (14)


У меня была такая же проблема с SSL-сертификатом Comodo Wildcard. После прочтения документов решение состоит в том, чтобы убедиться, что вы включили файл цепочки сертификатов, который они отправляют вам, в вашу конфигурацию, т.е.

SSLCertificateChainFile /etc/ssl/crt/yourSERVERNAME.ca-bundle

Полная информация на сайте Comodo

person user126810    schedule 22.06.2009
comment
Спасибо. Для использования lighttpd: ssl.engine = "enable" ssl.pemfile = "/etc/ssl/certs/cert.pem" ssl.ca-file = "/etc/ssl/certs/YourSSLCertAuthorityCA.crt" - person pista329; 28.11.2011
comment
Вы можете скачать файл цепочки сертификатов Comodo здесь: support.comodo.com/ Установка для nginx: wiki.nginx.org/HttpSslModule (по сути, просто добавьте то, что вы загружаете, к существующему файлу сертификата) - person Sych; 04.02.2014
comment
Ранее я следовал методике, описанной в этой статье, но оказалось, что параметр ca сервера TLS/HTTPS должен быть массивом. Более того, вы не можете просто передать ему массив, содержащий файл цепочки в виде строки/буфера (т.е. [fs.readFileSync(/path/to/mydomain.ca-bundle)]), поскольку модуль Node TLS читает только первый сертификат в каждой записи этого массива. - person lito; 15.06.2014

У нас была эта проблема, и она была очень специфична для Firefox — могла воспроизводиться только в этом браузере, Safari, IE8, Chrome и т. д. — все было в порядке.

Для исправления требовалось получить обновленный сертификат от Comodo и установить его.

Понятия не имею, какую магию они изменили, но это определенно было что-то в сертификате, что НЕ понравилось Firefox.

person Jeff Atwood    schedule 28.10.2009

Для nginx сделайте это. Создайте связанный файл crt, используя

$ cat www.example.com.crt bundle.crt > www.example.com.chained.crt

Полученный файл следует использовать в директиве ssl_certificate:

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.chained.crt;
    ssl_certificate_key www.example.com.key;
    ...
}
person Cc65    schedule 28.11.2013

Firefox более строг, чем другие браузеры, и потребует правильной установки сертификата промежуточного сервера. Это может быть предоставлено центром сертификации, у которого был приобретен сертификат. промежуточный сертификат обычно устанавливается в том же месте, что и сертификат сервера, и требует соответствующей записи в файле httpd.conf.

в то время как многие ругают Firefox за то, что он (как правило) эксклюзивно «помечает» это, на самом деле он демонстрирует более высокий уровень стандартов безопасности.

person Jason Clark    schedule 12.12.2009
comment
-1 Это абсолютно не так. Прочтите собственное описание Mozilla: wiki.mozilla.org/Incomplete_Certificate_Chain. Отсутствующий сертификат иногда работает (как сталкивался с OP), потому что они кэшируют промежуточные ЦС, которые они находят в дикой природе. Таким образом, мой сайт будет работать в Chrome с отсутствующим промежуточным сертификатом, если пользователь уже посещал другой сайт, использующий тот же сертификат. - person Mark E. Haase; 10.05.2013
comment
ссылка предыдущего комментария на mozilla.org теперь 404; вместо этого см. соответствующий раздел: wiki.mozilla.org/Necko/Differences : Другие браузеры иметь более надежную обработку цепочки сертификатов; наш путается в некоторых распространенных ситуациях. - person michael; 29.05.2015

Я знаю, что эта ветка немного устарела, но мы тоже столкнулись с этим и заархивируем наше возможное решение здесь для других.

У нас была такая же проблема с подстановочным знаком Comodo «положительный ssl» сертификат. Мы запускаем наш веб-сайт с использованием обратного SSL-прокси-сервера squid, и Firefox будет продолжать жаловаться на «sec_error_unknown_issuer», как вы сказали, но все остальные браузеры были в порядке.

Я обнаружил, что это проблема неполной цепочки сертификатов. Firefox, по-видимому, не имеет встроенного промежуточного сертификата, хотя Firefox доверяет корневому ЦС. Поэтому вы должны предоставить всю цепочку сертификатов Firefox. Служба поддержки Comodo заявляет:

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

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

Это уже упоминалось ранее в этой теме, но не было указано, как это сделать.

Сначала вам нужно создать цепочку сертификатов, и вы делаете это с помощью своего любимого текстового редактора и просто вставляете их в правильном (обратном) порядке, т.е.

  • Промежуточный сертификат ЦС 2 — IntermediateCA2.crt — поверх файла
  • Сертификат промежуточного ЦС 1 — IntermediateCA1.crt
  • Сертификат корневого ЦС — root.crt — в конце файла

Точный порядок вы можете получить у своего провайдера ssl, если это не очевидно из имен.

Затем сохраните файл под любым именем, которое вам нравится. Например. yourdomain-chain-bundle.crt

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

Больше данных можно найти здесь:

https://support.comodo.com/index.php?/Knowledgebase/Article/View/643/0/how-do-i-make-my-own-bundle-file-from-crt-файлы

Если по какой-то причине вы не можете настроить свой сервер для использования отдельного связанного пакета, вы просто вставляете свой сертификат сервера в начало (сверху) пакета и используете полученный файл в качестве сертификата сервера. Это то, что нужно сделать, например, в случае Squid. См. ниже список рассылки squid по этому вопросу.

http://www.squid-cache.org/mail-archive/squid-users/201109/0037.html

Это решило это для нас.

person leancode    schedule 14.06.2014

У меня была эта проблема с Firefox и моим сервером. Я связался со службой поддержки GoDaddy, и они попросили меня установить сертификат промежуточного сервера:

http://support.godaddy.com/help/article/868/what-is-an-intermediate-certificate

После перезапуска службы публикации в World Wide Web все заработало отлично.

Если у вас нет полного доступа к вашему серверу, ваш интернет-провайдер должен будет сделать это за вас.

person toddb    schedule 03.12.2009
comment
У меня была такая же проблема с SSL-сертификатом GoDaddy, установленным на сервере IIS6. Мне эта процедура помогла. - person Costo; 31.01.2011


Как сказал @user126810, проблему можно решить с помощью правильной директивы SSLCertificateChainFile в файле конфигурации.

Но после исправления конфигурации и перезапуска веб-сервера мне также пришлось перезапустить Firefox. Без этого Firefox продолжал жаловаться на плохой сертификат (похоже, он использовал кешированный).

person vadipp    schedule 06.02.2013

Если вы получили сертификат от COMODO, вам нужно добавить эту строку, файл находится в полученном вами zip-файле.

SSLCertificateChainFile /path/COMODORSADomainValidationSecureServerCA.crt
person Steven Lizarazo    schedule 15.05.2014

июнь 2014 г.:

Это конфигурация, которую я использовал, и она отлично работает после того, как я несколько дней бился головой о стену. Я использую Express 3.4 (думаю, то же самое для Express 4.0)

var privateKey  = fs.readFileSync('helpers/sslcert/key.pem', 'utf8');
var certificate = fs.readFileSync('helpers/sslcert/csr.pem', 'utf8');

files = ["COMODORSADomainValidationSecureServerCA.crt",
         "COMODORSAAddTrustCA.crt",
         "AddTrustExternalCARoot.crt"
        ];

ca = (function() {
  var _i, _len, _results;

  _results = [];
  for (_i = 0, _len = files.length; _i < _len; _i++) {
    file = files[_i];
    _results.push(fs.readFileSync("helpers/sslcert/" + file));
  }
  return _results;
})();

var credentials = {ca:ca, key: privateKey, cert: certificate};

// process.env.PORT : Heroku Config environment
var port = process.env.PORT || 4000;

var app = express();
var server = http.createServer(app).listen(port, function() {
        console.log('Express HTTP server listening on port ' + server.address().port);
});
https.createServer(credentials, app).listen(3000, function() {
        console.log('Express HTTPS server listening on port ' + server.address().port);
});

// redirect all http requests to https
app.use(function(req, res, next) {
  if(!req.secure) {
    return res.redirect(['https://mydomain.com', req.url].join(''));
  }
  next();
});

Затем я перенаправил 80 и 443 порты:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 4000
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3000

Как вы можете видеть после проверки моих сертификатов, у меня есть 4 [0,1,2,3]:

openssl s_client -connect mydomain.com:443 -showcerts | грэп "^"

ubuntu@ip-172-31-5-134:~$ openssl s_client -connect mydomain.com:443 -showcerts | grep "^ "
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify error:num=19:self signed certificate in certificate chain
verify return:0
 0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=mydomain.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
 2 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
 3 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
    Protocol  : TLSv1.1
    Cipher    : AES256-SHA
    Session-ID: 8FDEAEE92ED20742.....3E7D80F93226142DD
    Session-ID-ctx:
    Master-Key: C9E4AB966E41A85EEB7....4D73C67088E1503C52A9353C8584E94
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 7c c8 36 80 95 4d 4c 47-d8 e3 ca 2e 70 a5 8f ac   |.6..MLG....p...
    0010 - 90 bd 4a 26 ef f7 d6 bc-4a b3 dd 8f f6 13 53 e9   ..J&..........S.
    0020 - f7 49 c6 48 44 26 8d ab-a8 72 29 c8 15 73 f5 79   .I.HD&.......s.y
    0030 - ca 79 6a ed f6 b1 7f 8a-d2 68 0a 52 03 c5 84 32   .yj........R...2
    0040 - be c5 c8 12 d8 f4 36 fa-28 4f 0e 00 eb d1 04 ce   ........(.......
    0050 - a7 2b d2 73 df a1 8b 83-23 a6 f7 ef 6e 9e c4 4c   .+.s...........L
    0060 - 50 22 60 e8 93 cc d8 ee-42 22 56 a7 10 7b db 1e   P"`.....B.V..{..
    0070 - 0a ad 4a 91 a4 68 7a b0-9e 34 01 ec b8 7b b2 2f   ..J......4...{./
    0080 - e8 33 f5 a9 48 11 36 f8-69 a6 7a a6 22 52 b1 da   .3..H...i....R..
    0090 - 51 18 ed c4 d9 3d c4 cc-5b d7 ff 92 4e 91 02 9e   .....=......N...
    Start Time: 140...549
    Timeout   : 300 (sec)
    Verify return code: 19 (self signed certificate in certificate chain)

Удачи! PD: если вам нужны дополнительные ответы, проверьте: http://www.benjiegillam.com/2012/06/node-dot-js-ssl-certificate-chain/

person lito    schedule 15.06.2014
comment
Кроме того, если вы проверяете сертификат из коробки, на которой размещено более одного сайта TLS с использованием указания имени сервера (SNI), вам необходимо включить аргумент SNI openssl: -servername mydomain.com - person Pierz; 04.06.2018

Если кто-то еще испытывает эту проблему с Ubuntu LAMP и «COMODO Positive SSL», попробуйте создать свой собственный пакет из сертификатов в сжатом файле.

cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > YOURDOMAIN.ca-bundle

person chmoder    schedule 31.01.2015

Я хожу по кругу с установкой Firefox 43, El Capitan и WHM/cPanel SSL, постоянно получая ошибку «Ненадежный сайт» — я не покупал сертификат, который мне передали для установки, когда последний парень вышел за дверь . Оказывается, я устанавливал не под тем доменом, потому что пропустил www, но сертификат все еще был установлен для домена, когда я установил сертификат в WHM, используя www.domain.com.au, он установил, теперь беспокоит, и ошибка FF исчезла. - сертификат отлично работает как для www, так и для не-www.

person Rob    schedule 13.01.2016

Чтобы ответить на аспект вопроса о невоспроизводимости, Firefox автоматически импортирует промежуточные сертификаты в свое хранилище сертификатов. Таким образом, если вы ранее посещали сайт, который использовал тот же промежуточный сертификат, используя правильно настроенную цепочку сертификатов, то Firefox сохранит этот сертификат, поэтому вы не увидите проблемы при посещении сайта, который имеет неправильно настроенную цепочку, использующую тот же промежуточный сертификат. сертификат.

Вы можете проверить это в Диспетчере сертификатов Firefox (Параметры-> Конфиденциальность и безопасность-> Просмотр сертификатов...), где вы можете увидеть все сохраненные сертификаты. В столбце «Устройство безопасности» вы можете проверить, откуда был получен сертификат — автоматически/вручную импортированные сертификаты будут отображаться как из «Устройства безопасности программного обеспечения», а не как «Встроенный токен объекта», который устанавливается по умолчанию в Firefox. Вы можете удалить/не доверять любым конкретным сертификатам и протестировать снова.

person Pierz    schedule 04.06.2018

В конце недели была такая же проблема, только Firefox не принимает сертификат... Решением для меня было добавить в конфигурацию apache веб-сайта промежуточный сертификат со следующей строкой:

SSLCACertificateFile /your/path/to/ssl_ca_certs.pem

Дополнительную информацию см. на https://httpd.apache.org/docs/2.4/fr/mod/mod_ssl.html

person Meloman    schedule 16.09.2019