dec 16, 2024

SSL i XamPP

Hvis du har fået Virtual Host til at fungere, så er websiden stadigt usikker, og det er fordi at den benytter sig af http – protokollen som lytter på port 80. Det er muligt at oprette en sikkerhedscertifikat og tilhørende nøgle på XamPP, men det kun til den lokale maskine. Man kan ikke bruge det på et webhotel. Det skal konfigureres af webhotellets administration, eller ved brug af WordPress, så et SSL plugin.

I Apache findes der en bat-fil, hvor man kan oprette certifikat og nøgle, men desværre mangler der mulighed for at specificere domæner. Batfilen ser således ud.
 
@echo off
set OPENSSL_CONF=./conf/openssl.cnf

if not exist .\conf\ssl.crt mkdir .\conf\ssl.crt
if not exist .\conf\ssl.key mkdir .\conf\ssl.key

bin\openssl req -new -out server.csr
bin\openssl rsa -in privkey.pem -out server.key
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

set OPENSSL_CONF=
del .rnd
del privkey.pem
del server.csr

move /y server.crt .\conf\ssl.crt
move /y server.key .\conf\ssl.key

echo.
echo -----
echo Das Zertifikat wurde erstellt.
echo The certificate was provided.
echo.
pause
 
Der mangler at læse ind en parameter, der angiver tilknytning mellem DNS og adresserne. Dette skal opbevares i en fil. en fil ved navn V3.ext

og desuden ønsker vi at certifikatet gælder lidt længrere end i et år. Vi kan bruge hvilket som helst antal dage, men jeg har valgt 1825, ca 5 år. Batfilen skal vide, at den skal læse en ext-fil ind, så derfor tilføjer vi -extfile v3.ext, så bin\openssl x509  – linjen laver vi om som følger:

bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 1825 -extfile v3.ext

Oplysningerne om domæne i v3.ext filen skal se ud som følger ( vores tilfælde)
 
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage =digitalSignature, nonRepudiation, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = *.dev.kfmh.dk
DNS.3 = dev.kfmh.dk
DNS.4 = 127.0.0.1
DNS.5 = 127.0.0.2
 
Gem denne fil  og den ændrede batfil – og kør batfilen. Når man gør det, skal man angive en adgangskode. Det skal være en, der er let at huske, for den får man brug for senere. Derefter beder programmet om forskellige oplysninger, som er lige ud ad landevejen, indtil man kommer til angivelse af navn. Her skal man skrive det domæne, som skal gøres sikkert. I vores tilfælde bliver det dev.kfmh.dk. Alle oplysningerne skal stå som ovenstående. En lille trykfejl vil resultere i at vi ikke får genereret det rigtige certifikat og eller, at Apache ikke starter op ved genstart, men går i fejl.  Hvis alt dette går godt, så skal en virtual host med port 443 oprettes.

 

Vi opretter en ny virtual host, som følger
 
<VirtualHost *:443>
   ServerAdmin webmaster@dev.kfmh.dk
      DocumentRoot "/xampp/apps/xampp-portable-windows-x64-8.2.12-0-VS16/xampp/htdocs/kfmh"
   ServerName dev.kfmh.dk
   ServerAlias kfmh
   ErrorLog "logs/dev.kfmh.dk-error.log"
   CustomLog "logs/dev.kfmh.dk-access.log" common
   SSLEngine on
   SSLCertificateFile "conf\ssl.crt\server.crt"
   SSLCertificateKeyFile "conf\ssl.key\server.key"
   ##check with openssl req –noout –text –in dev.kfmh.dk.csr
</VirtualHost>
 
Så gemmer man filen, og genstarter Apache serveren. Og hvis den går i fejl, kan der være en trykfejl

Når man opretter et certifikat ved makecert.bat så bliver certifikatet lagt i en fil med stien “conf\ssl.crt\server.crt” og nøglen i stien
conf\ssl.key\server.key” For at få det hele til at virke skal man så specificere SSLEngine on og så de to filnavne som i det grøn-markerede linjer i ovenstående definition af Virtual Host. Memh.dk n hvis den virker korrekt, og man taster https://dev.kfmh.dk i browserens adressefelt, så  burde man komme til siden via port 443 som en sikker forbindelse.

Herefter mangler vi kun at sørge for at vi altid lander på https siden. Og det skal vi gøre i den virtuelle host for port 80. Vi tilføjer linjer  så specifikationen for de virtuelle host er som følger:
 

<VirtualHost *:80>
    ServerAdmin webmaster@dev.kfmh.dk
    DocumentRoot "/xampp/apps/xampp-portable-windows-x64-8.2.12-0-VS16/xampp/htdocs/kfmh"
    ServerName dev.kfmh.dk
    ServerAlias kfmh
    ErrorLog "logs/dev.kfmh.dk-error.log"
    CustomLog "logs/dev.kfmh.dk-access.log" common
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.dev.kfmh.dk [OR]
    RewriteCond %{SERVER_NAME} =dev.kfmh.dk 
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}[END,NE,R=permanent]
</VirtualHost>

 
Vi skal omdirigere alle forespørgsler via www.dev.kfmh.dk og dev.kfmh.dk, som jo går via http og port 80 til at blive omdirigeret til https serveren. Først starter man RewriteEngine, så specificerer man tilfældene, hvor der skal omdirigeres, og til sidst en RewriteRule som siger at de skal gå via https. Specielt de grønne linjer skal stå præcist sådan, for ellers kan man ikke genstarte Apache.
 
Så gemmer man filen, og genstarter Apache serveren. Og hvis den går i fejl, kan der være en trykfejl.
 
Men hvis man kommer igennem, så skulle dev.kfmh.dk altid vises som en sikker forbindelse via SSL.

More Details
dec 16, 2024

Virtual Host på portabel XamPP

Når man har anskaffet sig XamPP server på et USB stik til at oprette et udviklingsmiljø for hjemmesider, vil man jo gerne have, at web-adressen ligner den, som den hjemmeside, der kører på et webhotel med en sikker forbindelse.

Hvis fx den hedder kfmh.dk, ligger det nærved at kalde den lokale dev.kfmh.dk (som de 3 første bogstaver i “developing”). Da XamPP er født med enten “localhost” eller 127.0.0.1, skal opsætningen ændres.

Dette gøres ved at oprette en såkaldt virtual host. Og hvis man vil installere WordPress med den adresse, – så er det nok bedst at foretage oprettelsen af den virtuelle server først og derefter installere WordPress med den nye adresse. Ellers skal man ind i WordPress-databasen og ind i tabel Options for at rette siteurl og home adresserne til virtual host adressen.

 

Virtual host

For at oprette en virtuel server i XamPP skal man ind mappen \xampp\apache\conf\extra og åbne filen httpd-vhosts.conf med et editeringsprogram, fx Notepad++

I denne fil står der 2 eksempler til virtualhost, og den sidste som følger:

##<VirtualHost *:80>
##   ServerAdmin webmaster@dummy-host2.example.com
##   DocumentRoot "/xampp/apps/xampp-portable-windows-x64-8.2.12-0-VS16/xampp/htdocs/dummy-host2.example.com"
##   ServerName dummy-host2.example.com
##   ErrorLog "logs/dummy-host2.example.com-error.log"
##   CustomLog "logs/dummy-host2.example.com-access.log" common
##</VirtualHost>

I dette eksempel skal du så ændre, så det passer til din installations indstillinger og din virtuelle serveradresse. Her vil vi bruge dev.kfmh.dk som serveradresse (eller den virtuelle server), og dokument roden bliver så htdocs/kfmh. Og fden virtuelle host kommer så til at se ud som følger:

<VirtualHost *:80>
ServerAdmin webmaster@dev.kfmh.dk
DocumentRoot "/xampp/apps/xampp-portable-windows-x64-8.2.12-0-VS16/xampp/htdocs/kfmh"
ServerName dev.kfmh.dk
ServerAlias kfmh
ErrorLog "logs/dev.kfmh.dk-error.log"
CustomLog "logs/dev.kfmh.dk-access.log" common
</VirtualHost>

Her er ServerAlias valgfrit. For Windows (10 eller 11) skal vi fortælle Windows at vi bruger en ny server. Det vil sige, at vi skal opdatere Windowsfilen hosts med den nye server. Denne fil findes i C:\Windows\System32\drivers\etc. Denne fil kan åbnes med Notepad++, som skal have administrationsrettigheder. Filen indeholder tilknytninger af IP-adresser til værtsnavne. Og til at starte med indeholder den tilknytning af 127.0.0.1 til localhost, hvilket angives som følger:

127.0.0.1       localhost

Nu tilføjer vi så to linjer, en, der er tiltænkt KFMH, og en til Spillefolk.dk, sådan at der i alt står:

127.0.0.1       localhost
127.0.0.1       dev.kfmh.dk
127.0.0.1       dev.spillefolk.dk

 

Hvor vi så har tilknyttet to nye navne til 127.0.0.1, – gemt filen (husk administratorrettigheder). For at få de nye indstillinger til at træde i kraft skal man genstarte Apache serveren, og så kan man åbne siden med adressen dev.kfmh.dk. Hvis du har lavet en trykfejl, så kan du ikke starte Apache serveren, men får i stedet for en fejlmeddelelse. Dette stammer mest fra trykfejl i angivelsen af VirtualHost.

 

Hvis du var så uheldig, at have installeret WordPress, først skal du måske ind i tabel option for at rette i adressen for række, siteurl og række home fra localhost/kfmh til http://dev.kfmh.dk i modsat fald får man et mærkeligt resultat, når man indtaster dev.kfmh.dk i browseren.

 

Når man er færdig, så burde WordPress siden vises korrekt.

More Details