【问题标题】:Firefox and SSL: sec_error_unknown_issuerFirefox 和 SSL:sec_error_unknown_issuer
【发布时间】:2010-09-21 12:16:26
【问题描述】:

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

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

【问题讨论】:

    标签: firefox ssl


    【解决方案1】:

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

    SSLCACertificateFile /your/path/to/ssl_ca_certs.pem
    

    https://httpd.apache.org/docs/2.4/fr/mod/mod_ssl.html上查找更多信息

    【讨论】:

      【解决方案2】:

      您的客户端在哪个平台上使用哪个版本的 Firefox?

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

      更新:

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

      【讨论】:

      • windows xp 上的最新 3.03。
      • 插入列表是什么意思?这是否意味着它是 mozilla 提供的默认列表,或者您是否在某个时候接受了 Comodo 的证书并将其添加到列表中?
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我一直在使用 Firefox 43、El Capitan 和 WHM/cPanel SSL 安装不断地收到不受信任的站点错误 - 我没有购买它交给我安装的证书,因为最后一个人走了出了门。原来我安装在错误的域下,因为我错过了 www - 但是证书仍然安装在域上,当我使用 www.domain.com.au 在 WHM 中安装证书时,它现在安装担心并且 FF 错误已经消失- 该证书适用于 www 和非 www。

        【讨论】:

          【解决方案5】:

          如果其他人在使用 Ubuntu LAMP 和“COMODO Positive SSL”时遇到此问题,请尝试从压缩文件中的证书构建您自己的捆绑包。

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

          【讨论】:

            【解决方案6】:

            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/

            【讨论】:

            • 此外,如果您使用服务器名称指示 (SNI) 从托管多个 TLS 站点的框中检查证书,则需要包含 SNI openssl 参数:-servername mydomain.com跨度>
            【解决方案7】:

            我知道这个帖子有点老了,但我们也遇到了这个问题,并将在此处存档我们的最终解决方案以供其他人使用。

            我们在使用 Comodo 通配符“正 ssl”证书时遇到了同样的问题。 我们正在使用 squid-reverse SSL 代理运行我们的网站,Firefox 会一直抱怨“sec_error_unknown_issuer”,如您所说,但其他所有浏览器都正常。

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

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

            使用中级证书意味着您必须完成一个 安装过程中的附加步骤以启用您的站点 证书链接到受信任的根,并且不显示错误 有人访问您的网站时的浏览器。

            这已经在这个线程的前面提到过,但它并没有解决你如何做到这一点。

            首先,您必须制作一个链式证书包,然后使用您最喜欢的文本编辑器完成此操作,然后按照正确(反向)顺序将它们粘贴进去,即

            • 中间 CA 证书 2 - IntermediateCA2.crt - 在顶部 文件
            • 中间 CA 证书 1 - IntermediateCA1.crt
            • 根 CA 证书 - 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-files

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

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

            这为我们解决了问题。

            【讨论】:

              【解决方案8】:

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

              SSLCertificateChainFile /path/COMODORSADomainValidationSecureServerCA.crt
              

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                  【解决方案10】:

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

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

                  重新启动万维网发布服务后,一切正常。

                  如果您没有对服务器的完全访问权限,您的 ISP 将不得不为您执行此操作。

                  【讨论】:

                  • 我在安装在 IIS6 服务器上的 GoDaddy SSL 证书时遇到了同样的问题。这个过程对我有用。
                  【解决方案11】:

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

                  但在修复配置并重新启动网络服务器后,我还必须重新启动 Firefox。否则,Firefox 继续抱怨证书错误(看起来它使用了缓存的证书)。

                  【讨论】:

                    【解决方案12】:

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

                    虽然许多人批评 Firefox 是(通常)独家“标记”这一点,但它实际上展示了更高级别的安全标准。

                    【讨论】:

                    • -1 绝对不是这样。请阅读 Mozilla 自己的描述:wiki.mozilla.org/Incomplete_Certificate_Chain。丢失的证书有时会起作用(正如 OP 所经历的那样),因为它们缓存了在野外找到的中间 CA。因此,如果用户已经访问过另一个使用提供相同证书的网站,我的网站将在缺少中间证书的情况下在 Chrome 中运行。
                    • previous comment mozilla.org 链接现在是 404;相反,请参阅相关:wiki.mozilla.org/Necko/Differences“其他浏览器具有更强大的证书链处理能力;我们的浏览器在某些常见情况下会感到困惑。”
                    【解决方案13】:

                    我们遇到了这个问题,它是 Firefox 特有的——只能在那个浏览器中重现,Safari、IE8、Chrome 等都很好。

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

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

                    【讨论】:

                      【解决方案14】:

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

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

                      Comodo site 的详细信息

                      【讨论】:

                      • 谢谢。对于 lighttpd 使用:ssl.engine = "enable" ssl.pemfile = "/etc/ssl/certs/cert.pem" ssl.ca-file = "/etc/ssl/certs/YourSSLCertAuthorityCA.crt"
                      • 您可以在此处下载 Comodo 证书链文件:support.comodo.com/… 为 nginx 安装:wiki.nginx.org/HttpSslModule(基本上,只需将您下载的内容附加到现有证书文件中)
                      • 之前按照这篇文章的技巧,结果发现TLS/HTTPS服务器的ca参数应该是一个数组。不仅如此,您不能只为它提供一个包含您的链文件作为字符串/缓冲区的数组(即 [fs.readFileSync("/path/to/mydomain.ca-bundle")]),因为 Node TLS 模块只读取此数组的每个条目中的第一个证书。
                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-01-17
                      • 2013-10-19
                      • 2021-09-09
                      • 1970-01-01
                      相关资源
                      最近更新 更多