Home Programación HTTPS (Hypertext Transfer Protocol Secure)

Por Juan Carlos Sosa, @JuanC_Sosa

Alguna vez te has preguntado ¿cómo se logra obtener o qué es el famoso HTTPS que vemos en algunas direcciones URL?.

¿Qué es?

Utiliza un cifrado basado en SSL/TLS para crear un canal cifrado (cuyo nivel de cifrado depende del servidor remoto y del navegador utilizado por el cliente) más apropiado para el tráfico de información sensible que el protocolo HTTP. De este modo se consigue que la información sensible (usuario y claves de paso normalmente) no pueda ser usada por un atacante que haya conseguido interceptar la transferencia de datos de la conexión, ya que lo único que obtendrá será un flujo de datos cifrados que le resultará imposible de descifrar.

El puerto estándar para este protocolo es el 443. (Fuente: es.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure )

¿Cómo obtengo un Certificado SSL para mi sitio web?

A continuación una descripción paso a paso :

 

1 Asegurate que OpenSSL esté instalado en tu PATH de Linux.

 

2 Crea una llave privada RSA para tu servidor  Apache (será Triple-DES encriptada y en formato PEM): $ openssl genrsa -des3 -out server.key 1024

NOTA: El tamaño de la llave 1024 , 2048 , 4096   <— Depende del tipo del certificado

Haz un respaldo del archivo de llave server.key en un lugar seguro. Si quieres ver los detalles de la llave privada que acabas de crear entonces usa el siguiente comando: $ openssl rsa -noout -text -in server.key

Si es necesario puedes crear una versión no encriptada PEM de la llave privada con: $ openssl rsa -in server.key -out server.key.unsecure

NOTA: Esto se hace cuando no queremos que nos pida el PASSPRASHE cada vez que iniciamos el Apache (httpd) y así en lugar de usar la llave encriptada en la configuración del dominio agregamos la referencia a la llave no encriptada.

 

3 Crea un archivo CSR (Certificate Signing Request) utilizando la llave privada RSA que creamos previamente y para esto utilizamos el siguiente comando: $ openssl req -new -key server.key -out server.csr

En este paso nos pedirá información acerca de el dominio que queremos tener bajo HTTPS, hay que asegurarnos de ingresar el FQDN (“Fully Qualified Domain Name”) del servidor cuando el OpenSSL te lo pregunte lo que sería el “CommonName”, ejemplo cuando generamos un CSR para un sitio web el cual será accesado de la forma  https://www.foo.dom/,  entonces tendremos que ingresar “www.foo.dom” en este campo. Al final después de creado el archivo podrás ver el contenido del CSR utilizando: $ openssl req -noout -text -in server.csr

 

4  Ahora debemos enviar este el Certificate Signing Request (CSR) a un Autoridad Certificadora (CA) al cual deberás pagar para que te firme o valide. Una vez que el CSR ha sido firmado entonces obtendrás un Certificado el cual podrás usar en tu servidor Apache; el Certificado que te manden lo almacenas en un archivo con terminación .crt (server.crt ). Estas son algunas Autoridades Certificadoras:

Verisign http://digitalid.verisign.com/server/apacheNotice.htm

Thawte http://www.thawte.com/

CertiSign Certificadora Digital Ltda. http://www.certisign.com.br

IKS GmbH http://www.iks-jena.de/leistungen/ca/

Uptime Commerce Ltd. http://www.uptimecommerce.com

BelSign NV/SA http://www.belsign.be

GeoTrust http://www.geotrust.com/

Si desear ver los detalles de tu certificado firmado necesitas usar el siguiente comando: $ openssl x509 -noout -text -in server.crt

 

5 Ahora tendremos dos archivos: server.key y server.crt. Estos pueden ser utilizados en tu archivo de configuración httpd.conf  o en el Virtualhost del dominio de la siguiente manera:

      SSLCertificateFile    /path/to/this/server.crt

SSLCertificateKeyFile /path/to/this/server.key

6 Necesitaras una  IP dedicada para cada SSL si es que en el server alojas más de un dominio,  en este caso deberás solicitarla con tu proveedor de servicios de hosting. El archivo server.csr ya no se necesita más.

 

Espero que esta información te sea útil.

Similar articles

Leave a Reply