Changes between Initial Version and Version 1 of Certs


Ignore:
Timestamp:
01/10/24 13:44:28 (10 months ago)
Author:
ypap
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Certs

    v1 v1  
     1== CSLab CA - Add or Replace a user's certificate ==
     2
     3=== Οδηγίες ===
     4
     5Πριν φτιάξουμε νέο 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`. Κάνουμε:
     6
     7{{{
     8root@ca:~/CSLab_CA# mv cslab-foo.cert expired/cslab-foo_20YYMMDD.cert   # year, month, day
     9root@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:)
     10root@ca:~/CSLab_CA# cd requests
     11root@ca:~/CSLab_CA/requests/# mv cslab-foo.csr expired/cslab-foo_20YYMMDD.csr
     12}}}
     13
     14Τώρα εκδίδουμε το νέο πιστοποιητικό (αλλάζοντας dir, `cd ~/temp/`) με την ακόλουθη εντολή:
     15
     16`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'`
     17
     18Note: to CN δεν χωρίζεται με enter, αλλά με space. Επίσης, για servers, στο CN βάζουμε το DNS του.
     19
     20Κάνουμε `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 αργότερα.
     21
     22Τέλος, πρέπει να ενημερώσουμε τον `root@ca` ότι τα certificates που παραλίγο να λήξουν έγιναν update:
     23
     24{{{
     25root@ca:~/CSLab-CA/# ./check_dates.sh # Keep the cert's 4-digit HEX (ABCD)
     26root@ca:~/CSLab-CA/# ls oldcerts/ | grep ABCD # this must return nothing
     27root@ca:~/CSLab-CA/# mv newcerts/ABCD.pem oldcerts/  # If ABCD already existed, change its name
     28root@ca:~/CSLab-CA/# ./check_dates.sh # Old entry has vanished, new entry is at the bottom
     29}}}
     30
     31Πακετάρουμε τα `cslab-username.{cert,key,csr}` σε ένα taraki και το ρίχνουμε το tar στη μαύρη τρύπα, από εκεί στο `~` directory μας και από το pc μας `scp` για να τα πάρουμε.
     32
     33=== Useful tips για την εγκατάσταση πιστοποιητικών ===
     34
     35Βρίσκουμε από τα conf files της εφαρμογής την τοποθεσία του cert και key αρχείου και δίνουμε ΜΕΓΑΛΗ ΕΜΦΑΣΗ στο όνομα τους. Πχ, για την περίπτωση ενός site, συνήθως η τοποθεσία του πιστοποιητικού δηλώνεται στο `/etc/apache/sites-enabled/site-name`. Γενικά η default τοποθεσία των πιστοποιητικών είναι το `/etc/ssl/`. Πάντα δημιουργούμε log φάκελο με τα expired certs/keys και αναγράφουμε το timestamp δημιουργίας. Μόλις βεβαιωθούμε ότι τα νέα πιστοποιητικά/κλειδιά έχουν εγκατασταθεί στο σωστό dir και έχουν το σωστό όνομα, κάνουμε reload το service που τα χρειάζεται (στην περίπτωση του apache τουλάχιστον, δεν χρειάζεται restart).
     36
     37**ypap note**: Ένα άλλο πιθανό μέρος που βρίσκονται τα certificates είναι το `/etc/ssl/certs/`. Αν η κατάληξη είναι `.crt` αρκεί ένα `mv` από `.cert` σε `.crt`. Αν βρούμε φάκελο expired, φροντίζουμε να μεταφέρουμε τα παλιά πιστοποιητικά με αντίστοιχο τρόπο όπως στην αρχή των οδηγιών.
     38
     39**known issue**: αν χρειαστεί να αλλάξουμε πιστοποιητικό στον CUPS (located @ santorini), για να πειράξουμε τα πιστοποιητικά του πρέπει πρώτα να κλείσουμε το service με `/etc/init.d/cups stop` και μετά να βάλουμε τα νέα certs (αν το κάνουμε με τον cups να τρέχει θα κάνει override τα certs με δικά του, issued by root@santorini).
     40
     41**known issue 2**: προσοχή στις επεκτάσεις των certificates. Το ca παράγει `.cert` αρχεία, ενώ κάποια services έχουν δηλωμένα `.crt` πιστοποιητικά. Για να μην αλλαχθούν τα conf files τους, απλά κάνουμε rename το `.cert` (ούτως ή άλλως θα χρειαστεί το rename) προσέχοντας και την επέκταση.
     42
     43=== Χρήσιμες εντολές ===
     44
     45Για να δούμε ένα παλιό πιστοποιητικό (πχ, πότε βγήκε, ποιος το έβγαλε, κοκ) κάνουμε
     46
     47`openssl x509 -noout -in cslab-foo.cert -text`
     48
     49=== Δημιουργία CSR ===
     50
     51`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'`
     52
     53Προσοχή! : στο CN=FirstName Lastname έχουμε κενό, όχι αλλαγή γραμμής.
     54
     55Το στέλνουμε στον CSLab CA admin.
     56
     57Warning: Επειδή υπάρχει inconsistency με τα encodings κάποιων openssl clients (UTF-8 vs PRINTABLESTRING), προτού δημιουργήσουμε το request βεβαιωνόμαστε ότι το αρχείο `/etc/ssl/openssl.cnf` περιέχει τη γραμμή `string_mask = default` και όχι `string_mask = utf8only`. Σε αντίθετη περίπτωση αλλάζουμε το value σε default και στη συνέχεια δημιουργούμε το request (αν θέλουμε μετά το ξαναλλάζουμε).
     58