wiki:Certs

Version 5 (modified by ypap, 2 days 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 (αν θέλουμε μετά το ξαναλλάζουμε).

Εγκατάσταση certificate @ danaos

  1. Αντικατάσταση του cert στο /etc/ssl/certs
  2. Παίρνουμε το "private key" από το .pem αρχείο που βρίσκεται στο /root/CSLab-CA/newcerts (βρίσκουμε το αρχείο με το hex από το ./check_dates.sh) και αντικαθιστούμε στο αρχείο /etc/ssl/certs/cslab-danaos-mail.pem
  3. Βάζουμε το .key στο /etc/ssl/private
  4. Restart dovecot: /etc/init.d/dovecot restart
Note: See TracWiki for help on using the wiki.