Utilizando el nuevo y gratuito servicio AWS Certificate Manager

Un certificado SSL sirve, dentro de otras cosas, para darle un nivel de seguridad mayor al usuario de una página web al encriptar su contenido. Ahora veremos como utilizar la nueva herramienta gratuita de Amazon la cual crea certificados SSL.

Origen: AWS Certificate Manager

Hace ya un tiempo que me llegó el mail de amazon contándome de esta nueva funcionalidad, pero no fue hasta el día de hoy cuando necesité ocuparla que de verdad me di el tiempo de revisarla.

En la actualidad tener un certificado SSL es una necesidad, especialmente y usas datos personales o simplemente para el envío de contraseñas, ya que además los buscadores privilegian en el ranking las páginas que utilizan este protocolo y disminuyes la probabilidad de que tu sitio pueda ser vulnerado.

A continuación describiremos algunos de los pros y contras de este nuevo servicio.

Pros del AWS Certificate Manager :

  1. Es muy sencillo solicitar un nuevo certificado.
  2. En minutos puedes tener el certificado funcionando con un Cloud Formation o con un Elastic Load Balancer de Amazon.
  3. Si usas replicación, no tienes que configurar cada máquina, simplemente lo instalas en los servicios mencionados anteriormente. En especial si  usas escalamiento horizontal.
  4. Al tener el certificado fuera de la máquina disminuyes la carga de esta ( CPU ).

Contras del AWS Certificate Manager :

  1. No sirve para la instalación directa en una instancia. Solo sirve con los servicios antes mencionados.
  2. NO puede ser ocupado fuera de Amazon.
  3. Aún no disponible en todas las zonas.

 

Si bien los Pros y Contras del AWS Certificate Manager pueden parecer algo restrictivos ( ya que lo son ), la verdad es que es un servicio muy fácil de ocupar. En unos minutos tuve un sitio funcionando en una red privada nueva, con una máquina nueva y un balanceador de carga nuevo que además poseía el certificado generado por Amazon.

 

Certificado SSL de Amazon
Certificado SSL de Amazon usado para Cubopolis.com

 

Por mi parte lo estaré probando en un nuevo proyecto para ver como me funciona en general, pero no debería tener problemas relacionados.

Si eres de los que ha comprado certificados en el pasado, o simplemente haya tenido que configurar servidores con ellos, entenderás lo útil que puede ser esta herramienta.

Si no quieres utilizar AWS Certificate Manager para generar los certificados SSL, además de no querer pagar una enormidad por ellos, te recomiendo leer este post sobre Let’s Encrypt que te ayuda a generar certificados SSL validados de manera gratuita.

 

La forma sencilla de incluir AWS en YII Framework ( Ejemplo con S3 )

Hace poco me vi en la necesidad de generar máquinas auto replicables en EC2 y me di cuenta de que mi arquitectura tenía un pequeño problema.

Si bien la base de datos era externa usando AmazonRDS la inserción de las imágenes en el servidor era local, por lo que si la imagen se subía en una replica y esta era eliminada la imagen también se perdía.

Estuve debatiendo bastante si subir las imágenes a la base de datos como blobs o si tener un servidor externo de imágenes. Al final decidí utilizar AmazonS3 para el almacenamiento de las imágenes.

Amazon posee una amplia gama de scripts y códigos ya incorporados para hacer todas las consultas hacia TODOS sus servicios, además de muchos SDKs para los distintos lenguajes. En mi caso SDK for PHP.

Ahora, la implementación en YII para mi no fue trivial :

  1. Al usar Yii::import no me cargaban todas las clases necesarias. Esto es debido a que el SDK también tiene su propio autoload.
  2. Cargar todas las clases de manera manual es tedioso.
  3. Crear un ClassMap no era una buena opción debido a que el SDK es muy variable y posee muchas actualizaciones.

La solución más sencilla que encontré fue en otro blog. Lenzy simplemente edito el autoload del SDK para que funcionara con el de Yii.

Que es lo que haremos;

  1. Incluiremos el código del SDK en la carpeta protected/vendors/AWS de YII ( Ojo, crear la carpeta AWS )
  2. Modificaremos el loader del SDK
  3. Haremos una pequeña prueba 😀

Asumiendo que todos sabemos como copiar y pegar, nos saltaremos a la parte de modificar el loader. En el archivo sdk.class.php que se encuentra en el root de la carpeta del sdk ( En nuestro caso la carpeta AWS en protected/vedors ). reemplazaremos la siguiente línea de código:

spl_autoload_register(array('CFLoader', 'autoloader'));

con esta :

spl_autoload_register(array('CFLoader', 'autoloader'),false,true);

Con esto dejaremos de tener problemas que las clases no son encontradas, como por ejemplo las clases que aparecen a continuación, además del problema de que no se cargan las credenciales que están en el archivo de configuración.

  1. AmazonSES
  2. AmazonS3
  3. CFRuntime
  4. CFUtilities
  5. CFComplexType
  6. RequestCore
  7. CFRequest
  8. CFResponse
  9. CFSimpleXML
  10. CFCredential
  11. CFCredentials

Para probarlo primero en el archivo de configuración ponemos nuestras credenciales. El archivo es llamado config.inc.php y simplemente cambiamos los valores de key y de secret.

		// Amazon Web Services Key. Found in the AWS Security Credentials. You can also pass
		// this value as the first parameter to a service constructor.
		'key' => 'MYKEY',

		// Amazon Web Services Secret Key. Found in the AWS Security Credentials. You can also
		// pass this value as the second parameter to a service constructor.
		'secret' => 'MYSECRET PASS',

Ahora para probarlo simplemente en una action de prueba para un controlador ingresamos el siguiente código

                    Yii::import('application.vendors.*');
                    require_once('AWS/sdk.class.php');


                    $s3 = new AmazonS3();
                    $bucketname = "elnombre de mi bucket";

                    $response = $s3->create_object($bucketname, "NOMBRE ARCHIVO", array(
                        'fileUpload' => "DIRECCION DE MI ARCHIVO",
                        'acl' => $s3::ACL_PUBLIC
                            ));

Si todo sale bien luego de ejecutarlo podemos ir a la consola de administración para S3 y revisamos si el archivo fue creado satisfactoriamente.

Como cambiar la hora en un servidor Linux

Tengo varios servidores andando sin ningún problema ( La Mayoría en EC2). Actualmente me di cuenta que no los tenía a la hora correcta así que decidí arreglarlo. La solución más sencilla es unas un paquete llamado tzdata. Si quieren corroborar su hora en el sistema a través de línea de comandos simplemente usen «date». … Leer más

Agregar el MX record de Google apps en Route 53 de Amazon Web Services ( AWS )

Esto es super útil y sencillo pero hay que saber hacerlo.

Se asume que :

  1. Ya tienes el dominio con el cual quieres utilizar tus correos con Route 53.
Ahora lo que se tiene que hacer es agregar los MX RECORDS a tu HOSTED ZONE.
  1. Ingresa a https://console.aws.amazon.com/route53/
  2. Selecciona tu HOSTED ZONE y ve a su RECORD SET.
  3. Click en CREATE RECORD SET
  4. En type elegimos MX RECORD y ponemos la información de google como en la imagen que aparece a continuación.
  5. Y … a esperar no más…. se puede demorar algunas horas en actualizar el MX record.