Chrome 应用程序中使用证书进行 SSL 客户端身份验证

2024-01-24

我正在编写一个 Chrome 应用程序,需要具有带有客户端身份验证的 SSL 套接字。我之前在 Java 中使用同一组信任存储和密钥存储完成了此操作。

以下是我在 Chrome(Mac 和 Chromebook)上所做的操作:

  • 将客户端密钥 (p12) 和 CA(一个根 CA,一个中间 CA)添加到系统。

  • 在 Chrome 应用程序中,尝试旧版socketAPI 和新sockets.tcp API.

  • 总是收到错误ERR_SSL_CLIENT_AUTH_CERT_NEEDED。但我认为系统中已经拥有正确的客户端证书和 CA。

旧版套接字 API 的代码:

chrome.socket.create('tcp',{},function(createInfo){
    mySocketId = createInfo.socketId;
    chrome.socket.connect(mySocketId,'host', 12345, function(connectResult){
        chrome.socket.secure(mySocketId,{},function(secureResult){
            console.log('secureResult '+secureResult);
        });
    });
});

我的问题是:

  1. Chrome API 是否支持使用证书进行客户端身份验证?
  2. 如果支持,我如何向 Chrome 提供证书?

Chrome API确实支持客户端身份验证tcp.secure https://developer.chrome.com/apps/sockets_tcp#method-secure,但有一个非常重要的警告 - 原始功能要求 https://code.google.com/p/chromium/issues/detail?id=132896#c48对于 SSL 支持,这样说:

使用内置 TLS 堆栈。抱歉,无法在此处添加/管理证书,只需使用现有配置。

因此,正如您所建议的,您需要手动将证书添加到 Chrome 中。设置 -> 显示高级设置 -> HTTPS/SSL -> 管理证书中有用于导入和导出的工具。您可能还需要解决this bug https://code.google.com/p/chromium/issues/detail?id=403076通过致电tcp.setPaused https://developer.chrome.com/apps/sockets_tcp#method-setPaused before tcp.secure https://developer.chrome.com/apps/sockets_tcp#method-secure.

但是,如果您需要比 Chrome API 提供的更细粒度的控制,您也可以在正常的 Chrome TCP 套接字 API 之上添加您自己的 javascript TLS 实现。幸运的是,图书馆forge https://github.com/digitalbazaar/forge已经有一个这样的实现。您可以使用以下示例查看forge和这个结合chrome.sockets.tcp here https://github.com/flackr/circ/blob/master/package/bin/net/ssl_socket.js。这种方法提供了更精细的控制,支持诸如证书固定等功能,这些功能在其他情况下是不支持的,但请注意,forge 尚不支持 TLS 1.2 或 ECDHE 密码套件(尽管这些功能计划在roadmap https://github.com/digitalbazaar/forge/issues/203).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 应用程序中使用证书进行 SSL 客户端身份验证 的相关文章

  • Chrome 内联安装扩展无法正常工作

    我正在尝试使用新的 chrome 内联安装功能进行扩展 请参阅此处 http code google com chrome webstore docs inline installation html http code google co
  • 阻止 Chrome 扩展程序的 popup.html 自动打开

    我正在创建一个 Chrome 扩展程序 其中包含background html每分钟从 API 请求一次信息的文件 收到信息后 它会发送消息popup html弹出窗口使用 JSON 信息将新的 HTML 元素附加到弹出窗口的主体上 问题是
  • 如何使用我自己的自定义身份验证服务使用团队机器人对用户进行身份验证?

    我在 azure 上创建了一个机器人 并在机器人注册通道中注册了它 现在 我想使用我自己托管的自定义身份验证服务 例如 https domainname auth 来使用机器人对用户进行身份验证 我不知道该怎么做 我已阅读 bot 框架文档
  • Chrome 19 无法识别字体粗细:较轻

    我刚刚启动了一个正在开发的项目以进行一些修改 并注意到该声明font weight lighter正在通过以下方式提供服务 font face并且它不再在网站上运行 参见图片 顶部镀铬 底部 ff 自昨晚以来 我的系统 Windows 上没
  • Chrome 扩展 - 访问 iframe 元素

    我正在附加一个iframe到页面使用content script with src set to chrome extension getURL myPage 稍后在某些事件中 我想从框架中检索一些元素 我尝试了以下代码content sc
  • 如何防止 Google Chrome 阻止我的弹出窗口?

    在我的网站上有一个按钮 用于调用一个函数 该函数调用window open不过 最近需要进行调整 在弹出窗口打开之前进行服务器端检查 自从添加执行 AJAX 调用的代码后 浏览器就会阻止在successAJAX 调用的回调 我读到 如果用户
  • Chrome 空 contenteditable 保留样式

    当我在页面中有可内容编辑的部分时 Chrome 似乎做了一些奇怪 有趣 令人困惑的事情 如果您有一段用 span 也许是其他标签 我不知道 应用了一个类 该类将附加样式应用于文本 字体系列 颜色等 然后删除可编辑部分中的所有文本 当您再次开
  • OkHttp Authenticator 有时不会调用多个 Retrofit 实例的验证

    我有两个不同的Retrofit两个不同 API 的实例 我也有两个不同的OkHttp3客户 但他们共享相同的Authenticator因为两个 API 的身份验证令牌是相同的 问题是当令牌过期时有时 但几乎总是 其中之一Retrofit O
  • 在 ASP.NET MVC 中使用 MySQL 的 AccountController

    在 Visual Studio 中创建默认的 ASP NET MVC 项目会设置一个可以在其中注册用户的基本项目 我将如何继续更改它以使用 MySQL 服务器而不是 SQLServer 现在可以使用了 安装最新的 Connector NET
  • 解密 TLS 1.2 AES-GCM 数据包

    我正在开发一个 Java 程序来解密TLS 1 2正在使用的会话TLS RSA WITH AES 128 GCM SHA256密码 我使用wireshark 录制了一个测试会话 这大师秘密是已知的 No Time Protocol Leng
  • JWT在浏览器中存储在哪里?如何防范CSRF?

    我知道基于 cookie 的身份验证 可以应用 SSL 和 HttpOnly 标志来保护基于 cookie 的身份验证免受 MITM 和 XSS 的影响 然而 需要采取更多特殊措施来保护其免受 CSRF 的影响 它们只是有点复杂 参考 ht
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • ASP.NET Core 2.0禁用自动质询

    将我的 ASP NET Core 项目升级到 2 0 后 尝试访问受保护端点不再返回 401 而是重定向到 不存在的 端点以尝试让用户进行身份验证 应用程序所需的行为只是返回 401 以前我会设置AutomaticChallenge fal
  • 从 Google Chrome v20 中的日期输入中删除背景箭头

    自 Google Chrome v20 起 已添加新的日历来输入日期 问题是我正在使用 javascript 创建自己的日历 并且我的图标已经位于与默认镶边箭头相同的位置 我想知道如何删除箭头背景 据我所知 您目前无法禁用它 这里正在进行一
  • 由于内容不可压缩,谷歌浏览器中出现了新的复合层

    当 chrome profiler 说 图层是单独合成的 因为它无法被挤压 时 它到底意味着什么 我正在对我的 html 进行更改 并在相对 div 内引入了一个固定位置 div 并给出了will change transform在上面 完
  • History.replaceState 仍然向“浏览历史记录”添加条目

    具体来说 调用以下代码片段 history replaceState undefined undefined value 正确地不会影响当前页面的后退按钮行为 但是will在 浏览历史记录 页面添加一个条目 这是我不想要的 下图是 Chro
  • 如何清除chrome性能条目或绕过其数量限制?

    我使用 Google Chrome 来分析一些使用 Javascript 动态加载脚本和其他资源的网页的性能 我用performance getEntries 方法 但我注意到 Chrome 只记录前 150 个资源 我找不到任何方法来获取
  • POST 请求“访问此资源需要完全身份验证”

    是否有人在尝试使用 POST 请求 oauth token 进行身份验证时遇到错误 访问此资源需要完全身份验证 卷曲命令 curl localhost 85 oauth token d grant type password d clien
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 仅在 Tomcat Web 应用程序上为表单登录设置 SSL

    我是否可以将 Tomcat 或我的 web 应用程序 如果这样做 设置为需要 SSL 来保证内置基于表单的登录机制的机密性 即保护用户凭据 并使用标准 http 进行任何其他交易 您可以将登录表单放在自己的目录中 并且只需对该目录要求 SS

随机推荐

  • 为什么 HSV 上的颜色分割更容易?

    我听说 如果您需要在软件上进行颜色分割 如果满足某些阈值规则 如 R100 10 主要原因是它将颜色信息 色度 与强度或照明 亮度 分开 由于值是分开的 因此您可以仅使用饱和度和色调构建直方图或阈值规则 理论上 无论值通道中的光照如何变化
  • html中溢出时如何向文本添加三个点? [复制]

    这个问题在这里已经有答案了 How can I show three dots in a text like this 添加所有这些 制作单线 text overflow ellipsis white space nowrap overfl
  • JBoss EAP 7 启动期间“读取属性”操作失败

    我已在 SSL 模式下将应用程序部署在 JBoss EAP 7 上 我的应用程序已部署并成功运行 但在启动过程中 每次服务器启动并且同时部署 WAR 时 我都会在控制台上收到以下错误 不会引发异常 11 28 11 402 ERROR or
  • 无法在鼠标输入时使用 jquery 将焦点设置为下拉列表

    这是我的 html 代码 div hello div div div
  • proguard - AppCompat 不支持 proguard/minify 后的当前主题功能

    我已将支持库从 v22 2 1 更新到 v23 0 0 在构建应用程序 使用 minifyEnabled true 后 出现 AppCompat 不支持当前主题功能 异常 08 23 05 46 10 168 19437 19437 E A
  • C++中纯虚函数有什么用?

    我现在正在课堂上学习 C 我不太理解纯虚函数 我知道它们稍后会在派生类中概述 但如果您只是要在派生类中定义它 为什么要将其声明为等于 0 简单来说 就是让类变得抽象 这样它就不能被实例化 但子类可以重写纯虚方法 形成一个具体的类 这是在 C
  • 根据查询将所有行提取到数组中

    我有以下代码 2 Query database for data result mysql query SELECT FROM tableName query array mysql fetch row result fetch resul
  • 如何使用 EasyPHP 5.3.8 安装 PEAR?

    我正在学习 Yii 并关注杰弗里 温塞特撰写的电子书 https rads stackoverflow com amzn click com 1847199585 该应用程序是基于 TDD 构建的 因此 我需要安装 PHPUnit 来编写单
  • 如何在 Android 13 上打开免提通话

    显然有很多帖子展示了如何在早期 Android 版本上打开扬声器 这些在新操作系统中不起作用 有人可以发布 Xamarin Forms 解决方案吗 AudioManager 在早期版本中使用 但当前操作系统需要额外的权限或不同的 API 提
  • Scala 解析器组合器解析 xml?

    scala 的解析器组合器可以解析 xml 并验证结束标签与开始标签的名称相同吗 我并不直接需要它 但我想知道我的库的限制 是的 它可以做到这一点 使用into or gt gt 实际上是同一件事 根据解析值参数化后一个解析器
  • Symfony 在生产中禁用控制器操作[重复]

    这个问题在这里已经有答案了 当 prod 环境处于活动状态时 是否可以 禁用 特定操作 我有一些不应在生产环境中执行的测试操作 class TestController extends FOSRestController Rest Get
  • Django REMOTE_USER 不存在,但 HTTP_REMOTE_USER 存在

    All 我有一个应该是一个非常简单的问题 我正在尝试按照以下说明使用 REMOTE USER 变量来使用 Django 身份验证 https docs djangoproject com en 1 8 howto auth remote u
  • 部署到 Heroku 错误:找不到模块“/app/server.js”

    我正在将使用 angular cli 创建的 Angular 6 应用程序部署到 Heroku 构建成功完成 但是 当我转到已部署的应用程序时 我看到一个空白页面 运行 Heroku 日志后 启动节点服务器实例时似乎发生错误 崩溃 找不到模
  • 在 Sharepoint 站点中发布 Excel 工作簿

    我有一个 Excel 工作簿 我需要使用 Excel VBA 在 SharePoint 网站中发布它 所以我使用以下代码在模块中创建了一个方法 Private sc Lists As SoapClient30 Public c WSDL U
  • AccessDenied:无权执行 sts:AssumeRoleWithWebIdentity

    我查看过类似的问题 但无法解决我的问题 我正在开发一个 Web 应用程序 用户将使用 AWS Cognito 的身份验证进行身份验证 注册部分正常 但是当我尝试登录时 我收到 未授权 异常 我已经尝试将自定义策略附加到我的 IAM 角色 授
  • 模板之外的类型名

    这在 VS2010sp1 中无法编译 不过它可以使用 gcc 4 6 进行编译 template
  • Flutter apk/ipa 大小与 React Native apk/ipa 大小

    hello world 示例的 React Native APK 大小约为 20M 在最近的版本中 https github com facebook react native issues 23575 因为支持不同的硬件架构 ARMv7
  • 在 R 中合并两个数据帧时进行聚合

    最终目标是求总数量 transact data qty 对于每条记录product info哪里的transact data productId存在于product info 以及哪里transact data date在 之间produc
  • 如何在 Swift 结构上调用基于选择器的 Timer 方法?

    这很有趣 看来您无法快速调用选择器消息struct 我的意思是 我有一个struct并想要实现一个简单的Timer对其进行变体Timer scheduledTimer这需要一个selector 争论 编译器告诉我被调用的选择器方法需要一个o
  • Chrome 应用程序中使用证书进行 SSL 客户端身份验证

    我正在编写一个 Chrome 应用程序 需要具有带有客户端身份验证的 SSL 套接字 我之前在 Java 中使用同一组信任存储和密钥存储完成了此操作 以下是我在 Chrome Mac 和 Chromebook 上所做的操作 将客户端密钥 p