meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
linux:apache2 [2013/04/09 23:50] – [Usar conexiones seguras con SSL] lclinux:apache2 [2014/04/16 11:33] (actual) – borrado lc
Línea 1: Línea 1:
-====== Apache 2 ====== 
- 
-  * Para instalar el Apache2 <code>apt-get install apache2</code> 
-  * Para arrancar el apache <code>/etc/init.d/apache2 start</code> 
-  * Para recargar la configuración del apache <code>/etc/init.d/apache2 reload</code> 
-  * Para ver el estado del servidor apache <code>apache2ctl status</code> 
- 
-<note>Los archivos de configuración se encuentran en /etc/apache2/</note> 
- 
-===== Restricción de acceso  ===== 
- 
-Podremos restringir el acceso de dos maneras: Por usuario y por IP  
- 
-Para restringir por usuario, añadimos lo siguiente a la configuración del apache  
-<file> 
-<Location /url> 
-AuthType Basic 
-AuthName "Paco" 
-AuthUserFile /ruta/fichero.pass 
-Require valid-user 
-</Location> 
-</file> 
-De esa manera cerramos el acceso a [[http://ip/url|http://IP/url]] y todo lo que haya por debajo. El /ruta/fichero.pass es un fichero donde estarán los usuarios válidos. Lo podemos crear manual o con una pequeña herramienta que trae apache, el htpasswd.  
- 
-Para hacerlo a mano, sólo hay que tener en cuenta que el formato que sigue el fichero es nombreusuario:contraseña. La contraseña se puede obtener usando mkpasswd 
- 
-Con el htpasswd, bastaría con htpasswd -mb /ruta/fichero.pass usuario contraseña 
- 
-Para restringir por IPs, usaremos 3 directivas: Order, Deny y Allow. Por ejemplo, para cerrar el acceso a todos y que sólo entren los de la subred 10.1.2.0/24, añadiríamos  
-<file> 
-Order Allow,Deny 
-Allow from 10.1.2.0/24 
-Deny from all 
-</file> 
-Tanto las restricciones por IP como las de usuarios tienen que ir dentro de un <Location>, <Directory> o en un fichero .htaccess 
- 
-===== Usar conexiones seguras con SSL  ===== 
- 
-  * Habilitamos el módulo ssl: 
-<code>a2enmod ssl</code> 
- 
-  * Ejecutamos un script para crear nuestro certificado de seguridad para el servidor (estará autofirmado). 
-<code>apache2-ssl-certificate</code> 
- 
-Nos hará una serie de preguntas… 
-<code>apache2-ssl-certificate</code> 
- 
-<file> 
-creating selfsigned certificate 
-replace it with one signed by a certification authority (CA) 
-enter your ServerName at the Common Name prompt 
-If you want your certificate to expire after x days call this programm 
-with -days x 
- 
-Generating a 1024 bit RSA private key 
-........++++++ 
-....................++++++ 
- 
-writing new private key to '/etc/apache2/ssl/apache.pem' 
------ 
-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) [GB]:ES 
-State or Province Name (full name) [Some-State]:Canarias 
-Locality Name (eg, city) []:Las Palmas de Gran Canaria 
-Organization Name (eg, company; recommended) []:mi empresa 
-Organizational Unit Name (eg, section) []:mi empresa 
-server name (eg. ssl.domain.tld; required!!!) []:apache.miempresa.com 
-Email Address []:micorreo@miempresa.com 
-</file> 
-  * Dependiendo de nuestra configuración podemos hacer que la comunicación de nuestro sitio sea por defecto bajo SSL o crear otro sitio  
-**Si lo queremos por defecto la configuración sería de la siguiente forma:** 
- 
-Puesto que se va a usar para una aplicación, lo mejor (tanto lo más seguro como lo más cómodo) es forzar a que todas las conexiones vayan por https. Así, además, nos ahorramos tener dos configuraciones de lo mismo (una para http y otra para https). Para hacer que la configuración actual vaya por https, tocaremos el sites-available/default 
- 
-    - Pondremos la línea NameVirtualHost *:443 al principio  
-    - Dejamos la linea de VirtualHost como <VirtualHost *:443>  
-    - Añadimos las siguientes líneas, por ejemplo debajo de Serversignature on 
-<file>SSLEngine On 
- 
-SSLCertificateFile /etc/apache2/ssl/apache.pem</file> 
- 
-**Si no lo queremos por defecto, crearemos la configuración de “el sitio” para el servidor seguro basándonos en la que lleva por defecto:** 
- 
-<code>cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl</code> 
-<code>ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl</code> 
- 
-/etc/apache2/sites-enabled/ssl tiene que empezar de la siguiente manera: 
-<file> 
-NameVirtualHost *:443 
- 
-<VirtualHost *:443> 
- 
-ServerAdmin webmaster@localhost 
- 
-DocumentRoot /var/www/ssl.miempresa.net/htdocs 
- 
-<Directory /> 
- 
-Options FollowSymLinks 
- 
-AllowOverride None 
- 
-</Directory> 
- 
-<Directory /var/www/ssl.miempresa.net/htdocs> 
-</file> 
- 
-En  /etc/apache2/sites-enabled/default también hay que configurarlo de la misma forma: 
-<file> 
-NameVirtualHost *:80 
- 
-<VirtualHost *:80> 
- 
-ServerAdmin webmaster@localhost 
- 
-DocumentRoot /var/www/miempresa.net/htdocs 
- 
-<Directory /> 
- 
-Options FollowSymLinks 
- 
-AllowOverride None 
- 
-</Directory> 
- 
-<Directory /var/www/miempresa.net/htdocs> 
- 
-</file> 
- 
-Por último, sólo basta añadir dentro del fichero “/etc/apache2/sites-enabled/ssl” en cualquier lugar (por ejemplo justo debajo de “ServerSignature On”): 
-<file> 
-SSLEngine On 
- 
-SSLCertificateFile /etc/apache2/ssl/apache.pem 
-</file> 
- 
-  * Después hay que indicarle al apache que escuche peticiones por https y use ese certificado.  
-Para ello añadir al fichero /etc/apache2/ports.conf la línea: 
-<file> 
-Listen 443 
-</file> 
-  * Hay que asegurarse también de que el módulo para SSL está cargado. Para ello, miramos en el directorio /etc/apache2/mods-enabled si existen los ficheros ssl.conf y ssl.load. Si no están, ejecutamos  
-<code>cd mods-enabled 
- 
-ln -s ../mods-available/ssl.* . 
-</code> 
- 
- 
-  * Y por último, reiniciamos apache2: 
-<code>/etc/init.d/apache2 force-reload</code> 
- 
-===== Configuración por directorios con .htaccess  ===== 
- 
-Podemos colocar la configuración a los dentro del propio directorio, a través de los ficheros .htaccess.  
- 
-Primero hay que colocar un AllowOverride en el <Directory> donde queremos poder cambiar su configuración con los .htaccess. El .htaccess se aplicará además a todos los subdirectorios.  
- 
-El AllowOverride define qué parámetros de configuración se pueden modificar desde los .htaccess. Lo más habitual será ponerle un All para poder cambiar cualquier cosa o un None para que no se pueda cambiar nada.  
-<file> 
-<Directory /directorio/que/quermos/cambiar>  
- 
-AllowOverride All 
- 
-... 
- 
-</Directory> 
-</file> 
-Dentro de los .htaccess podremos poner casi cualquier directiva que se puede poner en un <Directory>. En la documentación de las directivas siempre aparece una pequeña cabecera con cierta información de cada directiva, y hay una («Context») que dice si esa directiva puede ir en un .htaccess o no.  
- 
- 
- 
-==== Referencias ==== 
-Blog de jHernandez [[http://jhernandez.gpltarragona.org/blog/?p=239|http://jhernandez.gpltarragona.org/blog/?p=239]] 
-