iOS下itmsservices在线安装失败的解决方法

上传人:206****923 文档编号:46513621 上传时间:2018-06-27 格式:PDF 页数:14 大小:630.43KB
返回 下载 相关 举报
iOS下itmsservices在线安装失败的解决方法_第1页
第1页 / 共14页
iOS下itmsservices在线安装失败的解决方法_第2页
第2页 / 共14页
iOS下itmsservices在线安装失败的解决方法_第3页
第3页 / 共14页
iOS下itmsservices在线安装失败的解决方法_第4页
第4页 / 共14页
iOS下itmsservices在线安装失败的解决方法_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《iOS下itmsservices在线安装失败的解决方法》由会员分享,可在线阅读,更多相关《iOS下itmsservices在线安装失败的解决方法(14页珍藏版)》请在金锄头文库上搜索。

1、iOS 7.1iOS 7.1 下下 itmsitms- -servicesservices 在线安装失败的解决方法在线安装失败的解决方法 iOS 7.1 正式版发布了,之前使用 itms-services:/URL 方式在线安装 ipa 文件的方法却失效了,点击的时候报错为:“无法安装应用程序,因 的证书无效”(错误界面见下图),这应该怎么解决呢? iOS 7.1 正式版发布了,之前使用 itms-services:/URL 方式在线安装 ipa 文件的方法却失效了,点击的时候报错为:“无法安装应用程序,因 的证书无效”(错误界面见下图),这应该怎么解决呢? 其实 iOS 7.1 修改了

2、manifest.plist 文件的访问协议,之前可以通过 http 协议访问,在 iOS 7.1之后必须使用 https 协议方式访问。 比如之前的链接代码为: itms-services:/?action=download-manifest using System.Collections.Generic; using System.Text; using System.Net; using System.Threading; using System.IO; namespace MiniHttpsSrv class Program : IDisposable static void Ma

3、in(string args) MiniHttpsSrv.Program server = new Program(); server.Run(); HttpListener listener = null; public void Run() this.listener = new HttpListener(); listener.Prefixes.Add(“http:/+:8000/“); listener.Prefixes.Add(“https:/+:8001/“); listener.Start(); while(true) HttpListenerContext context =

4、listener.GetContext (); ThreadPool.QueueUserWorkItem(new WaitCallback(Pro gram.OnGetContext), context); public static void OnGetContext(object objContext) try HttpListenerContext context = (HttpListenerContex t)objContext; Console.WriteLine(“(“ + Thread.CurrentThread.Mana gedThreadId + “)“ + DateTim

5、e.Now.ToShortTimeString() + “ - “ + context.Request.Url); context.Response.ContentType = “text/html“; StreamWriter writer = new StreamWriter(context.Re sponse.OutputStream); writer.WriteLine(“Its now “ + Dat eTime.Now + “Hey, I have got your request to“ + context.Request.Url + “ “); writer.Flush();

6、context.Response.Close(); catch (System.Net.HttpListenerException exception) Console.WriteLine(exception.Message + “rn“ + ex ception.StackTrace); IDisposable Members 从上面的代码可以看到,HttpListener 也能够支持 HTTPS: listener.Prefixes.Add(“https:/+:8001/“); 但是要让这行代码工作真正工作起来, 需要事先对 http.sys 进行配置。 如何配置, 网上也有几篇文章谈及,

7、例如 Configure System.Net.HttpListener to listen for SSL 以及 Simple Secure Indigo (HTTPS),但说得还不够细致。具体来说,要让 HttpListener 能够接受 https 请求,需要进行如下的配置: 1. 前提条件:IIS 6 已经安装。下面需要利用 IIS 6 的 mmc(既 inetmgr.exe)来帮助倒入证书和察看证书的 thumbprint。 2. 按照按部就班图解配置 IIS5 的 SSL 安全访问所述步骤,在 IIS 6 上配置好服务器端证书。这篇 Blog 极其详细,虽然说的是 IIS 5 以及

8、 Windows 2000 上的证书服务,但 IIS 6 和 Windows 2003 上的证书服务大同小异,只有界面上的少许差别。配置完成后,可以在 inetmgr.exe 中到“View Certificate.“察看证书的细节了: 3. (这一步可以跳过)用 winhttpcertcfg.exe 检查确认证书已经被正确的安装了。在命令行运行“winhttpcertcfg.exe -l -c LOCAL_MACHINEMy -s atc-zhengzy” (这里 atc-zhengzy 是证书的 Friendly name) ,将会看到: 4. 运行 httpcfg.exe(Windows

9、 XP SP2 上的 httpcfg.exe 可以在 Microsoft 网站下载)将上一步安装好的证书加到 http.sys 的端口配置中:在命令行运行“httpcfg set ssl -i 0.0.0.0:8001 -c MY -h cd8c7c1958441e53eb4f9f6ba59b271ffb1aa59” ,其中-h 后面所跟的字符串就是第二步中看到的证书的 Thumbprint,-i 后面的端口要和代码中 HttpListener 所监听的 https 端口一致。如果返回结果“HttpSetServiceConfiguration completed with 0” ,表明配置成

10、功。 5. (这步可以跳过)检查确认第四步运行成功。在命令行运行“httpcfg query ssl” ,应该看到的结果是: 6. 现在就可以运行前面例子代码实现的 MiniHttpsSrv 了,同时,IIS 6 可以停掉,也可以继续运行,不会影响 MiniHttpsSrv 在 8000 和 8001 端口的服务。 7. 测试:IE 里面输入 https:/localhost:8001/blahblah 或者 http:/localhost:8000/blahblah 都可以看到 echo back 的结果: 另外, .NET 2.0 里面还新增了 System.Net.Security.Ss

11、lStream 类, 用来实现一个 SSL 的服务器也很简单,可以在运行时直接从.cer 文件中装载证书。 .NET 中生成中生成 SSL WEB 证书证书 为站点加上证书之后,访问站点就需要使用 https:/ 协议访问了,但前提就是要先去获取一个证书。你可以从证书颁发机构(如 Verisign)获得 基于 Internet 的客户端进行 SSL 通信所需的证书。 但是,如果是为了测试,您可以使用名为 MakeCert.exe 的工具创建一个测试证书。MakeCert.exe 可以从 Microsoft .NET Framework 中获得。(位置在: F:Program FilesMicr

12、osoft Visual Studio 8SDKv2.0Bin) 。 MakeCert.exe 也可从 Platform SDK 中获得。MakeCert.exe 用于创建 X.509 证书。它为数字签名创建公钥和私钥对,并将其存储在证书文件中。此工具也将密钥对与指定发布服务器相关联,创建将用户指定的名称绑定到密钥对公共部分的 X.509 证书。 若要为主机名 (MyWebServer) 对应的服务器创建 SSL 证书,可以使用下列选项执行 MakeCert: makecert -r -pe -n CN=“MyWebServer“ -eku 1.3.6.1.5.5.7.3.1 -ss my -

13、sr localmachine -sky exchange -sp “Microsoft RSA SChannel Cryptographic Provider“ -sy 12 命令行开关 -r 创建自我签署的证书。自我签署的证书是指那些不是由证书颁发机构签署的证书。因为它不是由证书颁发机构签署的,所以可用于 SSL 所需的加密,但不可用于服务器身份验证。 -n 指定服务器名称。此名称必须符合 X.500 标准。最简单的方法是指定带有双引号且前面有 CN= 的名称。 -eku 将一些以逗号分隔的增强型密钥用法对象标识符 (OID) 指定到证书中。对于 SQL Server 2005,需要一个对

14、具有 1.3.6.1.5.5.7.3.1 (szOID_PKIX_KP_SERVER_AUTH) OID 的服务器身份验证有效的 SSL 证书。 -ss 指定保存创建的证书的证书存储区。虽然可以将创建的证书保存到证书存储区的任何位置,但我们建议将证书保存在 my 存储区中。 -sr 指定证书所在的证书存储区。位置既可以是 currentuser (默认) ,也可以是 localmachine。因为此证书是为服务创建的,所以应将它放置在本地计算机中。 -sky 指定证书密钥类型。 此开关的值必须为 signature、 exchange 或整数 (如 4) 。 对于 RSA 公钥交换算法, 此处

15、必需是 exchange。这是用于加密和解密会话密钥的密钥类型。 -sp 指定 CryptoAPI 提供程序名称。对于为 SQL Server 创建的证书,可以将其设置为 Microsoft RSA SChannel Cryptographic Provider。 -sy 指定 CryptoAPI 提供程序类型。如果提供程序是 Microsoft RSA SChannel Cryptographic Provider,则此开关的值为 12。 其他命令行开关 -b 以 mm/dd/yyyy 格式指定证书有效期的起始时间的日期值。默认值为证书的创建日期。 -e 以 mm/dd/yyyy 格式指定证

16、书有效期的结束时间的日期值。如果无其他设置,则默认值为 12/31/2039 11:59:59 GMT。 示例 下面的示例说明了如何使用 MakeCert 和其他选项创建证书。 makecert -r -pe -n “CN= WebServerName“ -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp “Microsoft RSA SChannel Cryptographic Provider“ -sy 12 创建证书后,您可以从证书的 MMC 或使用工具(如 CertUtil)来获得证书哈希。使用 CertUtil,可以列出刚刚创建的证书。 C:certutil -store “my“ “WebServerName“ = Certificate 2 =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号