2 votos

Usando MAMP 3.4, ¿cómo puedo actualizar a Apache 2.4 y OpenSSL 1.0.2 para cumplir con el ATS iOS 9 requisitos?

He instalado MAMP 3.4 en Yosemite, pero la versión de Apache interior es todavía 2.2. Es allí una manera de actualizar a Apache 2.4? Además he instalado a través de la cerveza openssl 1.0.2 pero MAMP Apache sigue siendo comienza con la versión de OpenSSL/0.9.8 zg. Por qué? Yo necesito este tipo de actualizaciones con el fin de cumplir con los nuevos ATS iOS 9 requisitos.

4voto

Lory Lory Puntos 153

Para Mac OS X Yosemite

  1. Actualización de openssl por cerveza a la versión >= 1.0.2 d
  2. TLS 1.2 funciona sólo con apache 2.4 y en realidad MAMP se sigue dando con apache 2.2. SOLUCIÓN: descargue e instale la versión más reciente de AMPPS que ejecuta una versión de apache 2.4.x
  3. crear un certificado autofirmado con sha256 (según lo solicitado por iOS 9) con

    openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

y ahorrar server.key y server.crt a /Applications/AMPPS/apache/conf

  1. Asegúrese de que ssl módulos se cargan en el interior de httpd.conf archivo de AMPPS
  2. Editar el archivo /Applications/AMPPS/apache/conf/extra/httpd-ssl.conf agregar:


<VirtualHost localhost:443>
   DocumentRoot "/Applications/AMPPS/www"
   ServerName localhost
   SSLEngine on
   SSLProtocol all -SSLv2 -SSLv3
   SSLHonorCipherOrder on
   SSLCertificateFile "/Applications/AMPPS/apache/conf/server.crt"
   SSLCertificateKeyFile "/Applications/AMPPS/apache/conf/server.key"
</VirtualHost>

dentro de

<IfModule ssl_module> ... </IfModule> 
  1. iOS 9 simulador va a molestar cada vez que usted usa NSURLSession provocar un error 9813 diciendo que el certificado no es válido (porque es un auto firmado). Así que en cada clase donde se va a utilizar NSURLSession hacer, por ejemplo, los siguientes:


class LoginService: NSObject, NSURLSessionDelegate {

func URLSession(session: NSURLSession,
    task: NSURLSessionTask,
    didReceiveChallenge challenge: NSURLAuthenticationChallenge,
    completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?)
    -> Void) {

    completionHandler(NSURLSessionAuthChallengeDisposition.UseCredential, NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!))
}

...

func requestLoginWithURL (requestURL: NSURL, completionHandler: (success: Bool?) -> Void) {
    let configuration =
    NSURLSessionConfiguration.defaultSessionConfiguration()

    let urlRequest: NSURLRequest = NSURLRequest(URL: requestURL)

    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue:NSOperationQueue.mainQueue())

    /*
    dataTaskWithRequest: creates an HTTP request for the specified URL request object, and calls a handler upon completion.
    */
    let task = session.dataTaskWithRequest(urlRequest, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in

...
}

donde la función URLSession es un delegado que será evitar que la aplicación se bloquea debido a que el certificado autofirmado y aceptará de todos modos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X