`

iOS7.1企业应用"无法安装应用程序 因为证书无效"的解决方案

 
阅读更多

http://download.csdn.net/download/accps115202/7136935

http://www.cocoachina.com/bbs/read.php?tid=213861

iOS7.1后,增加了安全性,使用https的方式安装app。

处理方法可以将之前的http改成https,如下所示:

 

itms-services://?action=download-manifest&url=http://...

 

改为

 

itms-services://?action=download-manifest&url=https://...

 

使用https方式的话,有几种方式处理:

 

1、安装一个自签名/购买的证书。

https服务器配置:

1、环境

1)操作系统:Windows server 2003Windows server2008

2JDKjdk 1.6

3apache-tomcat-6.0.35(注意版本号,版本6.0.18测试未通过)

4)网络:互联网、专网测试均通过。

2、使用到的软件、jar包

1Win32OpenSSL_Light-1_0_1g.exe(将bin目录设置到path环境变量中,需在命令提示符窗口使用openssl等命令)

2jdeclipse_update_site_uncomplie_vcredist_x86.exeOpenSSL提醒环境不支持时,安装)

3jetty-5.1.10.jar(放在证书所在的文件夹中)

 

3、服务器端、客户端证书生成步骤

以下命令在命令提示符窗口中执行。(路径:证书所在文件夹路径)

1.生成服务器的私钥:

openssl genrsa -out server.key 1024

2.生成签署申请(注意除Common Name以外可以为空,Common Name必须为服务器的ip或域名):

openssl req -new -out server.csr -key server.key   

3.生成CA私钥

openssl genrsa  -out ca.key 1024

4.利用CA的私钥产生CA的自签署证书(注意除Common NameorganizationName以外可以为空,Common Name必须为服务器的ip或域名(内外网区分) organizationName必须和上一次一致):

openssl req  -new -x509 -days 365 -key ca.key -out ca.crt

5. 在当前目录创建demoCA,里面创建文件index.txtserialserial内容为01index.txt为空,以及文件夹newcerts

   CA为网站服务器签署证书:

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key  

6.把服务端代码转换浏览器可以识别的PCS12格式,密码使用上面输入的密码。

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12   

7.使用jetty中的PKCS12Import工具类完成转换,密码同上.(jetty-5.1.10.jar在当前文件夹中)

java -cp jetty-5.1.10.jar org.mortbay.util.PKCS12Import server.p12  server.jks  

8.使用下面命令查看jks文件中包含的证书信息

keytool -v -list -keystore server.jks    


至此客户端证书ca.crt以及tomcat服务器证书server.jks已经生成完毕。

4、tomcat工程配置

1)配置服务器端证书

打开tomcat安装目录下的conf/server.xml

加入以下内容

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/Users/wrs/Documents/study/apache-tomcat-7.0.54/webapps/***/server.p12"
               keystorePass="123456"
               keystoreType="PKCS12"
               truststoreFile="/Users/wrs/Documents/study/apache-tomcat-7.0.54/webapps/****/server.jks"
               truststorePass="123456"
               truststoreType="JKS"/>

注意:keystoreFilekeystorePass为文件生成的位置生成证书时输入的密码。

添加之后效果:

2)工程配置(文件夹中有例子)


yjoa.jpa:打包生成的软件安装文件。

yjoa.plist:配置文件

url修改为该tomcat工程访问地址。

bundle-identifier为版本的签名信息,与打版本时的签名保持一致。

index.html文件:访问页面。

客户端下载:href的前半部分“itms-services://?action=download-manifest&url=”为固定写法,url之后的更改,https:// + ip + 端口 +工程名 + jj.plist

注意:是https不是 http。端口为https的端口不是tomcat工程端口,上面设置的是8443

证书下载:hreftomcat工程访问地址。

 

5、终端安装证书和软件

终端在浏览器地址栏里输入tomcat工程访问地址(使用自带Safari浏览器):

IOS7.1版本的,先安装证书、再点击客户端安装即可。

 

6、注意点

(1)openssl环境变量和jetty-5.1.10.jar位置

2tomcat版本号

3)生成的证书所在位置、需在tomcatserver.xml中配置

4)证书中的ip地址或域名,若ip地址更改,则证书重新生成。

5)证书生成时,密码要记住。

6index.html中的.plist文件的地址,采用https协议及端口。

7index.html中的证书位置和.plist文件中的安装包位置均采用tomcat工程路径。

download.html:

<html>
<head>
<title>iOS online install</title>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
</head>
<body>
<script type="text/javascript">
function doLocation(url)
{
  var a = document.createElement("a");
  if(!a.click) {
    window.location = url;
    return;
  }
  a.setAttribute("href", url);
  a.style.display = "none";
  document.body.appendChild(a);
  a.click();
}

var useHttps = false;
var key = "OS";
var userAgent = navigator.userAgent;
var idx = userAgent.indexOf(key);
if(idx!= -1) {
    var version = userAgent.substr(idx+key.length + 1, 3)
    if(version >= "7_1") {
        useHttps = true;
    }
}
if(useHttps) {
    doLocation('http://**********/download-ios7.html');
} else {
    doLocation('itms-services://?action=download-manifest&url=http://**********/******.plist');
}

</script>
</body>
</html>

 

download-ios7.html:

 

<html>
<head>
<title>iOS online install</title>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
    <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
            <meta http-equiv="expires" content="0">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
</head>
<body>

注意:如果系统是ios7.1,请先安装证书再安装app。
请点击以下链接完成证书的安装
<center>
<br><br>
【<a href="http://*******/******.crt">iphone证书安装</a>】
<br><br>
请点击以下链接完成iphone版的安装<br><br>
【<a href="itms-services://?action=download-manifest&url=https://****/*******.plist">ipa下载安装</a>】
</center>
</body>
</html>

 

 

2、部署到dropbox。(http://stackoverflow.com/questions/20276907/enterprise-app-deployment-doesnt-work-on-ios-7-1/22325916#22325916)

 

如果dropbox访问不了,对于墙内的我们,可以使用国内的服务是最有保障的了。机缘巧合之下,发现了新浪的sae可以提供https的服务。而且也是免费的。

 

其实机制是利用SAE提供的代码托管服务,将plist文件上传到SAE代码服务器,使用其提供的https服务。

 

新浪SAE地址:http://sae.sina.com.cn/

 

使用SAE需要先注册账号或者用已有的微博账号登录,登录后新建一个应用。

 

创建应用后,在“应用管理”下的“代码管理”创建一个代码版本,然后将plist文件上传。

 

如图:

 

 

文件上传后,可以通过如下地址访问到自己的plist文件。

 

https://[your app name].sinaapp.com/[your plist file name].plist

 

也可以用百度网盘

 

 js判断是IOS还是Android平台:

var browser={
versions:function(){
    var u = navigator.userAgent,
    app = navigator.appVersion;
    return {
    trident: u.indexOf('Trident') > -1, //IE内核
    presto: u.indexOf('Presto') > -1, //opera内核
    webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核
    mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                   android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
                   iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
                   iPad: u.indexOf('iPad') > -1, //是否iPad
                   webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
                   weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
                   qq: u.match(/\sQQ/i) == " qq" //是否QQ
                   };
                   }(),
                   language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
var IOS = browser.versions.ios;
var ANDROID = browser.versions.android;
                   if(IOS) {
                  
                   } else if (ANDROID) {
                  
                   }

分享到:
评论

相关推荐

    解决 iOS7.1企业应用"无法安装应用程序 因为证书无效"的问题

    免费自签证书,Tomcat下解决iOS7.1企业应用"无法安装应用程序 因为证书无效"的问题。文档和例子详细说明了tomcat(Apache文档中也有解决说明)下解决 iOS7.1企业应用"无法安装应用程序 因为证书无效"的问题,在服务器...

    tomcat下解决 iOS7.1企业应用"无法安装应用程序 因为证书无效"的问题

    文档和例子详细说明了tomcat下解决 iOS7.1企业应用"无法安装应用程序 因为证书无效"的问题,在ios7.1真机上测试通过。遗留问题是每个ip地址都要证书,那么客户端需要多次安装客户端证书,解决办法是生成一个根证书,...

    iOS 7.1 DeveloperDisk Image

    这个压缩包文件包含了iOS 7.1版本的操作系统镜像,使得开发者能够在模拟器或者实际设备上运行并测试他们的应用程序。在iOS开发中,这种Disk Image扮演着核心角色,因为它提供了完整的系统环境,让开发者能够了解应用...

    windows下搭建iOS7.1应用发布的Https-Tomcat服务器

    iOS7.1以后,http形式发布的iOS企业应用不能正常下载安装了,必须使用https的协议,被文档就是基于Window系统,搭建一个能够发布iOS7.1以上系统的https的Tomcat服务器 部署帮助文档:...

    ios7 ios7.1 ios7.1.1完美越狱工具

    ios7 ios7.1 ios7.1.1完美越狱工具

    ios7.1引导

    iOS7.1_PwnDFU_Boot_Tool

    ios7.1有锁升级gpp安装

    我们有软件成本和服务器的,而且你这个也挺复杂的,每半个小时是搞不定的

    juniper防火墙ios 7.1R6.0 解压包2

    juniper防火墙最新版的ios j-sa-7.1R6.0-b20169-package

    ios7.1越狱工具

    ios7.1越狱工具 由越狱大神发布我只是搬运工

    ios7.1正式版完美越狱

    ios7.1正式版完美越狱

    iOS企业解决方案浅谈

    ### iOS企业解决方案浅谈 #### 前言 在当今数字化转型的大背景下,企业纷纷寻求通过先进的技术手段提升自身的竞争力。iOS平台凭借其卓越的技术特点和用户体验,成为了众多企业开发移动应用的首选平台之一。本文将...

    ios7.1强制隐藏ID

    因此,这种方法并不适用于长期解决方案,只适用于临时操作。 在进行iOS 7.1或7.1.2的Apple ID隐藏操作时,需要按照以下步骤进行: 1. **备份数据**:在执行任何操作之前,确保对设备上的重要数据进行备份,以防...

    DeveloperDiskImage for ios 7.1

    DeveloperDiskImage for ios 7.1 iOS 真机调试解决“Could not find Developer Disk Image”问题 资源包: 将文件解压拖入目录 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Device...

    苹果旧版快手支持iOS7.1+

    苹果旧版快手支持iOS7.1+

    evasi0n7苹果IOS7.1Beta4越狱

    evasi0n7苹果IOS7.1Beta4越狱

    evasi0n 7 for mac ios7.1越狱工具~

    "evasi0n 7 for mac ios7.1越狱工具"是专门为Mac用户设计的一款iOS设备越狱工具,主要针对iOS 7.1及以下版本。在深入探讨这个工具之前,我们先来理解一下什么是越狱。 越狱是指通过特定的技术手段,绕过苹果对iOS...

    ios7.1固件

    本周云计算频道内容精彩纷呈,有150年前的人类如何利用大数据可视化技术赶走霍乱、有支撑4.5亿活跃用户的WhatsApp架构概览、有IBM出手收购NoSQL数据库公司Cloudant、还有英特尔发布至强E7 v2处理器。

    iOS企业级应用的tomcat服务器和客户端配置

    本文将详细讲解如何使用Tomcat服务器配置HTTPS自签名证书,以解决iOS 7.1及以上系统的应用下载问题。 首先,我们需要准备环境。这包括下载并安装Tomcat服务器,以及与之配套的JDK。Tomcat可以从官方网站下载,根据...

    iOS应用无线发布SOP

    在这个步骤中,需要安装 iOS 企业应用发布平台的安装页面,以便提供给用户安装应用的入口。 应用打包 在这个步骤中,需要将应用打包成 ipa 文件,以便在 iOS 设备上安装和使用。 ##### 4.1 Archive 在这个步骤中...

Global site tag (gtag.js) - Google Analytics