2013-12-08 131 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