Version 4 (modified by 4 months ago) ( diff ) | ,
---|
CSLab CA - Add or Replace a user's certificate
Οδηγίες
Πριν φτιάξουμε νέο certificate, κρατάμε backup τα παλιά cert, key και csr. Αρχικά, πέφτουμε στη μαύρη τρύπα, πάμε στο ca και πάμε στο ~/CSLab-CA
(ssh blackhole
, sup su -
, ssh ca
). Έστω ότι το παλιό πιστοποιητικό είναι το cslab-foo.cert
. Μέσα στο CSLab-CA βρίσκουμε το cslab-foo.{cert,key}
. ΣΤο φάκελο requests βρίσκουμε αντίστοιχα το cslab-foo.csr
. Κάνουμε:
root@ca:~/CSLab_CA# mv cslab-foo.cert expired/cslab-foo_20YYMMDD.cert # year, month, day root@ca:~/CSLab_CA# mv cslab-foo.key expired/cslab-foo_20YYMMDD.key # oi admins to 2100 na allaksoun kai to 3o digit gia to Year:) root@ca:~/CSLab_CA# cd requests root@ca:~/CSLab_CA/requests/# mv cslab-foo.csr expired/cslab-foo_20YYMMDD.csr
Τώρα εκδίδουμε το νέο πιστοποιητικό (αλλάζοντας dir, cd ~/temp/
) με την ακόλουθη εντολή:
root@ca:~/temp/# openssl req -nodes -new -keyout cslab-username.key -out cslab-username.csr -subj '/C=GR/ST=Attiki/O=CSLab/CN=FirstName LastName/emailAddress=email@somedomain.com'
Note: to CN δεν χωρίζεται με enter, αλλά με space. Επίσης, για servers, στο CN βάζουμε το DNS του.
Κάνουμε cp
τα παραγόμενα cslab-username.{key,csr}
στο ~/CSLab-CA/
και το cslab-username.csr
το πάμε (με cp
) και στο ~/CSLab-CA/requests/
. Κάνουμε make sign
(πρέπει να ξέρουμε τη ρίζα του κακού - αν δεν την ξέρουμε πέφτουμε στη μαύρη τρύπα εκ νέου - Hint: Capital First, spaces, plural) και το νέο πιστοποιητικό μόλις δημιουργήθηκε (~/CSLab-CA/cslab-username.cert
). Μπορούμε τώρα να σβήσουμε τα αρχεία από το ~/temp/
(όλα μπορούμε να τα βρούμε από το CSLab-CA), ή να κάνουμε cp
το νέο cert
στο ~/temp/
ώστε να το πακετάρουμε σε tar αργότερα.
Τέλος, πρέπει να ενημερώσουμε τον root@ca
ότι τα certificates που παραλίγο να λήξουν έγιναν update:
root@ca:~/CSLab-CA/# ./check_dates.sh # Keep the cert's 4-digit HEX (ABCD) root@ca:~/CSLab-CA/# ls oldcerts/ | grep ABCD # this must return nothing root@ca:~/CSLab-CA/# mv newcerts/ABCD.pem oldcerts/ # If ABCD already existed, change its name root@ca:~/CSLab-CA/# ./check_dates.sh # Old entry has vanished, new entry is at the bottom
Πακετάρουμε τα cslab-username.{cert,key,csr}
σε ένα taraki και το ρίχνουμε το tar στη μαύρη τρύπα, από εκεί στο ~
directory μας και από το pc μας scp
για να τα πάρουμε.
Useful tips για την εγκατάσταση πιστοποιητικών
Βρίσκουμε από τα conf files της εφαρμογής την τοποθεσία του cert και key αρχείου και δίνουμε ΜΕΓΑΛΗ ΕΜΦΑΣΗ στο όνομα τους. Πχ, για την περίπτωση ενός site, συνήθως η τοποθεσία του πιστοποιητικού δηλώνεται στο /etc/apache/sites-enabled/site-name
. Γενικά η default τοποθεσία των πιστοποιητικών είναι το /etc/ssl/
. Πάντα δημιουργούμε log φάκελο με τα expired certs/keys και αναγράφουμε το timestamp δημιουργίας. Μόλις βεβαιωθούμε ότι τα νέα πιστοποιητικά/κλειδιά έχουν εγκατασταθεί στο σωστό dir και έχουν το σωστό όνομα, κάνουμε reload το service που τα χρειάζεται (στην περίπτωση του apache τουλάχιστον, δεν χρειάζεται restart).
ypap note: Ένα άλλο πιθανό μέρος που βρίσκονται τα certificates είναι το /etc/ssl/certs/
. Αν η κατάληξη είναι .crt
αρκεί ένα mv
από .cert
σε .crt
. Αν βρούμε φάκελο expired, φροντίζουμε να μεταφέρουμε τα παλιά πιστοποιητικά με αντίστοιχο τρόπο όπως στην αρχή των οδηγιών.
known issue: αν χρειαστεί να αλλάξουμε πιστοποιητικό στον CUPS (located @ santorini), για να πειράξουμε τα πιστοποιητικά του πρέπει πρώτα να κλείσουμε το service με /etc/init.d/cups stop
και μετά να βάλουμε τα νέα certs (αν το κάνουμε με τον cups να τρέχει θα κάνει override τα certs με δικά του, issued by root@santorini).
known issue 2: προσοχή στις επεκτάσεις των certificates. Το ca παράγει .cert
αρχεία, ενώ κάποια services έχουν δηλωμένα .crt
πιστοποιητικά. Για να μην αλλαχθούν τα conf files τους, απλά κάνουμε rename το .cert
(ούτως ή άλλως θα χρειαστεί το rename) προσέχοντας και την επέκταση.
Χρήσιμες εντολές
Για να δούμε ένα παλιό πιστοποιητικό (πχ, πότε βγήκε, ποιος το έβγαλε, κοκ) κάνουμε
openssl x509 -noout -in cslab-foo.cert -text
Σχετικά με το cslab-danaos-mail certificate:
Αφού βγάλουμε το cert, κανουμε cat
το .pem
από το newcerts και το αντιγράφουμε στο /etc/ssl/certs/cslab-danaos-mail.pem
Επίσης, το .key
μπαίνει στο /etc/ssl/private
Δημιουργία CSR
openssl req -nodes -new -keyout cslab-username.key -out cslab-username.csr -subj '/C=GR/ST=Attiki/O=CSLab/CN=FirstName LastName/emailAddress=email@somedomain.com'
Προσοχή! : στο CN=FirstName Lastname έχουμε κενό, όχι αλλαγή γραμμής.
Το στέλνουμε στον CSLab CA admin.
Warning: Επειδή υπάρχει inconsistency με τα encodings κάποιων openssl clients (UTF-8 vs PRINTABLESTRING), προτού δημιουργήσουμε το request βεβαιωνόμαστε ότι το αρχείο /etc/ssl/openssl.cnf
περιέχει τη γραμμή string_mask = default
και όχι string_mask = utf8only
. Σε αντίθετη περίπτωση αλλάζουμε το value σε default και στη συνέχεια δημιουργούμε το request (αν θέλουμε μετά το ξαναλλάζουμε).