|
Buscar |
Configuración de un certificado SSL en la Release1El protocolo SSL (Secure Socket Layer) está destinado a encriptar de manera segura los datos intercambiados entre dos máquinas. En su servidor dedicado, puede ser útil utilizar SSL con el fin de protener datos sensibles. Encontrará más información sobre el funcionamiento de SSL en esta página. Procedimiento
Esta guía le ayudará a crear su propio certificado SSL con sus datos de manera gratuita y posteriormente instalar este nuevo certificado en los servicios que desee de su servidor. Igualmente si ha comprado un certificado de pago y dispone de una pareja de 2 ficheros (KEY y CRT) válida, podrá utilizar esta guía para instalar los dos ficheros de su certificado en los servicios deseados.
La activación de SSL en Apache se hace desde SSH. Para ello deberá conectarse a través de SSH a su servidor (usuario root). Verificación El servidor simple (HTTP) funciona sobre el puerto 80. El puerto en modo SSL (HTTPS) funciona sobre el puerto 443. Verificamos primero si este puerto ya está escuchándose por Apache : [root@crashtest root]# netstat -tanpu | grep ":443" [root@crashtest root]# Si no hay resultado (como es el caso), el servidor aún no ha sido activado para el SSL. Hace falta descomentar la opción de SSL. En caso de que exista resultado, podemos pasar al segundo paso. Activación Introducimos el comando en SSH : # pico /etc/sysconfig/apache Para descomentar, retiramos el caracter # delante de la opción en cuestión : # Uncomment to active SSL OPTIONS="-DSSL" Guardamos el fichero con ctrl+x y con 'Y' o bien 'S', luego pulsamos enter. A continuación reiniciamos Apache para aplicar los cambios. # /etc/init.d/httpd restart Parada de httpd : [ OK ] Inicio de httpd : [ OK ] Ahora si verificamos el puerto 443, aparecerá Apache escuchando en este puerto : [root@crashtest root]# netstat -tanpu | grep ":443" tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3291/httpd Seguridad
Existe un fallo de seguridad muy importante en las versiones de OpenSSL inferiores a 0.9.6k. Hace falta obligatoriamente aplicar los parches de seguridad de OVH antes de utilizar SSL sobre las máquinas con versiones de la Release antiguas. Para verificar la versión de su SSH, introduzca : [root@crashtest root]# rpm -qa | grep ssl Debería obtener una salida del tipo : openssl-devel-0.9.6k-1 openssl-0.9.6k-1 openssl-perl-0.9.6k-1 o superior. Si tiene una versión inferior a la que aparece arriba, (por ejemplo openssl-0.9.6i), debe actualizarse y aplicar los parches de seguridad antes de poder utilizar SSL. Si es igual o superior, puede pasar al paso siguiente. Para aplicar los parches de seguridad, siga la guía : ReleasePatchSecuridad. Ahora que el servidor tiene el soporte SSL activado y accesible, nos hace falta un certificado SSL. Puede usar un certificado autofirmado gratuito para ello, aunque algunos navegadores dan un mensaje de aviso en este tipo de certificados. Los certificados de pago no dan este aviso, pero eso no significa que la seguridad de las transmisiones de datos sea menor. Si necesita un certificado de pago y tiene el nombre de dominio registrado con OVH, puede comprar un certificado de OVH. Si tiene el nombre de dominio registrado en otro registrador, puede contactar con una empresa de certificados o bien contratar un certificado en su registrador actual. En esta guía le explicamos cómo crear un certificado gratuito autofirmado. Para contratar un certificado de pago con OVH, consulte la guía : PedidoSsl Creación de un certificado autofirmado Diríjase a la carpeta donde se almacenan las keys de SSL en Apache: [root@crashtest root]# cd /usr/local/apache/conf/ssl.key A continuación cree una key con el comando siguiente : [root@crashtest ssl.key]# openssl genrsa 1024 > mi_dominio.com.key [root@crashtest ssl.key]# chmod -c 400 mi_dominio.com.key
Ahora vamos a rellenar la solicitud de certificado y responder a las preguntas : [root@crashtest ssl.key]# openssl req -new -key mi_dominio.com.key > mi_dominio.com.csr Using configuration from /usr/share/ssl/openssl.cnf You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. Country Name (2 letter code) [AU]: ES State or Province Name (full name) [Some-State]: Madrid Locality Name (eg, city) []:Madrid Organization Name (eg, company) [Internet Widgits Pty Ltd] : OVH HISPANO Organizational Unit Name (eg, section) []: Soporte Common Name (eg, YOUR name) []: www.mi_dominio.comEmail Address []: mi_correo@mi_dominio.com__Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: Certificado An optional company name []: OVH Luego se autofirma el certificado : [root@crashtest ssl.key]# openssl x509 -req -days 365 -in mi_dominio.com.csr -signkey mi_dominio.com.key -out mi_dominio.com.crt Signature ok subject=/C=ES/ST=MADRID/L=MADRID/O=OVH HISPANO/OU=Soporte/CN= www.mi_dominio.com/Email=mi_correo@mi_dominio.comGetting Private key [root@crashtest ssl.key]# Luego basta con desplazar los ficheros a los directorios correctos : [root@crashtest root]# mv /usr/local/apache/conf/ssl.key/mi_dominio.com.crt /usr/local/apache/conf/ssl.crt/ [root@crashtest root]# mv /usr/local/apache/conf/ssl.key/mi_dominio.com.csr /usr/local/apache/conf/ssl.csr/ y nuestro certificado está ya listo. Modificamos en SSH nuestro fichero httpd.conf : [root@crashtest root]# pico /httpd.conf y buscamos esta primera sección para verificar que el soporte SSL está activo : ## ## SSL Support ## ## When we also provide SSL we have to listen to the ## standard HTTP port (see above) and to the HTTPS port ## < IfDefine SSL>Listen 80 Listen 443 </IfDefine> En la segunda sección, a la altura de "NameVirtualHost" añadimos la IP con el puerto 443: # # Luego buscamos la tercera sección y modificamos el Virtual Host por defecto para añadir nuestro nuevo certificado
< < #General setup for the virtual host mi_correo@mi_dominio.com#SSL Engine Switch: #Enable/Disable SSL for this virtual host. SSLEngine on #Server Certificate: SSLCertificateFile /usr/local/apache/conf/ssl.crt/mi_dominio.com.crt #Server Private Key: SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/mi_dominio.com.key Ya tenemos indicado el emplazamiento del certificado. Ahora, hace falta añadir el Virtual Host para el sitio. El virtual host se debe situar entre <If Define SSL> y </If Define>. < mi_correo@mi_dominio.comSSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/mi_dominio.com.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/mi_dominio.com.key <Files ~ ".(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost> </IfDefine> A continuación, guardamos la configuración y reiniciamos Apache : [root@crashtest www]# /etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [ OK ] [root@crashtest www]# Puede añadir un dominio adicional al certificado, añadiendo simplemente un Virtual Host más. Añadimos para ello otra sección Virtual Host después del que acabamos de crear, la sección </VirtualHost> y antes del </IFDefine> : < mi_correo@mi_dominio.comSSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/mi_dominio.com.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/mi_dominio.com.key <Files ~ ".(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" </VirtualHost> Al utilizar el mismo certificado para un dominio distinto, es posible que dé un mensaje de advertencia por el CN (Common Name) del certificado. Puede jugar con los Wildcard para evitar el error. Si ha efectuado bien las manipulaciones, puede a partir de ahora acceder a sus sitios web a través de HTTPS. No olvide que una alerta se mostrará si utiliza un certificado que se ha generado usted mismo, y que para todos los dominios del servidor, sólo se utilizará un único certificado. Como en el ejemplo mostrado, todos los dominios añadidos en la sección "VirtualHost" responderán con el certificado generado al principio de la guía. Si necesita poner en marcha varios sitios web bajo HTTPS con certificados distintos, cuenta con la posibilidad de utilizar varias IPs, una por cada dominio. : ServidorCertificados :: Configuración de un certificado SSL en la Release2 : PleskCertificadosSSL :: Configuración de un certificado SSL en Plesk : SslRelease2 :: Configuración de un certificado SSL de OVH en la Release2 : SslPlesk :: Configuración de un certificado SSL de OVH en Plesk |