Ero sivun ”Apache ja HTTPS” versioiden välillä
Ei muokkausyhteenvetoa |
|||
Rivi 9: | Rivi 9: | ||
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: | ||
#!/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 | ||
Rivi 27: | Rivi 24: | ||
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 | ||
Rivi 43: | Rivi 39: | ||
# SSLeay example configuration file. | # SSLeay example configuration file. | ||
# | # | ||
RANDFILE = $ENV::HOME/.rnd | RANDFILE = $ENV::HOME/.rnd | ||
[ req ] | [ req ] | ||
default_bits = 1024 | default_bits = 1024 | ||
default_keyfile = privkey.pem | default_keyfile = privkey.pem | ||
distinguished_name = req_distinguished_name | distinguished_name = req_distinguished_name | ||
[ req_distinguished_name ] | [ req_distinguished_name ] | ||
countryName = Maan nimi (2-kirjaiminen koodi) | countryName = Maan nimi (2-kirjaiminen koodi) | ||
Rivi 56: | Rivi 49: | ||
countryName_min = 2 | countryName_min = 2 | ||
countryName_max = 2 | countryName_max = 2 | ||
stateOrProvinceName = Lääni | stateOrProvinceName = Lääni | ||
stateOrProvinceName_default = Uusimaa | stateOrProvinceName_default = Uusimaa | ||
localityName = Kaupunki | localityName = Kaupunki | ||
organizationName = Organisaation nimi (esim, yritys) | organizationName = Organisaation nimi (esim, yritys) | ||
organizationName_max = 64 | organizationName_max = 64 | ||
organizationalUnitName = Yksikön nimi (esim. osasto) | organizationalUnitName = Yksikön nimi (esim. osasto) | ||
organizationalUnitName_max = 64 | organizationalUnitName_max = 64 | ||
commonName = Palvelimen nimi (esim. www.palvelin.fi) | commonName = Palvelimen nimi (esim. www.palvelin.fi) | ||
commonName_max = 64 | commonName_max = 64 | ||
emailAddress = Sähköpostiosoite | emailAddress = Sähköpostiosoite | ||
emailAddress_max = 40 | emailAddress_max = 40 | ||
Tämän lisäksi hakemisto /apache2/ssl on luotava ja annettava root:in haltuun. | 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.03
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