Hits : 387
Η προφανής λύση είναι να κρυπτογραφήσουμε την επικοινωνία μας ώστε να μην είναι ένα απλό κείμενο.
Η λύση είναι ο διακομιστής του ιστότοπου να κάνει χρήση ενός επιπλέον επιπέδου στην επικοινωνία
μέσω του διαδικτύου ώστε να ανταλάσει πληροφορίες προς εμάς και εμείς προς αυτό οι οποίες να είναι
πλέον κρυπτογραφημένες.
Το πρόβλημα εδώ είναι το εξής: Μπορεί κάποιος να αποποιηθεί την ταυτότητα μας κατά την κρυπτογραφημένη
σύνδεσή μας με τον διακομιστή του ιστότοπου και με αυτό τον τρόπο και να αυθεντικοποιηθεί με τον ιστότοπο
και πλέον να έχει και αυτός πρόσβαση μέσω της κρυπτογραφημένης επικοινωνίας μας με τον διακομιστή του
ιστότοπου.
Τότε χρειάζεται να προσθέσουμε ένα ακόμα στοιχείο κατά την επικοινωνίας μας με τον διακομιστή.
Την αμφίδρομη κρυπτογράφηση της επικοινωνίας μας με τον διακομιστή του ιστότοπου που θέλουμε να
περιηγηθούμε. Αυτό γίνεται με την δημιουργία ενός ξεχωριστού κλειδιού με το οποίο μπορούμε να
κρυπτογραφήσουμε την επικοινωνίας μας ΠΡΟΣ τον διακομιστή και παράλληλα με το ίδιο κλειδί να
μας πιστοποιήσει το διακομιστής. Μπορούμε ως επιπλέον μέτρο ασφάλειας να προσθέσουμε και ένα
ακόμα επίπεδο αυθεντικοποίησης μέσω ΟΝΟΜΑ_ΧΡΗΣΤΗ και ΣΥΝΘΗΜΑΤΙΚΟ_ΧΡΗΣΤΗ.
Αλγόριθμοι
Υπάρχουν 4 κατηγορίες
Για να «προστατεύσουμε» τα κλειδιά μας καθώς και το site μας χρειάζεται
δημιουργήσουμε μία έμπιστη πηγή με την οποία θα υπογράψουμε τα κλειδιά μας.
Για αυτό λοιπόν παράγουμε μία έμπιστη πηγή:
Έπειτα χρειάζεται να δημιουργήσουμε ένα πιστοποιητικό για το site μας
και στην συνέχεια να το υπογράψουμε μέσω της έμπιστης πηγή μας
Τι πρέπει να κάνουμε:
a. key.pem ή name.key
Παράγουμε ένα private κλειδί:
Το κλειδί έχει 2 ορίσματα:
b. key.csr
Παράγουμε ένα Certificate Signing Request με βάση το Private Key που δημιουργήσαμε
c. x509 ή key.crt
Παράγουμε ένα x509 Certification με βάση το csr που έχουμε φτιάξει
http://tools.ietf.org/html/rfc4158
d. pkcs12 ή key.p12
Παράγουμε ένα client site certificate με βάση το crt που φτιάξαμε και το έχουμε ήδη
υπογράψει με τη έμπιστη πηγή.
#!/bin/bash
clear
# Create RSA
echo 'RSA'
echo
mkdir -pv /www/ca/
cd /www/ca/
# Certificate Authority
# RSA - CA without a password
echo
echo "Certificate Authority - RSA"
echo
openssl genrsa -aes256 -out ca.rsa.pem 4096
openssl rsa -in ca.rsa.pem -out ca.rsa.key
openssl req -new -x509 -days 1825 -key ca.rsa.key -out ca.rsa.crt
echo
# Country Name (2 letter code) [AU]:GR
# State or Province Name (full name) [Some-State]:Athens
# Locality Name (eg, city) []:Aigaleo
# Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ebalaskas.Gr
# Organizational Unit Name (eg, section) []:Web Apps
# Common Name (eg, YOUR name) []:Evaggelos Balaskas
# Email Address []:ebalaskas@ebalaskas.gr
# Server Site Certificate - RSA
echo
echo "Server Site Certificate - RSA"
echo
openssl genrsa -aes256 -out ebal.pem 4096
openssl rsa -in ebal.pem -out ebal.key
openssl req -new -key ebal.key -out ebal.csr
echo 'ΠΡΟΣΟΧΗ: ΤΟ Common Name ΠΡΕΠΕΙ ΝΑ ΤΟ ΟΝΟΜΑ ΤΟΥ site'
openssl x509 -req -days 1825 -in ebal.csr -out ebal.crt \
-sha1 -CA ca.rsa.crt -CAkey ca.rsa.key -CAcreateserial
# Country Name (2 letter code) [AU]:GR
# State or Province Name (full name) [Some-State]:Athens
# Locality Name (eg, city) []:Aigaleo
# Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ebalaskas.Gr
# Organizational Unit Name (eg, section) []:Web Apps
# Common Name (eg, YOUR name) []: www.ebal.gr
# Email Address []:ebalaskas@ebalaskas.gr
# Server Site Client Certificate
echo
echo "Server Site Client Certificate - RSA"
echo
openssl pkcs12 -export -in ebal.crt -inkey ebal.key \
-name "www.ebal.gr Certificate Client" -out ebal.p12
# Apache
echo
echo Apache
echo
/usr/local/apache2/bin/htpasswd \
-c /www/ca/.htaccess ebal
echo '127.0.0.13 www.ebal.gr' >> /etc/hostsDownload and Install Apache Web Server
Για να εκκινήσουμε τον Apache Web Server μας τότε απλά:
/usr/local/apache2/bin/httpd -k start
Μπορούμε μέσω ενός οποιοδήποτε web client/browser να ελέγξουμε ότι παίζει σωστά.
elinks
http://localhost
Το αρχείο ρυθμίσεων του Apache Web Server είναι το εξής:
/usr/local/apache2/conf/httpd.conf