Mar*_*her 18 trust ssl firefox certificate keychain
我有一个本地域(markfisher.local),我为其制作了自签名证书,并将其添加到钥匙串访问中的证书中(我使用的是 Mac)。这会导致该证书在 Chrome 和 Safari 中受到信任。如果我将 KeyChain Access 中的证书信任编辑为“从不信任”,则 Chrome 和 Safari 不再接受它,然后如果我将其改回“始终信任”,则我可以再次访问 markfisher.local。
但是当我在 Firefox 中访问该网站时,我得到以下信息:
markfisher.local 使用无效的安全证书。该证书不是来自受信任的来源。错误代码:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY
我已按照此答案中的建议security.enterprise_roots.enabled设置为。另外,转到“首选项”>“隐私和安全”>“查看证书”,我可以看到我的证书位于“权限”选项卡中,并且我已在“编辑信任”对话框中选中“此证书可以识别网站”。原来没有检查这个true
但是 Firefox 拒绝接受该证书。我怎样才能解决这个问题?
tor*_*tte 12
这个答案是对Patrick Mevzek 答案的扩展。去引用:
\n\n\n请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1034124和\n具体答案:
\n\n\n看起来该证书有一个带有 \n 的 basicConstraints 扩展
\nvalue cA: TRUE。我们停止允许 CA 证书充当\n最终实体证书。应重新生成该证书\n而不带basicConstraints扩展名。这也在https://wiki.mozilla.org/SecurityEngineering/x509Certs中进行了解释
\n\n\n错误代码:
\nMOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY含义:具有基本约束扩展的证书
\ncA:TRUE被用作最终实体证书我能做什么:重新生成不带基本约束扩展的最终实体证书
\n
简而言之,要在 Firefox 中使用自签名 SSL 证书(例如,用于测试 HTTPS),您必须走很长的路来创建和使用您自己的公钥基础设施 (PKI):
\n通过创建私钥和自签名证书:
\nopenssl req -x509 -nodes \\\n -newkey RSA:2048 \\\n -keyout root-ca.key \\\n -days 365 \\\n -out root-ca.crt \\\n -subj \'/C=US/ST=Denial/L=Earth/O=Atest/CN=root_CA_for_firefox\'\nRun Code Online (Sandbox Code Playgroud)\n生成的文件:
\nroot-ca.key:您的 CA 的私钥root-ca.crt:您的 CA 的 x509 证书(使用 签名root-ca.key)。openssl req -nodes \\\n -newkey rsa:2048 \\\n -keyout server.key \\\n -out server.csr \\\n -subj \'/C=US/ST=Denial/L=Earth/O=Dis/CN=anything_but_whitespace\'\nRun Code Online (Sandbox Code Playgroud)\n生成的文件:
\nserver.key:私钥server.csr:证书签名请求;没有指定任何域名。\n\n注意
\n
\n请确保在以下部分使用正确的域名subjectAltName = DNS:<domain>!
openssl x509 -req \\\n -CA root-ca.crt \\\n -CAkey root-ca.key \\\n -in server.csr \\\n -out server.crt \\\n -days 365 \\\n -CAcreateserial \\\n -extfile <(printf "subjectAltName = DNS:localhost\\nauthorityKeyIdentifier = keyid,issuer\\nbasicConstraints = CA:FALSE\\nkeyUsage = digitalSignature, keyEncipherment\\nextendedKeyUsage=serverAuth")\nRun Code Online (Sandbox Code Playgroud)\n这<(..)部分在 Bash 中称为进程替换。如果您使用没有此功能的其他 shell,则只需将文本放在文件中的双引号内,用换行符替换“\\n”,然后指定文件代替-extfile.
生成的文件:
\nroot-ca.srl: 我一般都会忽略server.crt:要在您的服务器上使用的证书root-ca.crt到 Firefox 的信任存储区通过执行以下步骤。
\n\n\n注意
\n
\n正如 @sstchur 在评论中指出的那样,如果选项\n
\n- \n
security.certerrors.mitm.auto_enable_enterprise_roots和- \n
security.enterprise_roots.enabled被设置为
\ntrue. (有关详细信息,请参阅 Mozilla 支持文章如何禁用 Enterprise Roots 首选项
。) \n(子注:我还没有时间在实践中测试这些!)
您将需要server.key和server.crt。具体步骤取决于技术。
虽然下面的一行代码在 Chrome 和 Safari 中都适用,
\n(也就是说,人们可以使用创建的证书作为根 CA 证书(安装在系统的信任存储中)和 Web 服务器的证书(例如,在 NGINX 中ssl_certificate)。)
openssl req -x509 -new -nodes \\\n -newkey RSA:2048 \\\n -days 365 \\\n -subj \'/C=US/ST=Denial/L=Springfield/O=Dis/CN=anything_but_whitespace\' \\\n -addext \'subjectAltName = DNS:doma.in,DNS:anoth.er\' \\\n -addext \'authorityKeyIdentifier = keyid,issuer\' \\\n -addext \'basicConstraints = CA:FALSE\' \\\n -addext \'keyUsage = digitalSignature, keyEncipherment\' \\\n -addext \'extendedKeyUsage=serverAuth\' \\\n -out self-signed.crt \\\n -keyout private.key\nRun Code Online (Sandbox Code Playgroud)\n在 Firefox 中不会,因为:
\n您无法安装self-signed.crt在 Firefox 的信任存储中,因为它明确声明该证书不是证书颁发机构 ( CA:FALSE)。
如果你把上面命令中的CA:FALSE改为怎么办?CA:TRUE
Chrome 和 Safari 仍然会接受它,您可以安装self-signed.crt到 Firefox 的信任存储中,但由于本答案顶部引用的原因,它无法从服务器端工作。
如果直接删除该-addext \'basicConstraints = CA:FALSE选项会怎样?
Firefox 在尝试导入self-signed.crt其信任存储时会抱怨:
(可能是因为 x509 v3 扩展添加了-addext。)
如果省略所有 x509 v3 扩展(即-addext选项)怎么办?
openssl req -x509 -new -nodes \\\n -newkey RSA:2048 \\\n -days 365 \\\n -subj \'/C=US/ST=Denial/L=Springfield/O=Dis/CN=anything_but_whitespace\' \\\n -out self-signed.crt \\\n -keyout private.key\nRun Code Online (Sandbox Code Playgroud)\n现在你可以导入self-signed.crt到 Firefox 的信任存储中,但你会得到SSL_ERROR_BAD_CERT_DOMAIN(并且你会在 Chrome 和 Safari 中得到类似的错误,因为它们需要subjectAltName扩展出现在服务器端的证书上)。
将命令更改为 contains 怎么样CN=<your domain>?
您可能仍然会遇到与“ Firefox 从 101.0 开始不再使用证书 CN(通用名称)来将域名与证书匹配,并已迁移到仅使用 SAN(主题备用名称)”相同的错误 ”相同的错误。
\n这意味着您必须至少添加subjectAltNamex509 v3 扩展,但随后您又回到了上面的第 1、2 或 3 项。
请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1034124特别是这个答案:
看起来该证书有一个 basicConstraints 扩展,其值为 cA: TRUE。我们停止允许 CA 证书充当最终实体证书。该证书应该在没有 basicConstraints 扩展的情况下重新生成。
https://wiki.mozilla.org/SecurityEngineering/x509Certs也对此进行了解释
错误代码:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY
含义:带有 cA:TRUE 基本约束扩展的证书被用作最终实体证书
我能做什么:重新生成不带基本约束扩展的最终实体证书
| 归档时间: |
|
| 查看次数: |
28272 次 |
| 最近记录: |