Jeg kjører min egen Subversion-server hjemme. Jeg kjører Subversion igjennom Apache med mod_dav_svn, fordi jeg synes dette er en elegant løsning. Jeg er fanatisk når det gjelder sikkerhet. Og dette går ikke alltid hånd-i-hånd.
Alt virket tilsynelatende fint, men jeg kunne ikke flytte eller kopiere filer i Subversion repositoriet over HTTPS. Jeg fikk feilmelding 502 Bad Gateway hver gang jeg prøvde å sjekke inn endringer hvor jeg hadde brukt svn move eller svn copy.
Så da var det bare å bytte til HTTP hver gang jeg skulle flytte og kopiere filer, men dette blir slitsomt i lengden og er lite produktivt. Sikkert er det heller ikke. Derfor har jeg ofte brukt ukryptert forbindelse for enkelte av prosjektene.
Jeg kom i går over en artikkel som beskrev problemet med å flytte filer i Subversion, og som kom med noen løsningsalternativer. Problemet mitt lå i Apache og mod_ssl, at Apache ikke ser hvilken port forespørselen kom på. Selv om det var brukt https og port 443, så trodde Apache at forbindelsen gikk over port 80. Dette fant jeg ut ved å åpne https://localhost/status-info i links på webserveren og der stod det port 443. Derimot viste https://hovenko.no/status-info/ at forbindelsen gikk over port 80.
Løsningen var å flytte konfigurasjonsparameterene SSLCertificateFile og SSLCertificateKeyFile ut av den oprinnelige SSL VirtualHost-seksjonen slik at de ble globale, og så legge inn SSLEngine on i alle VirtualHost-seksjoner som lytter på port 443.
SSLCertificateFile /etc/apache2/ssl/datafeel.no-cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/datafeel.no-key.pem<VirtualHost *:443>
ServerName hovenko.no
SSLEngine On
# …
</VirtualHost>