使用 SSL 证书验证 Web 浏览器

2024-06-20

是否可以使用 ssl 证书对 Web 浏览器进行身份验证。

假设我在应用程序中存储私钥,有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证?


您可以使用 SSL/TLS 客户端证书身份验证来对浏览器/用户进行身份验证。

服务器必须请求客户端证书,因此您需要访问服务器配置(而不仅仅是在共享服务器上安装一些 PHP 代码)。这是在 SSL/TLS 层完成的(事实上,该机制并非特定于 HTTPS):服务器在 SSL/TLS 握手期间请求客户端证书(有时通过重新协商握手)。在 Apache Httpd 中,这通常是通过以下方式完成的SSLVerifyClient http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyclient(尽管您还需要指定其他选项)。

然后,服务器将根据您配置的 CA(可能是您自己的 CA,并且可能独立于服务器证书本身使用的 CA)来验证证书。 (或者,在某些情况下,您可以在服务器级别禁用证书验证,并让 PHP 应用程序执行此操作,但这有点更高级,您需要知道自己在做什么。)

您可以从应用程序访问客户端证书并获取其主题 DN(或备用名称),以识别客户端。

目前尚不清楚您是否在识别出browser or a user。最终,一切都通过浏览器进行,但客户端证书往往会分配给用户。用户必须将该证书安装到他们的浏览器中。


EDIT:有关更多详细信息,如果您能澄清您的问题以及您打算对此做什么,将会有所帮助。

是否可以使用 ssl 证书对 Web 浏览器进行身份验证。

假设我在应用程序中存储私钥,有什么方法可以读取 来自浏览器的密钥并尝试基于该密钥进行身份验证?

首先,严格来说,不存在“SSL证书”这样的东西,因为SSL/TLS可以使用多种类型的证书,并且其中一些相同的证书还可以用于SSL/TLS以外的其他用途。通常,“SSL 证书”是指“SSL/TLS 上下文中的 X.509 证书”。

因此,使用 SSL 证书对 Web 浏览器进行身份验证意味着在 SSL/TLS 层进行此操作。 (已经尝试在 HTTP 层使用 X.509 证书来实现消息级安全性,但浏览器并未广泛支持它们。)

其次,私钥由您进行身份验证的远程方持有。对远程方进行身份验证的本地方看不到任何私钥。如果您(作为服务器)想要对 Web 浏览器进行身份验证,则浏览器需要拥有私钥,而不是您的(大概是 PHP)应用程序。在这种情况下,如果您要验证的是浏览器,则不太清楚为什么您的(PHP?)应用程序将拥有/需要私钥。

您的验证应用程序可能需要(如果不是由服务器本身完成)是一个 CA 证书,以便能够验证它所提供的客户端证书(或至少用于验证客户端证书的某种形式的信任锚)。这里不需要私钥,只需要公钥和证书,除非您希望您的应用程序也成为 CA。

事实上,您可以让您的应用程序成为一个迷你 CA。它可以使浏览器生成密钥对并向服务器发送证书请求(有一些机制可以让网页让浏览器完成所有这些操作)。然后服务器将生成证书并让浏览器根据其私钥将其导入回。随后,浏览器可以使用此证书对该服务器(或可以识别这些证书的其他服务器)进行身份验证。

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

使用 SSL 证书验证 Web 浏览器 的相关文章

  • 将 jQuery 数组字符串转换为 PHP 数组

    首先 我得说我对 PHP 还很陌生 我正在尝试获取一个可以使用 foreach 的 PHP 对象 以下字符串通过 ajax 传递 我正在尝试转动以下字符串 menu title TEST1 href title TEST2 href QWE
  • 如何通过键查找最大和最小日期

    我有一个数组 a array 2010 05 03 gt 100 2010 05 04 gt 400 2008 05 01 gt 800 2011 01 01 gt 800 我如何找到最大值和最小值key date 例如 max gt 20
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to
  • 如何在 Laravel 5.5 中编辑“页面因不活动而已过期”的视图

    在 Laravel 5 5 中 当您使用 CSRF 保护 默认情况下 并且在长时间不活动后发送发布请求时 您将收到此错误页面 屏幕截图 我对此错误表示同意 但是 我需要更改此错误的视图 文本以确保与我的应用程序风格和语言相匹配 关于如何编辑
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • symfony 2 形式的函数 getName 做什么

    这是我的表格类 class CommentType extends AbstractType public function buildForm FormBuilder builder array options builder gt ad
  • 当我尝试连接本地主机时出现 ERR_SSL_PROTOCOL_ERROR

    我开始研究 Node js 并尝试将 ionic 应用程序与我创建的后端 NodeJS 应用程序连接 但出现此错误 OPTIONS https localhost 3000 插入 https localhost 3000 insert净 E
  • xdebug_start_trace 行为异常

    我正在尝试进一步减少脚本内存使用量 我试图让我的脚本使用 xdebug 生成输出来分析内存使用情况 这是一个基于 CLI 的脚本 有 shebang usr local bin php q 我向它传递一个参数并检查它 argc gt 1 i
  • 识别刷新和关闭浏览器操作

    当我们刷新页面时 F5 或者浏览器中的图标 它会首先 触发 ONUNLOAD 事件 当我们关闭浏览器 右上角图标上的X 时 它将 触发 ONUNLOAD 事件 现在触发ONUNLOAD事件时 无法区分是刷新页面还是关闭浏览器 如果您有任何解
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • 当用户信息属于公司设备时Rails设备

    我为公司创建了一个设计 我创建了一个用户表 希望我想要存储用户信息密码等 当用户注册时 我希望它创建一个新用户并与公司关联 我公司型号 has one 用户 我的用户模型 所属 公司 我应该如何覆盖注册控制器 此致 Rails 初学者 如果
  • 如何在javascript中使用自动递增id?

  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • CSV 从 UTF8 到 ISO-8859-1

    我正在尝试修改我的 CSV 导出 但它不会将我的 CSV 从 UTF 8 转换 保存为 ISO 8859 1 请问我做错了什么吗 实际上自从修改了这个之后 我得到了一个空的 CSV 文件 php 7 0 x function my Gene
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • WordPress 事件按元生效日期排序

    我在获取参数数组以按 Wordpress 中的日期对事件列表进行排序时遇到一些问题 我在 Stack Overflow 和其他地方找到了几个建议的解决方案 但经过大量的试验和错误后 这些解决方案似乎都不起作用 这没什么花哨的 而且应该比这容
  • 无法在 Centos 上安装 php-mysqli 扩展

    我正在尝试将 mysqli 扩展安装到 php yum install php mysqli 我收到下一个错误 Transaction Check Error file usr share mysql charsets Index xml
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar

随机推荐

  • dapper 可以反序列化存储为文本的 json 吗?

    public class MyType public int Id get set public int MyArray get set var sql SELECT id MyArrayAsJson as MyArray var x aw
  • 可以访问每个套接字的 TCP 统计数据/信息吗? (C/C++)

    我需要一些信息 例如我创建的特定 TCP 套接字发生的重新发送包 数据包丢失的数量 有人知道如何直接从我的 C C 程序访问或请求此类信息吗 也许是 Linux 特有的东西 或者我是否需要 作为解决方法 捕获和分析我自己的流量 提前致谢 通
  • 序列包含多个元素

    我在通过 Linq 获取 RhsTruck 类型的列表并显示它们时遇到一些问题 RhsTruck 只有属性 品牌 型号 序列号 等 RhsCustomer 具有 CustomerName CustomerAddress 等属性 我不断收到错
  • 单元测试:创建“模拟”请求来模拟 MVC 页面请求

    如何为我的 asp net mvc 应用程序创建模拟请求以进行单元测试 我有什么选择 我在我的操作中使用 FormsCollection 因此我也可以模拟表单输入数据 您只需创建 FormCollection 的新实例并在其中添加数据即可
  • JSF1064 jsf 2.0 上的“无法找到或提供资源”警告

    我正在 Weblogic 10 3 3 上使用 Java EE 5 和 JSF 2 0 Mojarra 2 0 3 开发一个企业项目 我没有错误 但在浏览我的应用程序时 控制台中出现了非常烦人的警告 每当我在 JSF 中执行重定向时 我都会
  • ajax推送服务器

    好吧 我最近写了一个ajax推送脚本 其中后端的php在等待某人更新时处于休眠状态 但是休眠的进程占用了大量的cpu 关于如何防止这种情况的任何想法 我猜我必须要么找到一个可以使用线程休眠的程序 要么用我不太熟悉的 python 或 c 编
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • 创建一个在 MPI 进程之间保持同步的计数器

    我在使用基本的通信和组 MPI2 方法方面拥有相当多的经验 并且使用 MPI 做了相当多的令人尴尬的并行模拟工作 到目前为止 我已经将代码构建为具有一个调度节点和一堆工作节点 调度节点有一个将与模拟器一起运行的参数文件列表 它使用参数文件为
  • React Native this.'function' 不是一个函数

    我正在学习 React Native 和 Redux 这里有很多与我类似的问题 但我很难与我的问题联系起来 当我在另一个方法中调用一个方法时 它不断地返回给我 this some function 不是一个函数 我真的不知道该怎么做 这是我
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 限制文本日志文件的好方法

    我有一个 winForm 应用程序 其中有一个用于记录目的的文本文件 我想将其大小限制为 10 MB 这样如果超过此限制并写入新数据 则删除文本文件中最旧的数据以为新数据腾出空间 有什么有用的建议吗 使用一些日志框架 我建议NLog htt
  • 为什么我的 CloudFormation 脚本无法下载文件?

    我需要在 Windows 实例初始化期间下载文件 为了测试这一点 我使用以下脚本来下载 Google 徽标 使用简化版本的Windows 角色和功能模板 https s3 amazonaws com cloudformation templ
  • 如何将行从一个 DataGridView 移动到另一个 DataGridView?

    我有两个具有相同列架构的 DataGridView 尽管两个不同的 DataView 作为数据源 如果这很重要 将行从一个数据网格视图移动到另一个数据网格视图的最佳 最快方法是什么 我相信如果您在 DataTable table1 中有一行
  • 勾选或取消勾选复选框时输入时间戳

    我有一个 3 行 7 列的工作表 A1 G3 A 和 B 列有 6 个复选框 A1 B3 A 列和 B 列中的框分别链接到 C 列和 D 列 E 列和 F 列中的单元格只是分别复制 C 列和 D 列 实时E1细胞是 C1 and F3细胞是
  • 使用多个 io_service 对象

    我有我的应用程序 其中侦听和处理来自互联网套接字和 unix 域套接字的消息 现在我需要将 SSL 添加到互联网套接字 我使用的是单个io service应用程序中所有套接字的对象 看来现在我需要添加单独的io service网络套接字和
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 如何在 Access 2010 中创建自定义 ID

    这个问题的标题可能不准确 因为我不确定如何提出这个问题 有没有办法让 AC 2010 中的 ID 字段具有常量部分 然后是用户将输入的 ID 的一部分 示例 EMP9066 我希望 ID 的 EMP 部分始终保持不变 用户不应更改它 并且
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户