Di recente ho dovuto configurare CocoaHttpServer, che stiamo utilizzando con successo nella nostra applicazione, per gestire le connessioni HTTPS provenienti da un'applicazione client (in esecuzione su dispositivi Android). Questo va bene: c'è un copioso codice di esempio che consente questo, e siamo stati in grado di abilitare il server sicuro senza problemi.Come si impostano le crittografie SSL quando si utilizza CFSocket/CFStream in Cocoa?
In pratica stavamo assistendo a fasi di negoziazione SSL incredibilmente lunghe mentre il client stava facendo il suo handshake con il nostro server - fino a 70 secondi.
Attraverso una lunga serie di ricerche, ho scoperto che il ritardo era dovuto al calcolo dei parametri Diffie-Hellman utilizzati di default quando SSL è abilitato in CFSocket. Questo thread è il punto in cui ho iniziato a trovare la risposta al mio problema.
Per corrispondere a quello che stava facendo il nostro server Windows (utilizzando una crittografia SSL meno sicura) Avevo bisogno di impostare il cifrario esplicitamente su Mac, il che non è facile quando si usa AsyncSocket come un wrapper per le comunicazioni socket.
server dinostro di Windows era utilizzando: TLS_RSA_WITH_RC4_128_MD5) (0x04) RC4 a 128 bit MD5 RSA
server dinostro Macintosh stava usando: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x039) AES 256 bit SHA-1 Ephemeral Diffie-Hellman scambio di chiavi usando il certificato RSA
La differenza in "sicurezza" è grande, ma probabilmente non vale lo sforzo/calcolo/ritardo che stavamo vedendo. Teatro della sicurezza?
Un +1 per i tuoi sforzi, e per il funzionamento della frase "Teatro della sicurezza?" nel tuo post :-) –
Questo è utile, ma dovresti dividere la risposta e postarla come risposta a questa domanda, quindi questa non può vivere per sempre nella pagina senza risposta. (È totalmente kosher rispondere alla tua stessa domanda). – benzado