如何在iOS中检索ssl服务器证书?

2024-03-06

我希望能够获得 ssl 证书(如果可能的话+链),以便能够显示可分辨名称并确定它是否是 EV 证书。 (通过证书策略检测 EV 证书(维基百科 http://en.wikipedia.org/wiki/Extended_Validation_Certificate#Extended_Validation_certificate_identification)

据我所知,如果证书是自签名的,您只会看到一些证书详细信息。

是否可以使用 CFNetwork 等较低层来检索证书?


via the macnetworkprog.lists.apple.com邮件列表http://web.archiveorange.com/archive/v/x0fiWEI9emJFc36DY0UP http://web.archiveorange.com/archive/v/x0fiWEI9emJFc36DY0UP并提到了开发者论坛中的几个地方

好吧,默认的 TLS 安全策略应该足够了,但是如果 你想参与这个过程你可以这样做(在 iPhone OS 上) 3.0 及更高版本,以及 Mac OS X 10.6),通过实现-connection:canAuthenticateAgainstProtectionSpace: and -connection:didReceiveAuthenticationChallenge:委托回调, 寻找一个NSURLAuthenticationMethodServerTrust验证 方法。

去做这个:

  1. 实施-connection:canAuthenticateAgainstProtectionSpace:委托回调。

  2. 在您的实现中,如果身份验证方法 保护空间为NSURLAuthenticationMethodServerTrust, 你有 两个选择:

    2a.返回NO,并让默认的 TLS 算法生效。

    2b.返回YES,在这种情况下你的-connection:didReceiveAuthenticationChallenge:将调用委托回调。

如果您想在制作之前查看证书 决定,您可以致电-serverTrust在保护空间物体上 获取信任对象,然后使用SecTrust API得到 证书链。

  1. 如果您选择路径 2b,您的-connection:didReceiveAuthenticationChallenge:将调用委托回调。你有两个选择:

    3a.通过调用来禁止连接-cancelAuthenticationChallenge:关于挑战的发件人。

    3b.通过调用允许连接-useCredential:forAuthenticationChallenge:关于挑战的发件人。要获取凭证,请致电-[NSURLCredential initWithTrust:]。实际上,您在这里传递什么信任对象并不重要;保护空间里的就可以了。

您不必同步执行此操作。你可以只锁住 挑战并从您的委托回调中返回,然后解决 在未来的某个时刻挑战。

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

如何在iOS中检索ssl服务器证书? 的相关文章

  • NSUndoManager 会撤消后台发生的更改吗?

    我有一个编辑视图控制器 我正在使用 NSUndoManager 它是我的持久性存储 核心数据项目 的一组 我的应用程序的功能之一是与外部服务器同步 我想知道的是 如果我正在视图中编辑某些内容 同时应用程序正在与服务器同步 如果我改变主意并决
  • 如何使用 rustls 库建立 TLS 连接?

    The 文档 https docs rs rustls 0 10 0 rustls 提供了一个例子 不幸的是它不能编译 很多东西都被重命名了 界面也被重命名了ClientSession构造函数改变了 我设法将错误修复到可以编译的程度 但没有
  • @IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃

    我有一个非常简单的 UITextView 子类 它添加了 占位符 功能 您可以在文本字段对象中找到该功能 这是我的子类代码 import UIKit import Foundation IBDesignable class Placehol
  • 文本末尾的空格在右对齐 UITextField 中不可见

    我有一个右对齐的UITextField 最初编辑时 文本末尾不会出现空格 我用这个解决了this https stackoverflow com q 19569688 1971013 替换 与不间断的 u00a0 然而 上面仅在编辑文本字段
  • 图表无法在 Xcode 14 上编译

    我在图书馆中面临以下错误 Type 图表数据集 不符合协议 范围可替换集合 实例方法不可用 替换Subrange with 用于满足协议的要求 范围可替换集合 将其附加到扩展 ChartDataSet RangeReplaceableCol
  • iOS UITableViewCellAccessoryCheckmark 在每次滚动时可见

    我有一个列表 我将其用作复选框 我已启用或禁用选择行上的复选标记 但是当我滚动列表时 它会在每 10 行之后标记行 void tableView UITableView tableView didSelectRowAtIndexPath N
  • 使用 Javascript 获取 Mobile Safari 中选定的文本

    因此 我正在开发一个小书签 对于我来说 使用 循环 获取用户选择的内容是理想的选择 window getSelection 和 document getSelection 都是我可以调用的函数 但是它们始终返回空字符串 我相信问题在于 当您
  • 按下后退按钮时 SwiftUI 工具栏项目被剪裁

    我在 SwiftUI 中遇到了一种奇怪的行为 我似乎无法解决它 鉴于以下简单的示例应用程序 我遇到了这种行为 工具栏项目在初始运行时正确呈现 但导航离开并返回它会被剪切 重新创建此示例代码 内容视图 swift import SwiftUI
  • 如何在 iPhone 应用程序中播放来自服务器的视频 URL

    实际上 我通过使用从服务器获取一个网址XMLParser 我想在我的应用程序中播放这个视频网址 现在我使用了 MPMoviePlayerController 但它不起作用 请帮忙 XML解析器 m id loadXMLByURL NSStr
  • 枚举 NSString 的最佳方法

    我正在寻找枚举 objc 对象 例如 NSString 的方法 我记得 Xcode4 版本中有一个新功能 它提供了一种新的 enum 方法 但不清楚 有人知道吗 好吧 我自己回答 我想我犯了一个错误 这就是我上面提到的新功能 typedef
  • 存储和检索多维 NSMutableArray 的最佳方法是什么?

    我将一堆数据存储在 plist 文件 在应用程序文档文件夹中 中 其结构如下 Dictionary description String Value sections Array Array Number Number Array Numb
  • UITableView 如何一次显示两个不同的数组?

    下面的代码有效 但不符合我的意愿 我希望当我单击 UIbutton 时 它会自动更新 UITableview 中的新值而不是旧值 下面的代码仅在我按下 UIbuttons 时有效 之后当我滚动 UITableview 时它会更新具有新值的
  • .net MVC 将 MP4 流式传输到 iDevice 问题

    我一直在编写用于提供视频服务的一段代码 但遇到了一些问题 代码如下 public ResumingFileStreamResult GetMP4Video string videoID if User Identity IsAuthenti
  • 关系上的核心数据属性?

    我刚刚开始使用核心数据 我有一个Headache实体和一个Medication实体 头痛和药物之间存在多对多的关系 当您加重头痛时 您可以选择多种药物 我希望能够指定这些药物的数量 我对 MySQL 更熟悉 您可以在其中创建一个数据透视表
  • iPhone - cancelPerformSelectorWithTarget 不起作用

    如果我在 UIView 的子类中执行此操作 self performSelector selector doSomething withObject nil afterDelay 5 然后像这样取消它 我已经尝试了两个版本 NSRunLoo
  • Coredata错误setObjectForKey:对象不能为nil

    我正在尝试检查我的核心数据存储中是否有任何数据作为我的应用程序的恢复类型 基本上 如果用户处于最终视图 则 coredata 中会有一些数据不断更新 因此 他们处于最终视图中 然后应用程序崩溃 或者他们将其置于睡眠状态 然后应用程序从内存中
  • Swift:转义闭包捕获非转义参数“onCompletion”

    我的 swift 有问题 我正在尝试发送 API 请求 然后检索数据 但收到以下错误消息 Swift 转义闭包捕获非转义参数 onCompletion 有谁知道我该如何解决这个问题 提前致谢 Code class RestApiManage
  • 如何支持滑动删除具有组合布局的 UICollectionView 列表中的行?

    以前对于表视图 这是在UITableViewDataSource委托回调tableView commit forRowAt 相关 API 中是否有等效功能新的集合视图 https developer apple com documentat
  • Curl 和 Php 5.3.3 中的 SSL 连接错误

    我的网站自 3 年来一直运行良好 代码如下 现在突然从 2 天开始出现以下错误 SSL 连接错误 在 Curl error 中 下面是我的代码
  • 如何检测文本是否可读?

    我想知道是否有一种方法可以告诉给定的文本是人类可读的 我所说的人类可读的意思是 它有一些含义 格式就像某人写的文章 或者至少是由软件翻译器生成的供人类阅读的文章 这是背景故事 最近我正在制作一个应用程序 允许用户将短文本上传到数据库 在部署

随机推荐

  • FirebaseAuth 禁用用户检查并注销?

    所以我有一个 onAuthStateChanged 流 我想检查用户是否已被 Firebase 控制台上的管理员禁用以注销用户并再次转到登录页面 这是我的流检查用户是否已登录 但是如何检查用户是否被 Firebase 控制台禁用 这是我的流
  • 如何在 iOS 9 中将 AVCaptureSession 与 Slide Over 和 Split View 结合使用?

    我的团队正在开发一套 SDK条码扫描 https github com pdf417 pdf417 ios 身份证扫描 https github com BlinkID blinkid ios and OCR https github co
  • 同时读取文件

    读取部分不是并发的 但处理是并发的 我这样表述标题是因为我最有可能使用该短语再次搜索此问题 我尝试后陷入僵局超越示例所以这对我来说是一次学习经历 我的目标是 逐行读取文件 最终使用缓冲区来执行行组 将文本传递给func 这确实有一些正则表达
  • 聚合初始化不支持构造函数访问[重复]

    这个问题在这里已经有答案了 鉴于下面的示例 我惊讶地发现 尽管默认构造函数被显式删除 或为此设置为默认值 但聚合初始化仍然是可能的 include
  • golang 从地图内的地图访问值

    我正在利用AVI Go SDK https pkg go dev github com Crypto89 sdk go v0 0 0 20190910135836 56c48329b7ce section readme获取 avi heal
  • XSLT 转换中的动态文档类型(正确使用结果文档指令)

    我正在使用 XSLT 需要根据参数在转换后的输出中动态生成文档类型 我听说这不能使用 XSLT 1 0 来完成 但可以使用 2 0 版本 使用结果文件 tag 到目前为止 从以下答案开始this https stackoverflow co
  • Windows DataGridView _RowCommand

    我的背景是 ASP Net 我被要求开发一个小型 Windows 应用程序 我尝试使用网格来呈现和选择数据 并且我认为 Windows 窗体中与 ASP Net 的 GridView 等效的是 DataGridView 我还不确定是否是这种
  • C++ iostream 中的奇怪 BUG?

    这是 iostream 中的错误吗 include
  • Android的convertView,用还是不用?

    文章中多线程提高性能 http android developers blogspot com 2010 07 multithreading for performance html来自 Android 开发者博客 convertView用
  • 如何在Android中更改进度条的进度颜色

    我在 Android 应用程序中使用水平进度条 并且我想更改其进度颜色 默认情况下为黄色 我怎样才能使用code 不是 XML 这不是以编程方式进行的 但我认为无论如何它可以帮助很多人 我尝试了很多 最有效的方法是将以下几行添加到 xml
  • 单元测试错误条件 - EINTR

    简而言之 如何对系统调用上的错误条件 例如 EINTR 进行单元测试 我正在研究的一个特定示例 这可能是一种单独的情况 是 当它返回带有 errno EINTR 的 EOF 时是否有必要再次调用 fclose 该行为取决于 fclose 的
  • 如何在 vapi 文件中编写 void 指针类型定义?

    我正在尝试编写一个 VAPI 文件来使用 unixODBC 其中一个函数被称为SQLAllocHandle From
  • R 中存在大循环?

    假设我想使用以下命令执行模拟function fn1 lt function N res lt c for i in 1 N x lt rnorm 2 res lt c res x 2 x 1 res 对于非常大的N 计算似乎挂起 有更好的
  • 如何隐藏表单上的轮廓

    我必须设计一个其中包含输入的表单 我在输入上使用背景图像 因此它看起来像一个按钮 每次有人点击它时 它都会发送 POST 这是我想要实现的行为 但问题在于表格的轮廓 当我们单击表单时 会显示轮廓 虽然很小 但如果能让表单 或输入 失去轮廓那
  • 如何在 Vuejs 组件中应用过滤器?

    如果我有一个简单的过滤器 请说 Vue filter foo function value return value replace foo g bar 还有一个简单的组件 Vue component example props msg S
  • 可以在网站上嵌入 Github 问题列表(带有特定标签)吗?

    有谁知道有一种简单的方法可以将带有特定标签的问题列表从 github 嵌入到网站上吗 这是为了在项目网站上嵌入未解决的错误列表 使用 jQuery 的解决方案 有一种方法可以轻松地使用 github api 仅使用 javascript 无
  • 固定位置在 Safari 7 中不起作用

    我有一个固定位置的 div 当我滚动时它位于屏幕底部 而不是移动 然而 在 Safari 上 这个 div 的行为就像是绝对定位的 并随着其余内容一起上下移动 当我单击 检查元素 时 编程的 所需的 位置会突出显示 而不是视觉 实际 位置
  • 使用 Python min() max() 避免数值的字典顺序

    我有一个脚本可以从一组值中提取随机数 然而 今天它崩溃了 因为min and max 按字典顺序对值进行排序 因此 200 被视为大于 10000 我怎样才能避免这里的字典顺序 Len关键是在正确的轨道上 但并不完全正确 我找不到任何其他有
  • 使用 istream 从命名管道读取

    是否可以使用 C stl 从命名管道 mkfifo 读取 使用流 因此没有提前定义char buffer MAX SIZE 用于读操作 我想读取直到缓冲区结束并将结果放入std string 当前方法 bytes read fd buffe
  • 如何在iOS中检索ssl服务器证书?

    我希望能够获得 ssl 证书 如果可能的话 链 以便能够显示可分辨名称并确定它是否是 EV 证书 通过证书策略检测 EV 证书 维基百科 http en wikipedia org wiki Extended Validation Cert