Δημιουργία, διαχείριση και μετατροπή πιστοποιητικών SSL με το OpenSSL
Μία από τις πιο δημοφιλείς εντολές στο SSL για τη δημιουργία, μετατροπή, διαχείριση των πιστοποιητικών SSL είναι το OpenSSL.
Θα υπάρξουν πολλές περιπτώσεις όπου θα πρέπει να αντιμετωπίσετε το OpenSSL με διάφορους τρόπους, και εδώ τις έχω παραθέσει για εσάς ως ένα εύχρηστο φύλλο εξαπάτησης.
Σε αυτό το άρθρο, θα μιλήσω για εντολές OpenSSL που χρησιμοποιούνται συχνά για να σας βοηθήσουν στον πραγματικό κόσμο.
Μερικές από τις συντομογραφίες σχετίζονται με πιστοποιητικά.
- SSL – Secure Socket Layer
- CSR – Αίτημα υπογραφής πιστοποιητικού
- TLS – Ασφάλεια επιπέδου μεταφοράς
- PEM – Αλληλογραφία ενισχυμένης απορρήτου
- DER – Διακεκριμένοι κανόνες κωδικοποίησης
- SHA – Ασφαλής αλγόριθμος κατακερματισμού
- PKCS – Πρότυπα κρυπτογραφίας δημόσιου κλειδιού
Σημείωση: Μάθημα λειτουργίας SSL/TLS θα ήταν χρήσιμο εάν δεν είστε εξοικειωμένοι με τους όρους.
Πίνακας περιεχομένων
Δημιουργήστε ένα νέο ιδιωτικό κλειδί και αίτημα υπογραφής πιστοποιητικού
openssl req -out grtechpc.org.csr -newkey rsa:2048 -nodes -keyout grtechpc.org.key
Η παραπάνω εντολή θα δημιουργήσει CSR και ένα αρχείο κλειδιού RSA 2048-bit. Εάν σκοπεύετε να χρησιμοποιήσετε αυτό το πιστοποιητικό σε Apache ή Nginx, τότε πρέπει να στείλετε αυτό το αρχείο CSR στην αρχή έκδοσης πιστοποιητικών και θα σας δώσει ένα υπογεγραμμένο πιστοποιητικό κυρίως σε μορφή der ή pem που πρέπει να ρυθμίσετε στον διακομιστή ιστού Apache ή Nginx .
Δημιουργήστε ένα αυτο-υπογεγραμμένο πιστοποιητικό
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Η παραπάνω εντολή θα δημιουργήσει ένα αυτο-υπογεγραμμένο πιστοποιητικό και αρχείο κλειδιού με RSA 2048-bit. Έχω συμπεριλάβει επίσης το sha256 καθώς θεωρείται πιο ασφαλές αυτή τη στιγμή.
Συμβουλή: από προεπιλογή, θα δημιουργήσει ένα αυτο-υπογεγραμμένο πιστοποιητικό που ισχύει μόνο για ένα μήνα, επομένως μπορείτε να εξετάσετε το ενδεχόμενο να ορίσετε την παράμετρο –days για να παρατείνετε την ισχύ.
Π.χ.: να έχει αυτο-υπογεγραμμένη ισχύ για δύο χρόνια.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Επαληθεύστε το αρχείο CSR
openssl req -noout -text -in grtechpc.org.csr
Η επαλήθευση είναι απαραίτητη για να διασφαλίσετε ότι αποστέλλετε την ΕΚΕ στην αρχή έκδοσης με τα απαιτούμενα στοιχεία.
Δημιουργία ιδιωτικού κλειδιού RSA
openssl genrsa -out private.key 2048
Εάν χρειάζεται απλώς να δημιουργήσετε ιδιωτικό κλειδί RSA, μπορείτε να χρησιμοποιήσετε την παραπάνω εντολή. Έχω συμπεριλάβει το 2048 για ισχυρότερη κρυπτογράφηση.
Αφαιρέστε τη φράση πρόσβασης από το κλειδί
openssl rsa -in certkey.key -out nopassphrase.key
Εάν χρησιμοποιείτε φράση πρόσβασης στο αρχείο κλειδιού και χρησιμοποιείτε Apache, τότε κάθε φορά που ξεκινάτε, πρέπει να εισάγετε τον κωδικό πρόσβασης. Εάν είστε ενοχλημένοι με την εισαγωγή κωδικού πρόσβασης, τότε μπορείτε να χρησιμοποιήσετε το παραπάνω openssl rsa -in grtechpc.org.key -check για να αφαιρέσετε το κλειδί φράσης πρόσβασης από ένα υπάρχον κλειδί.
Επαλήθευση ιδιωτικού κλειδιού
openssl rsa -in certkey.key –check
Εάν αμφιβάλλετε για το αρχείο κλειδιού σας, μπορείτε να χρησιμοποιήσετε την παραπάνω εντολή για έλεγχο.
Επαλήθευση αρχείου πιστοποιητικού
openssl x509 -in certfile.pem -text –noout
Εάν θέλετε να επικυρώσετε δεδομένα πιστοποιητικού όπως CN, OU κ.λπ., μπορείτε να χρησιμοποιήσετε μια παραπάνω εντολή που θα σας δώσει λεπτομέρειες πιστοποιητικού.
Επαληθεύστε την αρχή που υπογράφει το πιστοποιητικό
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
Η αρχή έκδοσης πιστοποιητικών υπογράφει κάθε πιστοποιητικό και σε περίπτωση που χρειαστεί να το ελέγξετε.
Ελέγξτε την τιμή κατακερματισμού ενός πιστοποιητικού
openssl x509 -noout -hash -in bestflare.pem
Μετατροπή DER σε μορφή PEM
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Συνήθως, η αρχή έκδοσης πιστοποιητικών θα σας δώσει πιστοποιητικό SSL σε μορφή .der και αν χρειαστεί να τα χρησιμοποιήσετε σε μορφή apache ή .pem, τότε η παραπάνω εντολή θα σας βοηθήσει.
Μετατροπή PEM σε μορφή DER
openssl x509 –outform der –in sslcert.pem –out sslcert.der
Σε περίπτωση που χρειαστεί να αλλάξετε τη μορφή .pem σε .der
Μετατρέψτε το πιστοποιητικό και το ιδιωτικό κλειδί σε μορφή PKCS#12
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Εάν χρειάζεται να χρησιμοποιήσετε ένα πιστοποιητικό με την εφαρμογή java ή με οποιαδήποτε άλλη που δέχεται μόνο τη μορφή PKCS#12, μπορείτε να χρησιμοποιήσετε την παραπάνω εντολή, η οποία θα δημιουργήσει ένα μόνο pfx που περιέχει πιστοποιητικό και αρχείο κλειδιού.
Συμβουλή: μπορείτε επίσης να συμπεριλάβετε πιστοποιητικό αλυσίδας περνώντας το –chain όπως παρακάτω.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Δημιουργήστε CSR χρησιμοποιώντας ένα υπάρχον ιδιωτικό κλειδί
openssl req –out certificate.csr –key existing.key –new
Εάν δεν θέλετε να δημιουργήσετε ένα νέο ιδιωτικό κλειδί αντί να χρησιμοποιήσετε ένα υπάρχον, μπορείτε να ακολουθήσετε την παραπάνω εντολή.
Ελέγξτε τα περιεχόμενα του πιστοποιητικού μορφής PKCS12
openssl pkcs12 –info –nodes –in cert.p12
Το PKCS12 είναι μια δυαδική μορφή, επομένως δεν θα μπορείτε να προβάλετε το περιεχόμενο στο σημειωματάριο ή σε άλλο πρόγραμμα επεξεργασίας. Η παραπάνω εντολή θα σας βοηθήσει να δείτε τα περιεχόμενα του αρχείου PKCS12.
Μετατροπή μορφής PKCS12 σε πιστοποιητικό PEM
openssl pkcs12 –in cert.p12 –out cert.pem
Εάν θέλετε να χρησιμοποιήσετε την υπάρχουσα μορφή pkcs12 με Apache ή απλώς σε μορφή pem, αυτό θα είναι χρήσιμο.
Δοκιμάστε το πιστοποιητικό SSL συγκεκριμένης διεύθυνσης URL
openssl s_client -connect yoururl.com:443 –showcerts
Το χρησιμοποιώ αρκετά συχνά για να επικυρώσω το πιστοποιητικό SSL μιας συγκεκριμένης διεύθυνσης URL από τον διακομιστή. Αυτό είναι πολύ βολικό για την επικύρωση του πρωτοκόλλου, του κρυπτογράφησης και των στοιχείων του πιστοποιητικού.
Μάθετε την έκδοση OpenSSL
openssl version
Εάν είστε υπεύθυνοι για τη διασφάλιση της ασφάλειας του OpenSSL, πιθανότατα ένα από τα πρώτα πράγματα που πρέπει να κάνετε είναι να επαληθεύσετε την έκδοση.
Ελέγξτε την ημερομηνία λήξης του πιστοποιητικού αρχείου PEM
openssl x509 -noout -in certificate.pem -dates
Χρήσιμο εάν σκοπεύετε να βάλετε κάποια παρακολούθηση για να ελέγξετε την εγκυρότητα. Θα σας δείξει μια ημερομηνία στη σύνταξη notBefore και notAfter. Μετά από αυτό, θα πρέπει να επιβεβαιώσετε εάν ένα πιστοποιητικό έχει λήξει ή αν εξακολουθεί να ισχύει.
Πρώην:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
Ελέγξτε την Ημερομηνία Λήξης Πιστοποιητικού της διεύθυνσης URL SSL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Ένα άλλο χρήσιμο εάν σκοπεύετε να παρακολουθείτε εξ αποστάσεως την ημερομηνία λήξης του πιστοποιητικού SSL ή συγκεκριμένη διεύθυνση URL.
Πρώην:
[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Ελέγξτε εάν το SSL V2 ή V3 είναι αποδεκτό στη διεύθυνση URL
Για να ελέγξετε το SSL V2
openssl s_client -connect secureurl.com:443 -ssl2
Για να ελέγξετε το SSL V3
openssl s_client -connect secureurl.com:443 –ssl3
Για να ελέγξετε το TLS 1.0
openssl s_client -connect secureurl.com:443 –tls1
Για να ελέγξετε το TLS 1.1
openssl s_client -connect secureurl.com:443 –tls1_1
Για να ελέγξετε το TLS 1.2
openssl s_client -connect secureurl.com:443 –tls1_2
Εάν προστατεύετε έναν διακομιστή ιστού και πρέπει να επικυρώσετε εάν το SSL V2/V3 είναι ενεργοποιημένο ή όχι, μπορείτε να χρησιμοποιήσετε την παραπάνω εντολή. Εάν ενεργοποιηθεί, θα λάβετε “ΣΥΝΔΕΔΕΜΕΝΟ” διαφορετικά “αποτυχία χειραψίας”.
Επαληθεύστε εάν ο συγκεκριμένος κρυπτογράφηση είναι αποδεκτός στη διεύθυνση URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Εάν εργάζεστε σε ευρήματα ασφαλείας και τα αποτελέσματα των δοκιμών στυλό δείχνουν ότι ορισμένα από τα αδύναμα κρυπτογράφηση είναι αποδεκτά, τότε για επικύρωση, μπορείτε να χρησιμοποιήσετε την παραπάνω εντολή.
Φυσικά, θα πρέπει να αλλάξετε τον κρυπτογράφηση και τη διεύθυνση URL, στα οποία θέλετε να δοκιμάσετε. Εάν ο αναφερόμενος κρυπτογράφηση γίνει αποδεκτός, τότε θα λάβετε “ΣΥΝΔΕΣΗ” διαφορετικά “αποτυχία χειραψίας”.
Ελπίζω οι παραπάνω εντολές να σας βοηθήσουν να μάθετε περισσότερα για το OpenSSL για τη διαχείριση πιστοποιητικών SSL για τον ιστότοπό σας.