我需要建立从iPhone应用程序到客户服务器的HTTPS双向SSL连接。 但是,我没有看到任何安全的方式将客户端证书提供给应用程序(它是一个电子银行应用程序,所以安全性确实是一个问题)。 从我到目前为止发现,应用程序能够访问证书的唯一方法是提供与应用程序本身预先绑定的方法,或者公开可以从中获取它的URL(IPhone app with SSL client certs)。
问题在于,这两种方式都不能阻止某些第三方获得证书,如果被接受为风险,则无需双向SSL(因为任何人都可以获得客户端证书)。
整个安全协议应如下所示:
- HTTPS双向SSL以验证应用程序
- 基于OTP(令牌)的用户注册(在该步骤生成的客户端侧密钥对)
- SOAP / WSS XML-Signature(由先前生成的密钥签名的请求)
有关如何建立第一层安全性(HTTPS)的想法吗?
答案 0 :(得分:2)
好的,那么回答我自己的问题......
事实证明,安全性没有固定的衡量标准。 只要制动系统的价格明显高于人们获得的奖金,就可以满足安全要求。
在我的情况下,我们谈论的是电子银行系统,但月度限制有些低(几千美元)。 正如我在我的问题中提到的,在HTTPS之上会有另一层安全层,它将以WSS XML-Signatures为特色。注册用户和接受他的公钥的过程也分几步完成。在第一步中,用户将他的电话号码与从我的客户端以某种方式检索到的鳕鱼一起发送。然后使用确认码将SMS发送给用户。用户将确认代码输入OTP计算器,该计算器将产生将识别用户的OTP代码。然后将公钥与OTP代码一起发送到服务器。从这里开始,每个请求都将由早先发送到服务器的公钥的私人对应方签名。
因此,整个过程的最大弱点是有人反向设计应用程序并检索用于SLL的客户端证书。由此产生的唯一问题是有人可能会观察用户的交易。然而,为了使某人进行交易,他需要用户的私钥,该私钥被生成,加密并存储到钥匙串中。制动这个安全级别的价格非常高。
我们还会考虑如何在更高层次上保护用户的数据(例如使用WSS加密),但是从一开始我就认识到当前的解决方案。
任何意见?
问候
答案 1 :(得分:-2)
https并不是真的这样。简而言之,您将附加到安全服务器,其中证书由知名机构签名。 击>
如果你使用苹果(iPhone)课程,他们只接受'好'证书。好的,我的意思是Apple认为可以接受的。如果您不使用它们(SDK中有替代品),您将无法连接(除非您拥有'企业'开发人员许可证 - 但我不能说100%确定,因为我对此许可证的认识不足以确定)
要继续,请使用您的https连接到您正确签名的网站,然后使用内置用户名/密码进行某种登录,或根据iPhone的唯一ID(例如)和使用交换密钥进行质询/响应那个联系。
请注意,这意味着您的应用程序必须在(每个连接/每个X连接/每月/应用程序指定的时间间隔)查询新证书,以使它们保持最新。然后,您可以使用这些证书连接到更安全的服务器。
[编辑]
检查this帖子 - 可能有关于您要求做什么的更多信息
[/编辑]
[EDIT2]
请注意,请求是iphone,而不是OSX - 应用程序商店批准是一个问题
[/ EDIT2]