Apache mod_rewrite in combinatie met proxypass

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 14:09
Ik ben bezig met het opnieuw opzetten van een ejbca PKI en een onderdeel daarvan wordt een Apache proxy om crt en crl verzoeken door te sturen naar ejbca. Ik krijg echter niet precies wat ik wil met mod_rewrite in combinatie met proxypass.

Ik draai dit allemaal op een Ubuntu 18.04 met Apache 2.4

Dit is mijn configuratie van de virtual host:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost crt.vanleuverden.nl:80>
  <Proxy "*">
    Order deny,allow
    Allow from all
  </Proxy>
<Location "/">
  RewriteEngine  on
  RewriteBase    "/crt/"
  RewriteRule "^(.*)$" "http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist?cmd=cacert&issuer=CN\%3D$1\%2COU\%3DVanLeuverden+Security\%2CO\%3DVanLeuverden\%2CC\%3DNL&level=0" [P]
  ProxyPassReverse "http://127.0.0.1:8080/"
</Location>
LogLevel alert rewrite:trace6
</VirtualHost>

Echter wat er mis gaat is dat de rewrite var/www/html/crt/ voor de certificaatnaam plakt, zie hier in de log files (en dan specifiek de laatste regel):
code:
1
2
3
4
5
6
7
8
9
10
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] init rewrite engine with requested uri /crt/VanLeuverden+Network+CA+G5
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] pass through /crt/VanLeuverden+Network+CA+G5
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] add path info postfix: /var/www/html/crt -> /var/www/html/crt/VanLeuverden+Network+CA+G5
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] strip per-dir prefix: /var/www/html/crt/VanLeuverden+Network+CA+G5 -> var/www/html/crt/VanLeuverden+Network+CA+G5
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] applying pattern '^(.*)$' to uri 'var/www/html/crt/VanLeuverden+Network+CA+G5'
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] rewrite 'var/www/html/crt/VanLeuverden+Network+CA+G5' -> 'http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist?cmd=cacert&issuer=CN%3Dvar/www/html/crt/VanLeuverden+Network+CA+G5%2COU%3DVanLeuverden+Security%2CO%3DVanLeuverden%2CC%3DNL&level=0'
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] split uri=http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist?cmd=cacert&issuer=CN%3Dvar/www/html/crt/VanLeuverden+Network+CA+G5%2COU%3DVanLeuverden+Security%2CO%3DVanLeuverden%2CC%3DNL&level=0 -> uri=http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist, args=cmd=cacert&issuer=CN%3Dvar/www/html/crt/VanLeuverden+Network+CA+G5%2COU%3DVanLeuverden+Security%2CO%3DVanLeuverden%2CC%3DNL&level=0
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] escaped URI in per-dir context for proxy, http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist -> http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] forcing proxy-throughput with http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist
[crt.vanleuverden.nl/sid#7f4ecc8914a8][rid#7f4ecc8090a0/initial] [perdir /] go-ahead with proxy request proxy:http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist?cmd=cacert&issuer=CN%3Dvar/www/html/crt/VanLeuverden+Network+CA+G5%2COU%3DVanLeuverden+Security%2CO%3DVanLeuverden%2CC%3DNL&level=0 [OK]

Ik dacht dat ik simpel de reguliere expressie kon veranderen van "^(.*)$" naar "^/crt/(.*)$" maar dat werkt helaas niet (de redirect gaat dan helemaal mis). Dat is wel wat de handleiding volgens mij voorstelt. Daarom begrijp ik het niet.

Ik heb ook nog gekeken naar de logregel waar "add path info postfix" staat. Op internet kom ik tegen dat dat probleem opgelost kan worden door de DPI flag, maar ook daarmee blijft het probleem persisteren.

Heeft iemand een idee? :)

Beste antwoord (via Dennis op 05-10-2019 17:10)


  • Juup
  • Registratie: Februari 2000
  • Niet online
Misschien omdat de Rewrite in een
code:
1
<Location/>
staat?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Misschien omdat de Rewrite in een
code:
1
<Location/>
staat?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 28-09 21:59

Hero of Time

Moderator LNX

There is only one Legend

Wat is je plan met de RewriteBase optie? Als je kijkt naar je log regels die je hier post, lijken regels 3 en 4 te suggereren dat er feitelijk niets gebeurt.

In je ProxyPass URI heb je $1 staan als variabele die het mee moet geven. Dat lijkt je webroot te zijn als relatief pad. En dat wil je schijnbaar niet. Dus zal je een andere variabele moeten gebruiken, of de waarde niet gaan herschrijven. Had je https://httpd.apache.org/docs/current/mod/mod_rewrite.html al gelezen?

Als je trouwens zaken in op /crt/ worden opgevraagd door wilt sturen, is het dan niet logischer om <location /crt> te gebruiken ipv <location />?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 14:09
Dank voor jullie adviezen @Juup en @Hero of Time! Inderdaad was het niet slim om de Location directive op deze wijze te gebruiken. De RewriteBase heb ik uiteindelijk ook weggehaald en na wat proberen heb ik nu de volgende werkende config:
code:
1
2
3
4
5
6
7
8
9
<VirtualHost crt.vanleuverden.nl:80>
  <Proxy "*">
    Order deny,allow
    Allow from all
  </Proxy>
  RewriteEngine  on
  RewriteRule "^/crt/(.*)$" "http://127.0.0.1:8080/ejbca/publicweb/webdist/certdist?cmd=cacert&issuer=CN\%3D$1\%2COU\%3DVanLeuverden+Security\%2CO\%3DVanLeuverden\%2CC\%3DNL&level=0" [P,DPI] 
  ProxyPassReverse "/crt" "http://127.0.0.1:8080/"
</VirtualHost>

Acties:
  • +1 Henk 'm!

  • ripperke
  • Registratie: Augustus 2003
  • Laatst online: 19-08 16:06

ripperke

w00t!

Ter info:
code:
1
2
3
4
  <Proxy "*">
    Order deny,allow
    Allow from all
  </Proxy>

Is Apache 2.2 config syntax. Dat zou in 2.4
code:
1
require ...
worden, maar dat heb je enkel nodig bij een forward proxy (ProxyRequests On). In jouw geval kan je de volledige <Proxy> block dus weglaten.

If TCP/IP handshaking was less formal, perhaps SYN/ACK would be YO/WASSUP


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 14:09
Dank voor de tip @ripperke. Ik ga deze verwijderen. Ik heb trouwens ook nog
code:
1
Header set Content-Type "application/pkix-crl"

toegevoegd, omdat EJBCA niet het juiste content-type lijkt mee te geven (conform RFC 5280).
Pagina: 1