Ero sivun ”Apache ja HTTPS” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
Rivi 1: Rivi 1:
Otetaan käyttöön [[wikipedia:fi:ssl|SSL]]-salaus käyttöön [[Apache]]n kanssa. Oletetaan, että Apache2 on asennettuna vanhempaan Debian/Ubuntu-järjestelmään.  
Otetaan käyttöön [[wikipedia:fi:ssl|SSL]]-salaus käyttöön [[Apache]]n kanssa. Oletetaan, että Apache2 on asennettuna vanhempaan Debian-pohjaiseen järjestelmään. (Debian, Ubuntu, Knoppix...)


====Sertifikaatti====
====Sertifikaatti====
Rivi 8: Rivi 8:


Tätä sertifikaattikomentoa ei löydy uudemmista Debianeista, eikä siihen liittyvää konfiguraatiotiedostoa tai kohdehakemistoa. Ja suurin osa apache2-ssl-certificate-komennoista ei tue mitään vipuja. Helpointa on luoda tiedosto itse:
Tätä sertifikaattikomentoa ei löydy uudemmista Debianeista, eikä siihen liittyvää konfiguraatiotiedostoa tai kohdehakemistoa. Ja suurin osa apache2-ssl-certificate-komennoista ei tue mitään vipuja. Helpointa on luoda tiedosto itse:
<code>
  #!/bin/sh -e
#!/bin/sh -e


if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then
  if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then
  echo "/etc/apache2/ssl/apache.pem exists!  Use \"$0 --force.\""
    echo "/etc/apache2/ssl/apache.pem exists!  Use \"$0 --force.\""
  exit 0
    exit 0
fi
  fi


if [ "$1" = "--force" ]; then
  if [ "$1" = "--force" ]; then
  shift
    shift
fi     
  fi     


echo
  echo
echo creating selfsigned certificate
  echo creating selfsigned certificate
echo "replace it with one signed by a certification authority (CA)"
  echo "replace it with one signed by a certification authority (CA)"
echo
  echo
echo enter your ServerName at the Common Name prompt
  echo enter your ServerName at the Common Name prompt
echo
  echo
echo If you want your certificate to expire after x days call this programm  
  echo If you want your certificate to expire after x days call this programm  
echo with "-days x"  
  echo with "-days x"  


# use special .cnf, because with normal one no valid selfsigned
  # use special .cnf, because with normal one no valid selfsigned
# certificate is created
  # certificate is created
export RANDFILE=/dev/random
  export RANDFILE=/dev/random
openssl req $@ -config ssleay.cnf \
  openssl req $@ -config ssleay.cnf \
  -new -x509 -nodes -out /etc/apache2/ssl/apache.pem \
    -new -x509 -nodes -out /etc/apache2/ssl/apache.pem \
  -keyout /etc/apache2/ssl/apache.pem -days 365
    -keyout /etc/apache2/ssl/apache.pem -days 365
chmod 600 /etc/apache2/ssl/apache.pem
  chmod 600 /etc/apache2/ssl/apache.pem
ln -sf /etc/apache2/ssl/apache.pem \
  ln -sf /etc/apache2/ssl/apache.pem \
   /etc/apache2/ssl/`/usr/bin/openssl \
   /etc/apache2/ssl/`/usr/bin/openssl \
   x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0
   x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0
</code>
 
Tässä tiedostoa on muutettu lisäämällä -days 365 vipu komentoon ja korjattu config-tiedoston polku. Configtiedoston oletetaan löytyvän samasta hakemistosta kuin skriptankin. Config-tiedoston sisällä voisi olla vaikka:
Tässä tiedostoa on muutettu lisäämällä -days 365 vipu komentoon ja korjattu config-tiedoston polku. Configtiedoston oletetaan löytyvän samasta hakemistosta kuin skriptankin. Config-tiedoston sisällä voisi olla vaikka:
  #
  # SSLeay example configuration file.
  #
  RANDFILE                = $ENV::HOME/.rnd
  [ req ]
  default_bits            = 1024
  default_keyfile        = privkey.pem
  distinguished_name      = req_distinguished_name
  [ req_distinguished_name ]
  countryName                    = Maan nimi (2-kirjaiminen koodi)
  countryName_default            = FI
  countryName_min                = 2
  countryName_max                = 2
  stateOrProvinceName            = Lääni
  stateOrProvinceName_default    = Uusimaa
  localityName                    = Kaupunki
  organizationName                = Organisaation nimi (esim, yritys)
  organizationName_max            = 64
  organizationalUnitName          = Yksikön nimi (esim. osasto)
  organizationalUnitName_max      = 64
  commonName                      = Palvelimen nimi (esim. www.palvelin.fi)
  commonName_max                  = 64
  emailAddress                    = Sähköpostiosoite
  emailAddress_max                = 40
Tämän lisäksi hakemisto /apache2/ssl on luotava ja annettava root:in haltuun.


====Aktivoidaan SSL-moduuli====
====Aktivoidaan SSL-moduuli====

Versio 16. huhtikuuta 2007 kello 08.02

Otetaan käyttöön SSL-salaus käyttöön Apachen kanssa. Oletetaan, että Apache2 on asennettuna vanhempaan Debian-pohjaiseen järjestelmään. (Debian, Ubuntu, Knoppix...)

Sertifikaatti

Aloitetaan luomalla sertifikaatti joka on voimassa halutun ajan.

apache2-ssl-certificate -days 365

Vastaile tuleviin kysymyksiin.

  • Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta.

Tätä sertifikaattikomentoa ei löydy uudemmista Debianeista, eikä siihen liittyvää konfiguraatiotiedostoa tai kohdehakemistoa. Ja suurin osa apache2-ssl-certificate-komennoista ei tue mitään vipuja. Helpointa on luoda tiedosto itse:

 #!/bin/sh -e
 if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then
   echo "/etc/apache2/ssl/apache.pem exists!  Use \"$0 --force.\""
   exit 0
 fi
 if [ "$1" = "--force" ]; then
   shift
 fi     
 echo
 echo creating selfsigned certificate
 echo "replace it with one signed by a certification authority (CA)"
 echo
 echo enter your ServerName at the Common Name prompt
 echo
 echo If you want your certificate to expire after x days call this programm 
 echo with "-days x" 
 # use special .cnf, because with normal one no valid selfsigned
 # certificate is created
 export RANDFILE=/dev/random
 openssl req $@ -config ssleay.cnf \
   -new -x509 -nodes -out /etc/apache2/ssl/apache.pem \
   -keyout /etc/apache2/ssl/apache.pem -days 365
 chmod 600 /etc/apache2/ssl/apache.pem
 ln -sf /etc/apache2/ssl/apache.pem \
 /etc/apache2/ssl/`/usr/bin/openssl \
 x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0

Tässä tiedostoa on muutettu lisäämällä -days 365 vipu komentoon ja korjattu config-tiedoston polku. Configtiedoston oletetaan löytyvän samasta hakemistosta kuin skriptankin. Config-tiedoston sisällä voisi olla vaikka:

 #
 # SSLeay example configuration file.
 #
 RANDFILE                = $ENV::HOME/.rnd
 [ req ]
 default_bits            = 1024
 default_keyfile         = privkey.pem
 distinguished_name      = req_distinguished_name
 [ req_distinguished_name ]
 countryName                     = Maan nimi (2-kirjaiminen koodi)
 countryName_default             = FI
 countryName_min                 = 2
 countryName_max                 = 2
 stateOrProvinceName             = Lääni
 stateOrProvinceName_default     = Uusimaa
 localityName                    = Kaupunki
 organizationName                = Organisaation nimi (esim, yritys)
 organizationName_max            = 64
 organizationalUnitName          = Yksikön nimi (esim. osasto)
 organizationalUnitName_max      = 64
 commonName                      = Palvelimen nimi (esim. www.palvelin.fi)
 commonName_max                  = 64
 emailAddress                    = Sähköpostiosoite
 emailAddress_max                = 40

Tämän lisäksi hakemisto /apache2/ssl on luotava ja annettava root:in haltuun.

Aktivoidaan SSL-moduuli

a2enmod ssl

Asetetaan Apache kuuntelemaan oikeaa porttia

Lisää tiedostoon /etc/apache2/ports.conf rivi:

Listen 443

443 on https:n oletus portti.

SSL-suojatuille sivuille omat asetukset

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Lisää nyt luotuun tiedostoon ( /etc/apache2/sites-available/ssl ) kahdelle ensimmäiselle riville porttinumerot tähän tapaan:

NameVirtualHost *:443
<virtualhost *:443>

Ja laita <virtualhost *:443>-tagin sisään rivit:

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

Aktivoidaan asetukset.

a2ensite ssl

Lopuksi käynnistetään Apache uusiksi, jotta kaikki muutokset tulevat voimaan.

apache2ctl restart

Nyt salaus pitäisi tulla käyttöön, kun sivuille mennään https-alkuisella osoitteella http:n sijaan.

Mod rewrite

Nyt käyttäjä pystyy valitsemaan käyttääkö hän salausta vai ei. Usein halutaan pakottaa käyttäjä käyttämään salattua yhteyttä. Se onnistuu Mod rewritella.

Aktoivoidaan taas oikea moduuli.

a2enmod rewrite

Muokataan tiedostoa /etc/apache2/sites-available/default lisäämällä <VirtualHost *>-tagin sisään:

RewriteEngine   on
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^/salainen(.*)$ https://%{SERVER_NAME}/salainen$1 [L,R]
RewriteLog      "/var/log/apache2/rewrite.log"
RewriteLogLevel 2

Nyt http://www.example.com/salainen/ ohjautuu automaattisesti SSL-salattuun yhteyteen https://www.example.com/salainen/. Jos haluat kaikki sivut SSL-salauksen alle voit jättää edelliseen hakemiston kohdalle pelkästään /:n. Eli jätä vain sana "salainen" pois.

Muutokset tulevat voimaan käynnistämällä Apache uusiksi.

apache2ctl restart

Linkkejä