- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我已经使用以下方法制作了我的证书和 key
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
并在我的 Golang 代码中配置它
log.Fatal(http.ListenAndServeTLS(":4201", "cert.pem", "key.pem", router))
在使用 chrome 访问时运行良好,但在使用 firefox 访问时在控制台上抛出错误。
2018/03/02 16:54:11 http: TLS handshake error from 100.67.56.121:54397: remote error: tls: unknown certificate authority
我该如何解决这个问题?
最佳答案
“远程错误”是指从客户端(在本例中为 firefox)发送的错误。
解决办法是弄清楚为什么 firefox 不喜欢证书并修复它。
firefox 不喜欢证书的某些方面。打开 firefox 开发工具,看看是否可以找到关于证书的任何警告。如果您必须在 Firefox 中手动接受证书,那么 Firefox 可能仍然向服务器报告它不喜欢该证书,即使您已告诉 firefox 无论如何加载页面(请参阅下面的 chrome 示例)。
然而,由于这是一个自生成/签名的证书,所以警告可能是因为 firefox 不信任该证书。如果此服务器仅供您个人使用,解决方案是将此证书添加到 firefox 的受信任证书中……或者获取由商业 CA 或 letsencrypt 签名的证书。
“修复此服务器端”意味着修复有关您的证书/应用程序的服务方式的任何内容,以使其受到 Firefox 的信任。或者,如果您只是在进行开发,我想忽略这些错误。
更多详情...
这里的关键是这是一个“远程错误”,意思是它是来自连接到您的服务器的 tls 客户端的错误。在您的情况下,Firefox 在 TLS 握手期间提示证书在某种程度上无效。
我注意到 chrome 也有同样的问题。证书由公共(public) CA(即大多数浏览器应信任的 CA)签署,但当我在本地计算机上开发时,证书无效,因为主机名 (localhost) 与证书 CommonName (CN) 或主题不匹配备用名称 (SAN)。
最简单的事情就是在 wireshark 中查看 TLS 握手。
我告诉 chrome 接受证书,开始捕获并对页面进行单次刷新(在本例中为 https://localhost:8081)。 Chrome 不会向我显示警告页面并显示内容。但是地址栏中有一个红色警告。
有趣的是(对我而言)似乎有两次 TLS 握手(我不是 TLS 专家)。
客户你好服务器你好警报(客户端错误)客户您好服务器你好客户端完成握手...加密的应用程序数据...
由于 chrome 不会中断我的页面刷新,我不确定为什么 chrome 会为单个页面刷新进行两次握手(第一次出现警报/失败)。
我在这里学到的有趣的一点(事后看来很明显)是当浏览器/客户端拒绝您的证书时,可以从他们那里获得报告。这可以在服务器端使用(如果被监控)来发现生产中你的测试用例可能没有涵盖的细微证书错误配置。不幸的是,因为这是 pre-http 你不会得到用户代理或任何有用的东西来帮助重现....但是大量的这些错误作为服务器流量的百分比表明你需要做一些严重的跨浏览器/操作系统/设备测试
关于firefox - Golang https证书错误: remote error: tls: unknown certificate authority,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49064937/
这是我的代码 14 20 {"Confirm Email"} 21 在第 17 行我得到错误 Type '{ pathname: string; user: { em
这是我的代码 14 20 {"Confirm Email"} 21 在第 17 行我得到错误 Type '{ pathname: string; user: { em
这个问题已经有答案了: How do I compare strings in Java? (23 个回答) 已关闭 8 年前。 为什么 KeyEvent.getKeyText(0).substrin
我正在尝试 Rust 的新 wasm32-unknown-unknown 目标,我在调用数学函数(例如 sin、cos、exp、atan2)时遇到问题。 cargo .toml: [package]
当我为 spring-boot 创建启动项目时,我在 pom 文件中收到此错误。这只是为了创建一个基本的 Spring Boot 项目 Project build error: Invalid pac
我已经订阅了我想要传输的数据。但不知何故它不起作用。我收到此错误: The property pipe is not available for type "OperatorFunction" 这是我
运行以下查询时。select * from surgerys where to_char(dt_surgery ,'DD-MM-YYYY' ) = to_char('12-02-2012','DD-M
我在运行存储过程时遇到以下异常: com.microsoft.sqlserver.jdbc.SQLServerException:不支持从 UNKNOWN 到 UNKNOWN 的转换。 过程定义如下:
我尝试运行以下代码。顺便说一句,我对 python 和 sklearn 都是新手。 import pandas as pd import numpy as np from sklearn.linear
我已经阅读了关于未知类型的官方文档,但我很难真正理解它是如何工作的。 人们可以在文档中读到:“在没有首先断言或缩小到更具体的类型之前,不允许对未知进行任何操作。” 但如果我有这个功能: const f
我正在尝试在Mac OS中设置Hadoop 2.6.0 我正在关注这篇文章: http://hadoop.apache.org/docs/r2.4.0/hadoop-project-dist/hado
配置 Nexus docker 注册表和代理“dockerhub-proxy”后,如下所述: https://help.sonatype.com/repomanager3/formats/docker
我收到此错误 - “ValueError:未知标签类型:'unknown'” 我已经在网上搜索但无法摆脱这个错误,顺便说一句,我是 python 的新手:) 我的数据有 5 行 22 列,最后一列是标
使用 SHA256 摘要标识符 拉取图像失败 最佳答案 不幸的是,这是 DockerHub 删除 Docker 1.9 守护进程的向后兼容性的副作用。当使用 Docker 1.10 推送图像时,较旧的
我是 postgresql 的新手,正在尝试使用全文搜索 to_tsvector但是我遇到了错误。 SQL 和错误 SELECT to_tsvector('english', 'The quick b
每当我这样做时 npm run watch ,第一次编译工作正常 - 但经过几次编译后,我最终会得到这个错误: 95% emitting unnamed compat pluginError: UNK
在一个新的 Angular 应用程序中,我收到以下错误:Error from chokidar : Error: UNKNOWN: unknown error, watch我已经删除并重新安装 nod
使用 Typescipt 4.x.x 我写了一些代码来实现其他语言 Elm/Rust/Haskell 中常用的 Maybe/Option 类型。 我想写一个可以接受映射类型的通用函数 type MyM
const submitted = useSelector((state) => state.post.submitted) 对于上面的状态。我得到错误: (参数)状态:未知对象的类型为“未知”。 这
我正在尝试将多架构 docker 镜像推送到 docker hub 并遇到错误(在 https://github.com/docker/distribution/issues/3100 处打开了 do
我是一名优秀的程序员,十分优秀!