informatica:linux:apache2
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| informatica:linux:apache2 [2012/11/08 09:25] – javi | informatica:linux:apache2 [2018/02/17 19:44] (current) – javi | ||
|---|---|---|---|
| Line 98: | Line 98: | ||
| ===== Proxy inverso ===== | ===== Proxy inverso ===== | ||
| + | |||
| + | |||
| + | |||
| ==== Habilitar módulos ==== | ==== Habilitar módulos ==== | ||
| Hay que habilitar los módulos creando los enlaces simbólicos: | Hay que habilitar los módulos creando los enlaces simbólicos: | ||
| - | / | + | |
| + | # ln -s ../ | ||
| + | # ln -s ../ | ||
| + | # ln -s ../ | ||
| + | # ln -s ../ | ||
| + | |||
| + | # ls -la | ||
| + | | ||
| proxy_http.load -> ../ | proxy_http.load -> ../ | ||
| proxy.load -> ../ | proxy.load -> ../ | ||
| + | proxy.conf -> ../ | ||
| rewrite.load -> ../ | rewrite.load -> ../ | ||
| + | |||
| + | También lo podemos habilitar con el comando: | ||
| + | # a2enmod proxy_http | ||
| + | |||
| + | Considering dependency proxy for proxy_http: | ||
| + | Enabling module proxy. | ||
| + | Enabling module proxy_http. | ||
| + | To activate the new configuration, | ||
| + | service apache2 restart | ||
| ==== Creando el virtual Host ==== | ==== Creando el virtual Host ==== | ||
| Line 152: | Line 172: | ||
| ===== SSL ===== | ===== SSL ===== | ||
| + | |||
| ==== Habilitar los módulos de ssl en apache ==== | ==== Habilitar los módulos de ssl en apache ==== | ||
| - | Crear enlace simbólico a ssl.conf y ssl.load en mods-enabled: | + | 1. Habilitar modulo SSL |
| - | | + | |
| - | #ln -s ../ | + | |
| - | #ln -s ../ | + | |
| - | o con: | + | 2. Generamos certificado: |
| - | | + | |
| - | + | openssl req $@ -newkey rsa:4096 -new -x509 -days 3650 -nodes -out / | |
| - | Generamos certificado: | + | |
| - | | + | |
| Otra forma: | Otra forma: | ||
| - | | + | |
| + | | ||
| < | < | ||
| # -x509 identifies that a certificate is required, rather than just a certificate request (see below). | # -x509 identifies that a certificate is required, rather than just a certificate request (see below). | ||
| Line 177: | Line 196: | ||
| # -keyout and -out specify where to store the certificate and key. The key should be root-readable only; the certificate can be world-readable, | # -keyout and -out specify where to store the certificate and key. The key should be root-readable only; the certificate can be world-readable, | ||
| </ | </ | ||
| - | |||
| Rellenamos los datos | Rellenamos los datos | ||
| Line 189: | Line 207: | ||
| - | | + | |
| < | < | ||
| Line 196: | Line 214: | ||
| SSLEngine on | SSLEngine on | ||
| SSLCertificateFile / | SSLCertificateFile / | ||
| + | SSLCertificateKeyFile / | ||
| + | |||
| SetEnvIf User-Agent " | SetEnvIf User-Agent " | ||
| | | ||
| Line 220: | Line 240: | ||
| </ | </ | ||
| - | ==== Pedir un certificado ==== | + | ==== Configurar autenticación con certificado |
| - | Para pedir un certificado | + | Primero creamos la CA en el servidor |
| + | openssl genrsa -out ca.key 1024 | ||
| + | Luego una petición de certificado y lo firmamos: | ||
| + | openssl req -new -key ca.key -out ca.csr | ||
| + | openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt | ||
| + | |||
| + | Ahora creamos el certificado para el apache: | ||
| + | openssl genrsa -out server.key 1024 | ||
| + | openssl req -new -key server.key -out server.csr | ||
| + | openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt | ||
| + | |||
| + | |||
| + | |||
| + | === Cliente === | ||
| + | Se genera | ||
| + | Primero se genera la clave privada: | ||
| + | openssl genrsa -out client.key 1024 | ||
| + | Luego una request de certificado: | ||
| + | openssl req -new -key client.key -out client.csr -config openssl.cnf | ||
| + | |||
| + | Se envía esta request al server para que la firme. Desde el servidor se firma: | ||
| + | openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt | ||
| + | |||
| + | Creamos el certificado con la clave privada y la clave pública: | ||
| + | openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 | ||
| + | Ahora importamos el p12 en el navegador | ||
| + | |||
| + | He tenido que añadir esto en virtualhost para que valide el certificado: | ||
| + | SSLCACertificateFile / | ||
| + | |||
| + | Ahora en el servidor configuramos apache para que pida el certificado: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Podemos poner mas restricciones, | ||
| < | < | ||
| < | < | ||
| Line 232: | Line 292: | ||
| Una de las condiciones de validación puede ser: | Una de las condiciones de validación puede ser: | ||
| - | | + | Por OU |
| + | SSLRequire %{SSL_CLIENT_S_DN_OU} in {"LEGIDO"} | ||
| + | Por IP: | ||
| + | SSLRequire %{REMOTE_ADDR} =~ m/ | ||
| ==== Sacar información de un certificado: | ==== Sacar información de un certificado: | ||
| Line 598: | Line 660: | ||
| sudo apachectl graceful | sudo apachectl graceful | ||
| + | | ||
| + | ===== Habilitar campos "last modified" | ||
| + | |||
| + | En la imagen de docker por defecto NO aparecen esos atributos. Cambios: | ||
| + | |||
| + | / | ||
| + | |||
| + | Descomentar esta linea: | ||
| + | |||
| + | Include conf/ | ||
| + | | ||
| + | ===== Redirecciones ===== | ||
| + | |||
| + | * El dominio raiz (y solo el dominio raiz) se redirecciona a otra URL y se para de procesar mas reglas | ||
| + | * Se pasan todas las peticiones a un backend Tomcat | ||
| + | |||
| + | < | ||
| + | RewriteEngine on | ||
| + | RewriteRule ^/$ http:// | ||
| + | |||
| + | ProxyRequests off | ||
| + | ProxyPreserveHost on | ||
| + | ProxyPass | ||
| + | ProxyPassReverse / http:// | ||
| + | </ | ||
| + | |||
| + | ==== Herramientas online útiles ==== | ||
| + | |||
| + | * Para generar: | ||
| + | |||
| + | https:// | ||
| + | |||
| + | * Para detectar qué regla se aplica en función de la url que se pone: | ||
| + | |||
| + | http:// | ||
| + | |||
informatica/linux/apache2.1352366734.txt.gz · Last modified: (external edit)
