2013-12-08 86 views
0

在iOS中创建SSL套接字连接的正确方法是什么?iOS - 简单的SSL套接字连接

我已经实现了一个SSL服务器在Java中:

  • 通过设置系统属性“javax.net.ssl.keyStore”和“创建与存储密码
  • 装载它的SSL证书javax.net.ssl.keyStorePassword”
  • 创建与SSLServerSocket工厂SSLServerSocket

现在我想创建它将会打开一个线程和COMMUNICAT套接字连接的客户端应用程序在此之上。创建这种连接并与我的服务器证书进行通信的正确方法是什么?

回答

2

根据对this question的回答,您可以使用NSInputStreamNSOutputStream使用TLS进行连接。

编辑:如果您想设置

kCFStreamSSLAllowsExpiredCertificates: NO 
kCFStreamSSLAllowsAnyRoot: NO 
kCFStreamSSLValidatesCertificateChain: YES 

: 而不是这个问题的答案使用SSL的设置,我建议这样的:

NSDictionary *settings = @{ 
    (__bridge NSString *)kCFStreamPropertySocketSecurityLevel:(__bridge NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL 
}; 

这将使用下列默认值安全级别使用特定版本的SSL或TLS,请查看CFSocketStream.h中的值。

+0

谢谢,但它是安全的使用_kCFStreamSSLAllowsAnyRoot_? – maxdev

+1

安全,是的,因为这是一个有效的选项。它安全吗? No. – neilco

+0

那么..什么是正确的方法来创建一个_secure_连接? ;) – maxdev

0

如果您使客户端应用程序不是服务器应用程序,则无需创建证书。 要在iOS中做到这一点,有很多方法,最简单的就是使用AFNetworking库。 只需将url(https)放入其中一个方法中,即可。 我用过很多次。只花5分钟阅读文档。

+3

正如人们所想象的那样,SSLServerSocket是套接字服务器而不是Web服务器。 – neilco

+0

@guiseppe我不想创建一个打开某种HTTPS连接的客户端。我想创建一个SSL套接字连接到我自己的Java服务器,我不能发送普通字节... – maxdev