Τεκμηρίωση παραδείγματος: Renewal και rotation
1. Στόχος
Ένα server certificate που πλησιάζει στη λήξη αντικαθίσταται από νέο· αξιολογούνται η επαναχρησιμοποίηση key και ένας νέος serial number.
Το έγγραφο συμπληρώνει το κύριο README με τεχνικό πλαίσιο, ερωτήσεις review και λειτουργικές παραμέτρους. Δεν είναι εγχειρίδιο λειτουργίας δημόσιας CA· αποτελεί αναπαραγώγιμο παράδειγμα μάθησης και ανάλυσης.
2. Τι γίνεται
Το παράδειγμα εκτελείται τοπικά, δημιουργεί προσωρινά artifacts μόνο κάτω από το work/ και γράφει evidence κάτω από το work/evidence/. Ανάλογα με το θέμα, δημιουργεί root CA, intermediate CA, CSR, server certificate, client certificate, CRL, γεγονός revocation ή μοντέλο αυτοματοποίησης.
Τα βήματα είναι σκόπιμα μικρά:
- Διαβάστε τα configuration files.
- Εκτελέστε το script.
- Εξετάστε το evidence.
- Ερμηνεύστε την έξοδο του OpenSSL.
- Συζητήστε την αστοχία ή το λειτουργικό ερώτημα.
- Επιβεβαιώστε το cleanup και την προστασία των private keys.
3. Γιατί γίνεται
Οι αστοχίες PKI σπάνια είναι απλώς συντακτικά σφάλματα. Ένα certificate μπορεί να δημιουργηθεί τεχνικά αλλά να είναι λανθασμένο: λάθος issuer, λάθος SAN, υπερβολική διάρκεια ισχύος, απουσία key usage, ασαφής chain, απουσία μοντέλου revocation ή εκτεθειμένο private key. Γι’ αυτό το παράδειγμα συνδέει κάθε τεχνική ενέργεια με δομή review.
4. Τυπικές εντολές
openssl version
openssl req -in work/csr/server.csr.pem -noout -subject -text 2>/dev/null || true
openssl x509 -in work/certs/server.crt.pem -noout -subject -issuer -serial -dates 2>/dev/null || true
openssl x509 -in work/certs/server.crt.pem -noout -text 2>/dev/null | sed -n '/X509v3 extensions:/,/Signature Algorithm/p' || true
openssl verify -CAfile work/root/certs/root.crt.pem -untrusted work/intermediate/certs/intermediate.crt.pem work/certs/server.crt.pem 2>/dev/null || true
find work/evidence -type f -maxdepth 2 -print 2>/dev/null | sort || true
5. Έλεγχος επιτυχίας
- Το script τερματίζει χωρίς απροσδόκητο σφάλμα.
- Τα αρχεία evidence αντιστοιχούν στο θέμα του παραδείγματος.
- Τα end-entity certificates έχουν
CA:FALSE. - Τα CA certificates έχουν
CA:TRUEκαι κατάλληλο key usage. - Τα server certificates περιέχουν SANs.
- Η επαλήθευση της chain χρησιμοποιεί χωριστά τη root CA ως trust anchor και την intermediate CA ως untrusted chain certificate.
- Δεν διατυπώνονται ισχυρισμοί για συμπεριφορά revocation, OCSP ή CRL χωρίς evidence ή σαφές όριο του lab.
6. Συνηθισμένα λάθη
| Παρατήρηση | Πιθανή αιτία | Διόρθωση |
|---|---|---|
| Το certificate φαίνεται έγκυρο, αλλά ο client το απορρίπτει | Το SAN απουσιάζει ή είναι λάθος | Ελέγξτε τη διαμόρφωση CSR και υπογράψτε ξανά. |
Αποτυγχάνει το openssl verify |
Η chain ή το trust anchor είναι λάθος | Δώστε τη root CA με -CAfile και την intermediate CA με -untrusted. |
| Η CA δεν μπορεί να υπογράψει επιπλέον certificates | Απουσιάζουν basic constraints ή key usage | Διορθώστε τα CA extensions και δημιουργήστε ξανά το certificate. |
| Το revocation δεν είναι ορατό | Το CRL δεν αναδημιουργήθηκε ή δεν δημοσιεύτηκε | Αναδημιουργήστε το CRL, ελέγξτε τον serial number και δοκιμάστε τη συμπεριφορά του client. |
| Το evidence περιέχει ιδιωτικά δεδομένα | Αντιγράφηκαν λάθος αρχεία | Περιορίστε το evidence σε δημόσια έξοδο, fingerprints και serial numbers. |
7. Ζητήματα ασφάλειας
Οι πραγματικές PKIs πρέπει να προστατεύουν τα root και intermediate keys ισχυρότερα από αυτό το lab. Τα root keys συνήθως φυλάσσονται offline. Τα intermediate keys προστατεύονται με HSMs, αυστηρά file permissions, audit logs και διαχωρισμένους ρόλους. Τα δημόσια έμπιστα certificates υπόκεινται σε πρόσθετες απαιτήσεις, τις οποίες το workshop μπορεί να εξηγήσει αλλά δεν προσομοιώνει.
8. Ρεαλιστική χρήση
Το μοτίβο εφαρμόζεται σε εσωτερικά TLS certificates, mTLS μεταξύ services, Kubernetes Ingress, Vault PKI, cert-manager, Smallstep, SPIFFE/SPIRE και παραδοσιακές εταιρικές PKIs. Καθοριστικό δεν είναι το εργαλείο αλλά το evidence: ποιος υπογράφει, για ποιο σκοπό ισχύει το certificate, πώς διανέμεται η εμπιστοσύνη, πότε αρχίζει το renewal και πώς αντιμετωπίζεται το revocation.
9. Ροή workshop
- Διαβάστε τον στόχο δυνατά και ορίστε το πεδίο εφαρμογής.
- Διαχωρίστε τα αρχεία του workshop από τα runtime artifacts.
- Ανοίξτε το OpenSSL configuration και σημειώστε τα σχετικά sections.
- Εντοπίστε τα paths των private keys.
- Ελέγξτε το CSR subject και τα SANs.
- Εξηγήστε τα CA extensions πριν από την υπογραφή.
- Δημιουργήστε το certificate ή ελέγξτε το model artifact.
- Συγκρίνετε issuer και subject.
- Ερμηνεύστε τα basic constraints και το key usage.
- Εκτελέστε επαλήθευση της chain.
- Αναπαράγετε σκόπιμα την αστοχία, αν το παράδειγμα περιλαμβάνει κάποια.
- Ανοίξτε τα αρχεία evidence και ελέγξτε ότι δεν περιέχουν private keys.
- Θέστε το λειτουργικό ερώτημα: ποιος είναι υπεύθυνος για αυτό το certificate;
- Θέστε το ερώτημα ασφάλειας: πώς θα ανιχνευόταν μια παραβίαση;
- Θέστε το ερώτημα renewal: πότε πρέπει να αρχίσει η ενέργεια;
- Θέστε το ερώτημα revocation: ποιοι clients ελέγχουν CRL ή OCSP;
- Θέστε το ερώτημα audit: ποια απόφαση μπορεί να ιχνηλατηθεί;
- Εκτελέστε cleanup.
- Τεκμηριώστε τις αποκλίσεις.
- Μετατρέψτε το αποτέλεσμα σε σύντομη σύνοψη review.
10. Πίνακας review
| Πεδίο review | Αναμενόμενη δήλωση |
|---|---|
| Πεδίο εφαρμογής | Διαχωρίζονται το lab, η εσωτερική PKI και το πλαίσιο δημόσιας εμπιστοσύνης. |
| Subject | Η οντότητα και ο σκοπός είναι σαφή. |
| Issuer | Η CA που υπογράφει είναι τεκμηριωμένη. |
| Chain | Η root και η intermediate CA χρησιμοποιούνται σωστά. |
| SAN | Η ταυτότητα host βρίσκεται στο SAN. |
| Basic Constraints | Οι ρόλοι CA και leaf διαχωρίζονται. |
| Key Usage | Signature, key encipherment, cRLSign ή keyCertSign ταιριάζει στον ρόλο. |
| EKU | ServerAuth ή ClientAuth ορίζεται μόνο όπου χρειάζεται. |
| Διάρκεια ισχύος | Η διάρκεια ισχύος και το χρονικό παράθυρο renewal είναι εύλογα. |
| Revocation | Είναι σαφές το CRL, το OCSP ή το όριο του lab. |
| Keys | Τα private keys δεν γίνονται commit. |
| Evidence | Το evidence δεν περιέχει secrets. |
Επίσημες αναφορές
- RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile: https://datatracker.ietf.org/doc/html/rfc5280
- CA/Browser Forum Baseline Requirements: https://cabforum.org/working-groups/server/baseline-requirements/requirements/
- NIST SP 800-57 Part 1 Revision 5: https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final
- OpenSSL Manual Pages: https://www.openssl.org/docs/manpages/
Παράρτημα παραδείγματος: Evidence, μεταφορά γνώσης και λειτουργία
Το παράρτημα ολοκληρώνει το παράδειγμα ως εκπαιδευτικό στοιχείο. Περιορίζεται σκόπιμα σε πραγματικά ερωτήματα PKI: περιεχόμενο certificate, trust chain, key material, revocation, renewal, audit και λειτουργική παράδοση.
Λίστα ελέγχου evidence
- Καταγράφηκε η έξοδος
openssl version, ώστε να αντιστοιχίζεται η έξοδος σε συγκεκριμένη έκδοση εργαλείου. - Ελέγχθηκαν subject, issuer, serial και διάρκεια ισχύος με
openssl x509 -noout. - Από το κείμενο του certificate εξήχθησαν SAN, basic constraints, key usage και EKU.
- Η chain επαληθεύτηκε με τη root CA ως trust anchor και την intermediate CA ως chain certificate.
- Οι αστοχίες δεν περιγράφηκαν απλώς· έγιναν ορατές με ελεγχόμενο exit code ή αρχείο evidence.
- Δεν αντιγράφηκαν private keys σε αρχεία evidence.
- Τα runtime artifacts βρίσκονται κάτω από το
work/και χωρίζονται από το περιεχόμενο του workshop. - Το cleanup είναι δυνατό με αφαίρεση του
work/.
Ερωτήσεις μεταφοράς γνώσης
- Ποιος είναι υπεύθυνος για το certificate και ποιος μπορεί να εγκρίνει την έκδοσή του;
- Ποια CA το υπογράφει και πώς προστατεύεται;
- Ποιοι clients ή συστήματα πρέπει να εμπιστεύονται το trust anchor;
- Ποια διάρκεια ισχύος δικαιολογείται και πότε αρχίζει το renewal;
- Πώς διανέμεται το revocation και πώς ελέγχεται η συμπεριφορά των clients;
- Ποια logs ή tickets αποδεικνύουν request, approval, issuance και change;
- Ποια απόκλιση δεν θα ήταν αποδεκτή για δημόσια CA;
- Ποια μέρη του lab πρέπει να αυτοματοποιηθούν μέσω HSM, Vault, cert-manager, ACME ή SPIFFE;
Λειτουργικές σημειώσεις
| Θέμα | Αναμενόμενο |
|---|---|
| Ρόλοι | Requester, approver, CA operator και auditor διαχωρίζονται ή αιτιολογείται ρητά η σύμπτωσή τους. |
| Keys | Τα private keys προστατεύονται, δεν αποθηκεύονται σε version control και είναι προσβάσιμα μόνο στον απαιτούμενο ρόλο. |
| Certificates | Τα leaf certificates έχουν CA:FALSE, ενώ τα CA certificates έχουν CA:TRUE και κατάλληλο key usage. |
| Ονόματα | Οι ταυτότητες DNS και IP βρίσκονται στο SAN και όχι μόνο στο common name. |
| Chain | Root, intermediate και leaf μπορούν να ιχνηλατηθούν και διανέμονται σωστά. |
| Revocation | Το CRL ή το OCSP αντιμετωπίζεται ως διαδικασία, ακόμη και όταν το lab είναι μόνο τοπικό. |
| Renewal | Το expiry monitoring και τα χρονικά παράθυρα renewal είναι τεκμηριωμένα. |
| Audit | Το evidence περιέχει ιχνηλατήσιμες αποφάσεις, χωρίς secrets. |
Σύνοψη review
Ένα παράδειγμα ολοκληρώνεται μόνο όταν συνδέονται σωστά η τεχνική εκτέλεση, η τεχνική εξήγηση και το evidence ασφάλειας. Για τα CA workshops αυτό έχει μεγαλύτερη σημασία από την ακολουθία εντολών μόνη της, επειδή ένα certificate μπορεί να παραμένει επικίνδυνο ακόμη κι αν το OpenSSL το δημιούργησε επιτυχώς.