Firefox和SSL:sec_error_unknown_issuer

时间:2008-11-09 12:37:49

标签: firefox ssl

使用Firefox访问https://mediant.ipmail.nl时,我的客户端收到sec_error_unknown_issuer错误消息。 我自己无法重现错误。我在Vista和XP机器上安装了FF,没有任何问题。 Ubuntu上的FF也可以正常工作。

有没有人得到同样的错误,有没有人为我提供一些线索,所以我可以告诉我的ISP更改一些设置? 证书是一种所谓的通配符SSL证书,适用于所有子域(* .ipmail.nl)。选择最便宜的那个我错了吗?

14 个答案:

答案 0 :(得分:41)

Comodo通配符SSL证书遇到了同样的问题。阅读文档后,解决方案是确保您在配置中包含他们发送给您的证书链文件,即

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

Comodo site

的完整详情

答案 1 :(得分:12)

我们遇到了这个问题,而且非常具有Firefox特效 - 只能在浏览器中重复,Safari,IE8,Chrome等都可以。

修复它需要从Comodo获取更新的证书并安装它。

不知道他们改变了什么魔法,但它绝对是Firefox不喜欢的证书中的东西。

答案 2 :(得分:6)

Firefox比其他浏览器更严格,需要正确安装中间服务器证书。这可以由购买证书的证书颁发机构提供。中间证书通常安装在与服务器证书相同的位置,并且需要在httpd.conf文件中正确输入。

虽然许多人正在惩罚Firefox,因为它(通常)独家“标记”了这一点,但它实际上证明了更高级别的安全标准。

答案 3 :(得分:6)

对于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;
    ...
}

答案 4 :(得分:3)

我知道这个帖子有点陈旧但我们也遇到了这个问题,并将这里的最终解决方案归档给其他人。

我们遇到了与Comodo通配符“肯定ssl”证书相同的问题。 我们使用squid-reverse SSL代理运行我们的网站,Firefox会像你说的那样抱怨“sec_error_unknown_issuer”,但其他所有浏览器都没问题。

我发现这是证书链不完整的问题。虽然Firefox确实信任根CA,但Firefox显然没有内置的中间证书之一。因此,您必须向Firefox提供整个证书链。 Comodo的支持指出:

  

中间证书就是   在您的站点(服务器)之间的证书或证书   证书和根证书。中间证书,或   证书,完成链条到受信任的根证书   浏览器。

     

使用中间证书意味着您必须完成   安装过程中的其他步骤以启用您的站点   证书要链接到受信任的根目录,而不是显示错误   有人访问您的网站时的浏览器。

这个帖子早些时候已经触及了这个问题,但是它并没有改变你这样做的方式。

首先,您必须制作一个链式证书包,然后使用您喜欢的文本编辑器并按正确(反向)顺序粘贴它们即可。

  • 中级CA证书2 - IntermediateCA2.crt - 在...之上 档案
  • 中级CA证书1 - IntermediateCA1.crt
  • 根CA证书 - root.crt - 位于文件末尾

如果从名称中不明显,您可以从ssl提供商那里获得确切的顺序。

然后将文件保存为您喜欢的任何名称。例如。 YOURDOMAIN链bundle.crt

在此示例中,我没有包含实际的域证书,只要您的服务器可以配置为使用单独的链式证书包,这就是您使用的。

可在此处找到更多数据:

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

如果由于某种原因您无法将服务器配置为使用单独的链式捆绑包,则只需将服务器证书粘贴到捆绑包的开头(顶部),然后将生成的文件用作服务器证书。这是E.gquid案件中需要做的事情。请参阅下面关于此主题的squid邮件列表。

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

这为我们解决了。

答案 5 :(得分:2)

您的客户使用哪个版本的Firefox?

人们遇到与记录here in the Support Forum for Firefox相同的问题。我希望你能在那里找到解决方案。祝你好运!

更新

让您的客户端检查Firefox中的设置:在“高级” - “加密”上有一个“查看证书”按钮。 在列表中查找“Comodo CA Limited”。我看到Comodo是该域名/服务器证书的发行者。在我的两台机器上(Vista和Mac上的FF 3.0.3),该条目在列表中(默认情况下为/ Mozilla)。

alt text

答案 6 :(得分:2)

我在Firefox和我的服务器上遇到过这个问题。我联系了GoDaddy的客户支持,他们让我安装了中间服务器证书:

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

重新启动万维网发布服务后,一切都运行良好。

如果您无法完全访问您的服务器,则您的ISP必须为您执行此操作。

答案 7 :(得分:1)

正如@ user126810所说,问题可以通过配置文件中的正确SSLCertificateChainFile指令来解决。

但是在修复配置并重新启动网络服务器之后,我还必须重新启动Firefox 。没有它,Firefox继续抱怨证书不好(看起来像是使用了缓存证书)。

答案 8 :(得分:1)

如果您从COMODO获得了证书,则需要添加 这一行,该文件位于您收到的zip文件中。

SSLCertificateChainFile /path/COMODORSADomainValidationSecureServerCA.crt

答案 9 :(得分:1)

2014年6月:

这是我使用的配置,它在我的头撞墙几天后工作正常。我使用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 | grep“^”

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/

答案 10 :(得分:0)

如果其他人遇到Ubuntu LAMP和&#34; COMODO Positive SSL&#34;尝试从压缩文件中的证书构建自己的包。

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

答案 11 :(得分:0)

我正在围绕着Firefox 43,El Capitan和WHM / cPanel SSL安装不断获取不受信任的网站错误 - 我没有购买它作为最后一个人走路安装给我的证书出门。事实证明我在错误的域下安装,因为我错过了www - 但是证书仍然安装在域名上,当我使用www.domain.com.au安装WHM中的证书时,它现在安装担心并且FF错误消失了 - 证书适用于www和非www。

答案 12 :(得分:0)

要回答问题的不可重现性方面 - Firefox会自动将中间证书导入其证书存储区。因此,如果您之前访问过使用正确配置的证书链使用相同中间证书的站点,那么Firefox将存储该证书,这样当您访问使用错误配置链的站点时,您将看不到问题相同的中级证书。

您可以在Firefox的证书管理器(选项 - >隐私和安全 - >查看证书...)中查看此信息,您可以在其中查看所有存储的证书。在&#39;安全设备&#39;您可以检查证书来自何处的列 - 自动/手动导入的证书将显示为来自“软件安全设备”的软件。而不是“内置对象令牌”,这是与Firefox一起安装的默认设置。您可以删除/不信任任何特定证书并再次测试。

答案 13 :(得分:0)

本周末有同样的问题,只有Firefox将不接受证书...对我来说,解决方案是在网站的apache配置中添加带有以下行的中间证书:

SSLCACertificateFile /your/path/to/ssl_ca_certs.pem

查找有关https://httpd.apache.org/docs/2.4/fr/mod/mod_ssl.html

的更多信息