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: 2015/04/13 20:19 (external edit)