Safari获取UDID需要安装.mobileconfig文件,

本文介绍如何使用苹果开发者证书为iOS的mobileconfig文件签名,使其更安全可靠。提供了手动签名步骤及使用Python脚本自动签名的方法,并展示了如何验证签名的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Safari获取UDID需要安装.mobileconfig文件,
但是,我们在安装了.mobileconfig后,返现配置描述文件打 开显示“unsigned” 或者“尚未签名”这样的情况,所以接下来的工作就是让我们的.mobileconfig文件看起来更加安全一些。

.mobileconfig签名网络上大多都是使用ssl证书进行签名,可以参考

http://www.rootmanager.com/iphone-ota-configuration/iphone-ota-setup-with-signed-mobileconfig.html

本文主要讲,使用苹果开发者证书进行签名达到目的,本文两种方法,一种是刀耕火种的一步步操作,一种使用脚本签名

一.导出苹果证书进行签名

1.从钥匙串(keychain)中导出证书

实用工具->钥匙串访问->选择要导出的证书,导出生成p12文件 InnovCertificates.p12

然后转换成 InnovCertificates.pem 文件

2. p12换成pem格式方法

p12在线转换pem   https://www.sslshopper.com/ssl-converter.html

(证书)cer.p12文件 转cer.pem文件

openssl pkcs12 -clcerts -nokeys -out cer.pem -in cer.p12

(私钥)key.p12文件转key.pem文件

openssl pkcs12 -nocerts -out key.pem -inkey.p12

3.下载 Apple Root Certificate 和 Apple Intermediate Certificate

(对于本篇文章 .mobileconfig文件的验证我使用了苹果的以下两个证书.

Apple Root Certificate(苹果根证书)

Apple Application Integration Certificate (苹果应用集成证书 )

你也可以使用这些证书或者苹果提供的其他证书 地址: http://www.apple.com/certificateauthority/

下载的文件中包括证书(cer)和私钥(key)

(在命令行中读取证书,参考链接 info.ssl.com/article.aspx?id=12149)

根据这个文件我们可以解压出来证书.

 

4.签名和验证.mobileconfig文件

上边所有文件准备号后,运行命令行工具,运行以下命令

结果就是签名并且验证后的 .mobileconfig文件

二.脚本签名

借助于强大的github,找到了一个python脚本进行签名

地址:https://github.com/nmcspadden/ProfileSigner

1.签名一个mobileconfig

profile_signer.py与 mobileconfig 放在同一目录,终端进入目录执行

2.加密一个mobileconfig

3.签名并且加密一个mobileconfig

 

"3rd Party Mac Developer Application "为你的证书在钥匙串中的全名,选择证书,显示简介,复制常用名称即可,比如

iPhone Developer: jakey.shao xxxx@xxx.com (W26TLNwW63)

iPhone Distribution: XXX Network Technology Co., Ltd. (L5T8PFT6T5)

三.Safari安装

发现未签名变成了已签名,红色变成了绿色啦.安装的时候没有警告啦...茉莉花香啊!!!

传送门 通过Safari浏览器获取iOS设备UDID(设备唯一标识符)

参考文章&英文原文:

http://stackoverflow.com/questions/28355902/ios-mobileconfig-file-still-not-verified-but-close-i-see-certification

 

转载请注明:天狐博客 » 为iOS的mobileconfig文件进行签名

转载于:https://www.cnblogs.com/zengyanzhi/p/5583429.html

一、MDM相关知识: MDM (Mobile Device Management ),即移动设备管理。在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入企业网络并查看、收发企业数据已十分普遍,在管理企业移动设备的同时,MDM还能提供全方位安全体系防护,同时在移动设备、移动APP、移动文档三方面进行管理和防护。 二、基于IOS上MDM技术相关资料整理及汇总: 1、理解apple官网提供的相关MDM的开发帮助文档 原文地址:http://www.mbaike.net/ios/1552.html 阶段目标:理解IOS上MDM的原理和工作流程。 2、申请IOS开发MDM需要的https(SSL)证书和密钥 原文地址:http://www.mbaike.net/ios/1554.html 阶段目标:完成https证书申请及流程,为后面部署服务器环境做准备。 3、部署https(SSL)服务器环境 原文地址:http://www.mbaike.net/ios/1556.html 阶段目标:完成https环境的部署和测试,为后面的MDM的测试座准备; 4、MDM推送证书的生成及java-apns组件的测试代码编写 原文地址:http://www.mbaike.net/ios/1558.html 阶段目标:IOS端完成p12格式的MDM推送证书,java-apns组件测试代码的编写; 5、配置描述文件mobileconfig的生成及注意事项 原文地址:http://www.mbaike.net/ios/1560.html 阶段目标:协助IOS端生成mobileconfig文件的生成; 6、安装mobileconfig配置描述文件及完成Authenticate和Token Update功能 原文地址:http://www.mbaike.net/ios/1562.html 阶段目标:完成配置描述的安装和认证过程; 7、获取PushMagic、Token、Topic、UDID、UnlockToken等数据 原文地址:http://www.mbaike.net/ios/1564.html 阶段目标:完成Authenticate和Token Update过程; 8、通过APNS发送MDM的锁屏命令 原文地址:http://www.mbaike.net/ios/1566.html 阶段目标:完成MDM锁屏功能; 9、通过APNS发送MDM的恢复出厂设置命令 原文地址:http://www.mbaike.net/ios/1569.html 阶段目标:完成MDM恢复出厂设置功能; 10、通过APNS发送MDM的查询设备信息的命令 原文地址:http://www.mbaike.net/ios/1571.html 阶段目标:完成MDM查询设备信息功能; 11、mobileconfig文件的签名和认证(signed、verified) 原文地址:http://www.mbaike.net/ios/1578.html 阶段目标:完成MDM的mobileconfig描述文件的签名和认证功能; 12、关于IOS端MDM全部资料的汇总及整理 原文地址:http://www.mbaike.net/ios/1573.html 13、IOS设备上mobileconfig配置文件的卸载及MDM Server标记 原文地址:http://www.mbaike.net/ios/1698.html 阶段目标:完成MDM的mobileconfig描述文件的卸载并并标记服务器; 14、CentOS上MDM相关软件的使用命令整理 原文地址:http://www.mbaike.net/ios/1706.html 阶段目标:完成CentOS上MDM相关软件的使用命令整理; 三、说明: 目前国内基于IOS的MDM相关资料少之又少,作者本人在工作中有幸接触到了一点皮毛,于是将期间的过程整理成文章与广大开发人员一起分享。如果你的从事MDM开发时遇到了这样的问题,可以邮件联系作者,很感谢你的阅读! 转载自:移动互联百科 本文固定链接:http://www.mbaike.net/special/1542.html
### 回答1: 您可以使用 Python 的网络库,如 `socket` 或 `requests` 库,来获取指定 URL 的 IP 地址。 使用 `socket` 库: ``` import socket def get_ip_address(host): return socket.gethostbyname(host) host = "udid.iosyuan.com" print(get_ip_address(host)) ``` 使用 `requests` 库: ``` import requests def get_ip_address(host): return requests.get("https://" + host).raw._connection.sock.getpeername()[0] host = "udid.iosyuan.com" print(get_ip_address(host)) ``` 上面的代码将会返回该 URL 的 IP 地址。 ### 回答2: 要通过Python获取https://udid.iosyuan.com的真实IP,我们可以使用socket库和requests库来实现。 首先,我们需要使用requests库发送GET请求到https://udid.iosyuan.com,并获取网页的源代码。可以使用以下代码进行请求和获取响应的过程: ```python import requests url = "https://udid.iosyuan.com" response = requests.get(url) source_code = response.text ``` 接下来,我们可以使用正则表达式来提取源代码中的IP地址。由于具体的源代码结构不确定,这里我们只考虑提取合法的IP地址。可以使用以下代码来实现正则表达式匹配: ```python import re ip_pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" ip_list = re.findall(ip_pattern, source_code) ``` 最后,我们可以输出提取到的IP地址。完整的代码如下: ```python import requests import re url = "https://udid.iosyuan.com" response = requests.get(url) source_code = response.text ip_pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" ip_list = re.findall(ip_pattern, source_code) for ip in ip_list: print(ip) ``` 这样我们就可以使用Python获取https://udid.iosyuan.com的真实IP地址了。注意,由于网页的结构可能会发生变化,以上代码可能需要根据实际情况进行调整。 ### 回答3: 使用Python获取https://udid.iosyuan.com的真实IP地址可以通过以下步骤实现: 1. 首先,需要导入所需的库,包括`requests`和`socket`库。可以使用`pip install requests`和`pip install socket`命令进行安装。 2. 创建一个函数来获取真实IP地址,命名为`get_real_ip()`。 3. 在函数中,使用`requests.get()`函数发送一个GET请求到`https://udid.iosyuan.com`网站。 4. 然后,通过`response.text`属性获取响应的HTML内容。 5. 接下来,使用`socket.getaddrinfo()`函数来解析HTML内容中的主机名,获取其对应的IP地址。 6. 最后,将获取到的IP地址返回给调用函数的部分。 下面是一个示例代码: ```python import requests import socket def get_real_ip(): url = 'https://udid.iosyuan.com' response = requests.get(url) html_content = response.text host_name = html_content.split()[2].split("/")[2] ip = socket.getaddrinfo(host_name, None)[0][4][0] return ip # 调用函数并打印真实IP地址 ip_address = get_real_ip() print("真实IP地址是:" + ip_address) ``` 以上代码通过发送GET请求获取网页内容,并从中解析出IP地址。请注意,`getaddrinfo()`函数可能会返回多个IP地址,我们只需使用第一个即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值