Secure Socket Layer (SSL) se utiliza para cifrar el flujo de datos entre el servidor web y el cliente web (el navegador).
SSL hace uso de lo que se conoce como criptografía asimétrica, comúnmente denominada criptografía de clave pública (PKI). Con la criptografía de clave pública, se crean dos claves, una pública y otra privada. Todo lo cifrado con cualquiera de las claves sólo se puede descifrar con su clave correspondiente. Así, si un mensaje o flujo de datos fuera cifrado con la clave privada del servidor, podrá descifrarse únicamente utilizando su clave pública correspondiente, garantizando que los datos sólo puedan proceder del servidor.
El certificado SSL de Apache firmado por una autoridad certificadora (CA) confiable garantiza que el titular del certificado sea una persona u organización real. Sin un certificado firmado de confianza, sus datos pueden estar cifrados; sin embargo, es posible que la parte con la que se comunica no sea quien cree. Sin el certificado SSL de Apache, los ataques de suplantación de identidad serían mucho más comunes.
El kit de herramientas de openssl se utiliza para generar una clave privada RSA y CSR (solicitud de firma de certificado). También se puede utilizar para generar certificados autofirmados que se pueden utilizar con fines de prueba o para uso interno.
Paso 1: generar una clave privada
El primer paso es crear su clave privada RSA. Esta clave es una clave RSA de 1024 bits que está cifrada mediante Triple-DES y almacenada en formato PEM para que sea legible como texto ASCII.
openssl genrsa -des3 -out server.key 1024
Generación de clave privada RSA, módulo de 1024 bits de longitud
.........................................................++++++
........++++++
mi es 65537 (0x10001)
Ingrese la frase de contraseña PEM:
Verificación de contraseña: ingrese la frase de contraseña PEM:
Paso 2: generar una CSR (solicitud de firma de certificado)
Una vez generada la clave privada, se puede generar una Solicitud de firma de certificado. Luego, el CSR se utiliza de dos maneras. Lo ideal es que la CSR se envíe a una autoridad certificadora, como Verisign, quien verificará la identidad del solicitante y emitirá un certificado firmado. La segunda opción es autofirmar el CSR, lo que se demostrará en la siguiente sección.
Durante la generación de la CSR, se le solicitarán varios datos. Estos son los atributos X.509 del certificado. Una de las indicaciones será "Nombre común (por ejemplo, SU nombre)". Es importante que este campo se complete con el nombre de dominio completo del servidor que se protegerá mediante SSL. Si el sitio web a proteger es https://yourdomain.com, luego ingrese "sudominio.com" cuando se le solicite. El comando para generar la CSR es el siguiente:
openssl req -new -key server.key -out server.csr
Nombre del país (código de 2 letras) [GB]:IN
Nombre del estado o provincia (nombre completo) [Berkshire]:Karnataka
Nombre de la localidad (p. ej., ciudad) [Newbury]: Bangalore
Nombre de la organización (p. ej., empresa) [My Company Ltd]:Nombre de la empresa
Nombre de la unidad organizativa (p. ej., sección) []:Tecnología de la información
Nombre común (por ejemplo, su nombre o el nombre de host de su servidor) []:sudominio.com
Dirección de correo electrónico []:[email protected]
Por favor ingrese los siguientes atributos 'adicionales'
para ser enviado con su solicitud de certificado
Una contraseña reto []:
Un nombre de empresa opcional []:
Paso 3: eliminar la frase de contraseña de la clave
Un efecto secundario desafortunado de la clave privada con frase de contraseña es que el servidor web solicitará la frase de contraseña cada vez que se inicie. Obviamente, esto no es necesariamente conveniente ya que no siempre habrá alguien cerca para escribir la frase de contraseña, como después de un reinicio o un bloqueo. mod_ssl incluye la capacidad de utilizar un programa externo en lugar del cuadro de diálogo de contraseña integrado; sin embargo, esta tampoco es necesariamente la opción más segura. Es posible eliminar el cifrado Triple-DES de la clave, por lo que ya no será necesario escribir una frase de contraseña. Si la clave privada ya no está cifrada, es fundamental que este archivo solo sea legible por el usuario root. Si su sistema alguna vez se ve comprometido y un tercero obtiene su clave privada sin cifrar, será necesario revocar el certificado correspondiente. Dicho esto, utilice el siguiente comando para eliminar la frase de contraseña de la clave:
cp servidor.key server.key.org
openssl rsa -en servidor.key.org -fuera servidor.clave
El archivo server.key recién creado no tiene más frase de contraseña.
Paso 4: generar un certificado autofirmado
En este punto, deberá generar un certificado autofirmado porque no planea que una CA firme su certificado o desea probar su nueva implementación SSL mientras la CA firma su certificado. Este certificado temporal generará un error en el navegador del cliente en el sentido de que la autoridad certificadora de firma es desconocida y no confiable.
Para generar un certificado temporal válido por 365 días, emita el siguiente comando:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Firma bien
sujeto=/C=CH/ST=Berna/L=Oberdiessbach/O=Akadia AG/OU=Información
Tecnología/CN=public.akadia.com/Email=martin dot zahn en akadia dot ch
Obtener clave privada
Paso 5: Instalación de la clave privada y el certificado
Cuando se instala Apache con mod_ssl, crea varios directorios en el directorio de configuración de Apache. La ubicación de este directorio variará según cómo se compiló Apache.
servidor cp.crt /usr/local/apache/conf/ssl.crt
cp servidor.clave /usr/local/apache/conf/ssl.key
Paso 6: Configurar hosts virtuales habilitados para SSL
SSLEngine encendido
Archivo de certificado SSL /usr/local/apache/conf/ssl.crt/server.crt
ArchivoClaveCertificadoSSL /usr/local/apache/conf/ssl.key/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
Registros de CustomLog/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
Ahora reinicie Apache y verifique.
Póngase en contacto con nosotros.