hacktricks/cryptography/certificates.md

190 lines
18 KiB
Markdown
Raw Normal View History

2024-02-10 22:40:18 +00:00
# Πιστοποιητικά
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Άλλοι τρόποι υποστήριξης του HackTricks:
2023-12-30 10:12:47 +00:00
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
2024-02-10 22:40:18 +00:00
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία κοινότητας στον κόσμο.\
2024-02-10 22:40:18 +00:00
Αποκτήστε πρόσβαση σήμερα:
2022-05-01 16:32:23 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-06-06 22:28:05 +00:00
## Τι είναι ένα Πιστοποιητικό
Ένα **πιστοποιητικό δημόσιου κλειδιού** είναι ένα ψηφιακό αναγνωριστικό που χρησιμοποιείται στην κρυπτογραφία για να αποδείξει ότι κάποιος κατέχει ένα δημόσιο κλειδί. Περιλαμβάνει τα στοιχεία του κλειδιού, την ταυτότητα του ιδιοκτήτη (το θέμα) και μια ψηφιακή υπογραφή από μια αξιόπιστη αρχή (ο εκδότης). Εάν το λογισμικό εμπιστεύεται τον εκδότη και η υπογραφή είναι έγκυρη, είναι δυνατή η ασφαλής επικοινωνία με τον ιδιοκτήτη του κλειδιού.
Τα πιστοποιητικά εκδίδονται κυρίως από [αρχές πιστοποίησης](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) σε ένα σύστημα [υποδομής δημόσιου κλειδιού](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Ένας άλλος τρόπος είναι το [δίκτυο εμπιστοσύνης](https://en.wikipedia.org/wiki/Web\_of\_trust), όπου οι χρήστες επαληθεύουν απευθείας τα κλειδιά τους. Η κοινή μορφή για τα πιστοποιητικά είναι το [X.509](https://en.wikipedia.org/wiki/X.509), το οποίο μπορεί να προσαρμοστεί για συγκεκριμένες ανάγκες, όπως περιγράφεται στο RFC 5280.
## Κοινά Πεδία x509
### **Κοινά Πεδία στα Πιστοποιητικά x509**
Στα πιστοποιητικά x509, διάφορα **πεδία** παίζουν κρίσιμο ρόλο για τη διασφάλιση της εγκυρότητας και της ασφάλειας του πιστοποιητικού. Εδώ υπάρχει μια ανάλυση αυτών των πεδίων:
* Ο **Αριθμός Έκδοσης** υποδηλώνει την έκδοση της μορφής x509.
* Ο **Σειριακός Αριθμός** ταυτοποιεί μοναδικά το πιστοποιητικό εντός του συστήματος μιας Αρχής Πιστοποίησης (CA), κυρίως για την παρακολούθηση ανάκλησης.
* Το πεδίο **Θέμα** αντιπροσωπεύει τον ιδιοκτήτη του πιστοποιητικού, ο οποίος μπορεί να είναι μια μηχανή, ένα άτομο ή μια οργάνωση. Περιλαμβάνει λεπτομερείς ταυτοποιήσεις όπως:
* **Κοινό Όνομα (CN)**: Τομείς που καλύπτονται από το πιστοποιητικό.
* **Χώρα (C)**, **Τοποθεσία (L)**, **Πολιτεία ή Επαρχία (ST, S, ή P)**, **Οργανισμός (O)**, και **Μονάδα Οργάνωσης (OU)** παρέχουν γεωγραφικές και οργανωτικές λεπτομέρειες.
* Το **Διακεκριμένο Όνομα (DN)** ενθυλακώνει την πλήρη ταυτοποίηση του θέματος.
* Ο **Εκδότης** λεπτομερείς ποιος επικύρωσε και υπέγραψε το πιστοποιητικό, περιλαμβάνοντας παρόμοια υποπεδία με το Θέμα για την ΑΠ.
* Η **Περίοδος Εγκυρότητας** σημειώνεται από τις χρονικές σφραγίδες **Μην Πριν** και **Μη Μετά**, εξασφαλίζοντας ότι το πιστοποιητικό δεν χρησιμοποιείται πριν ή μετά από μια συγκεκριμένη ημερομηνία.
* Η ενότητα **Δημόσιο Κλειδί**, κρίσιμη για την ασφάλεια του πιστοποιητικού, καθορίζει τον αλγόριθμο, το μέγεθος και άλλες τεχνικές λεπτομέρειες του δημόσιου κλειδιού.
* Οι επεκτάσεις **x509v3** ενισχύουν τη λειτουργικότητα του πιστοποιητικού, καθορίζοντας τις **Χρήσεις Κλειδιού**, τις **Επεκταμένες Χρήσεις Κλειδιού**, τα **Εναλλακτικά Ονόματα Θέματος**, και άλλες ιδιότητες για να ρυθμίσουν την εφαρμογή του πιστοποιητικού.
#### **Χρήση Κλειδιού και Επεκτάσεις**
* Η **Χρήση Κλειδιού** αναγνωρίζει τις κρυπτογραφικές εφαρμογές του δημόσιου κλειδιού, όπως η ψηφιακή υπογραφή ή η κρυπτογράφηση κλειδιού.
* Η **Επεκταμένη Χρήση Κλειδιού** στενεύει περαιτέρω τις περιπτώσεις χρήσης του πιστοποιητικού, π.χ. για την επαλήθευση του διακομιστή TLS.
* Το **Εναλλακτικό Όνομα Θέματος** και η **Βασική Περιοριστική Συνθήκη** καθορίζουν επιπλέον ονόματα υποδομών που καλύπτονται από το πιστοποιητικό και εάν είναι πιστοποιητικό CA ή οντότητας τέλους, αντίστοιχα.
* Οι αναγνωριστές όπως το **Αναγνωριστικό Κλειδιού Θέματος** και το **Αναγνωριστικό Κλειδιού Αρχής** εξασφαλίζουν τη μοναδικότητα και την εντοπισιμότητα των κλειδιών.
* Τα **Στοιχεία Πρόσβασης Αρχής** και τα **Σημεία Διανομής Καταλόγου Ανάκλησης** παρέχουν διαδρομές για την επαλήθευση της εκδίδουσας ΑΠ και τον έλεγχο της κατάστασης ανάκλησης του πιστοποιητικού.
* Τα **CT Precertificate SCTs** προσφέρουν διαφανείς καταγραφές, ουσιώδεις για τη δημόσια εμπιστοσύνη στο πιστοποιητικό.
2024-02-08 21:36:35 +00:00
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
from cryptography.hazmat.backends import default_backend
2024-02-08 21:36:35 +00:00
# Load an x509 certificate (assuming cert.pem is a certificate file)
with open("cert.pem", "rb") as file:
2024-02-10 22:40:18 +00:00
cert_data = file.read()
certificate = x509.load_pem_x509_certificate(cert_data, default_backend())
2024-02-08 21:36:35 +00:00
# Accessing fields
serial_number = certificate.serial_number
issuer = certificate.issuer
subject = certificate.subject
public_key = certificate.public_key()
2024-02-08 21:36:35 +00:00
print(f"Serial Number: {serial_number}")
print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
### **Διαφορά μεταξύ σημείων διανομής OCSP και CRL**
2024-02-08 21:36:35 +00:00
**OCSP** (**RFC 2560**) περιλαμβάνει έναν πελάτη και έναν ανταποκρίνοντα που συνεργάζονται για να ελέγξουν εάν ένα ψηφιακό πιστοποιητικό δημόσιου κλειδιού έχει ανακληθεί, χωρίς την ανάγκη να ληφθεί ολόκληρο το **CRL**. Αυτή η μέθοδος είναι πιο αποδοτική από το παραδοσιακό **CRL**, το οποίο παρέχει μια λίστα με τους αριθμούς σειριακής ανάκλησης πιστοποιητικών αλλά απαιτεί τη λήψη ενός ενδεχομένως μεγάλου αρχείου. Τα CRL μπορούν να περιλαμβάνουν έως 512 καταχωρήσεις. Περισσότερες λεπτομέρειες είναι διαθέσιμες [εδώ](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Τι είναι η Διαφάνεια Πιστοποιητικών**
Η Διαφάνεια Πιστοποιητικών βοηθά στην καταπολέμηση απειλών που σχετίζονται με πιστοποιητικά εξασφαλίζοντας ότι η έκδοση και η ύπαρξη πιστοποιητικών SSL είναι ορατές στους ιδιοκτήτες τομέα, τις Αρχές Πιστοποίησης και τους χρήστες. Οι στόχοι της είναι:
* Αποτροπή των Αρχών Πιστοποίησης από το να εκδίδουν πιστοποιητικά SSL για έναν τομέα χωρίς τη γνώση του ιδιοκτήτη του τομέα.
* Δημιουργία ενός ανοιχτού συστήματος ελέγχου για την παρακολούθηση πιστοποιητικών που έχουν εκδοθεί κατά λάθος ή κακόβουλα.
* Προστασία των χρηστών από απάτες με πιστοποιητικά.
#### **Καταγραφές Πιστοποιητικών**
Οι καταγραφές πιστοποιητικών είναι δημόσια ελέγξιμες, αναπτυσσόμενες μόνο προς τα εμπρός εγγραφές πιστοποιητικών, διατηρούμενες από υπηρεσίες δικτύου. Αυτές οι καταγραφές παρέχουν κρυπτογραφικές αποδείξεις για λόγους ελέγχου. Τόσο οι αρχές έκδοσης όσο και το κοινό μπορούν να υποβάλλουν πιστοποιητικά σε αυτές τις καταγραφές ή να τις ερευνούν για επαλήθευση. Ενώ ο ακριβής αριθμός των διακομιστών καταγραφής δεν είναι σταθερός, αναμένεται να είναι λιγότεροι από χίλιους παγκοσμίως. Αυτοί οι διακομιστές μπορούν να διαχειρίζονται ανεξάρτητα από Αρχές Πιστοποίησης, παρόχους υπηρεσιών Internet ή οποιοδήποτε ενδιαφερόμενο φορέα.
2024-02-10 22:40:18 +00:00
#### **Ερώτημα**
Για να εξερευνήσετε τις καταγραφές Διαφάνειας Πιστοποιητικών για οποιοδήποτε τομέα, επισκεφθείτε το [https://crt.sh/](https://crt.sh).
2024-02-10 22:40:18 +00:00
## **Μορφές**
2024-02-08 21:36:35 +00:00
2024-02-10 22:40:18 +00:00
### **Μορφή PEM**
* Η πιο ευρέως χρησιμοποιούμενη μορφή για πιστοποιητικά.
* Απαιτεί ξεχωριστά αρχεία για πιστοποιητικά και ιδιωτικά κλειδιά, κωδικοποιημένα σε Base64 ASCII.
* Συνηθισμένες επεκτάσεις: .cer, .crt, .pem, .key.
* Χρησιμοποιείται κυρίως από διακομιστές Apache και παρόμοιους.
2024-02-08 21:36:35 +00:00
2024-02-10 22:40:18 +00:00
### **Μορφή DER**
2024-02-08 21:36:35 +00:00
* Μια δυαδική μορφή πιστοποιητικών.
* Δεν περιλαμβάνει τις δηλώσεις "BEGIN/END CERTIFICATE" που βρίσκονται στα αρχεία PEM.
* Συνηθισμένες επεκτάσεις: .cer, .der.
* Συχνά χρησιμοποιείται με πλατφόρμες Java.
2024-02-08 21:36:35 +00:00
### **Μορφή P7B/PKCS#7**
2024-02-08 21:36:35 +00:00
* Αποθηκεύεται σε Base64 ASCII, με επεκτάσεις .p7b ή .p7c.
* Περιλαμβάνει μόνο πιστοποιητικά και αλυσίδες πιστοποιητικών, εξαιρώντας το ιδιωτικό κλειδί.
* Υποστηρίζεται από τα Microsoft Windows και Java Tomcat.
2024-02-08 21:36:35 +00:00
### **Μορφή PFX/P12/PKCS#12**
2024-02-08 21:36:35 +00:00
* Μια δυαδική μορφή που ενθυλακώνει πιστοποιητικά διακομιστή, ενδιάμεσα πιστοποιητικά και ιδιωτικά κλειδιά σε ένα αρχείο.
* Επεκτάσεις: .pfx, .p12.
* Χρησιμοποιείται κυρίως σε Windows για εισαγωγή και εξαγωγή πιστοποιητικών.
2024-02-08 21:36:35 +00:00
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
* **Μετατροπή από PEM σε DER**
2024-02-08 21:36:35 +00:00
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
* **Μετατροπή από DER σε PEM**
2024-02-08 21:36:35 +00:00
```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem
```
* **Μετατροπή από PEM σε P7B**
2024-02-08 21:36:35 +00:00
```bash
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
```
* **Μετατροπή από PKCS7 σε PEM**
2024-02-08 21:36:35 +00:00
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
2024-02-10 22:40:18 +00:00
**Οι μετατροπές PFX** είναι κρίσιμες για τη διαχείριση πιστοποιητικών στα Windows:
* **PFX σε PEM**
2024-02-08 21:36:35 +00:00
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
* **PFX σε PKCS#8** περιλαμβάνει δύο βήματα:
2024-02-10 22:40:18 +00:00
1. Μετατροπή PFX σε PEM
2024-02-08 21:36:35 +00:00
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2024-02-10 22:40:18 +00:00
2. Μετατροπή από PEM σε PKCS8
2024-02-08 21:36:35 +00:00
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
* **Από P7B σε PFX** απαιτεί επίσης δύο εντολές:
1. Μετατροπή από P7B σε CER
2024-02-08 21:36:35 +00:00
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
2. Μετατροπή αρχείου CER και Ιδιωτικού Κλειδιού σε PFX
2024-02-08 21:36:35 +00:00
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
2024-02-08 21:36:35 +00:00
***
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
2024-02-10 22:40:18 +00:00
Αποκτήστε πρόσβαση σήμερα:
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-05-01 16:32:23 +00:00
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Άλλοι τρόποι υποστήριξης του HackTricks:
2023-12-30 10:12:47 +00:00
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
2024-02-10 22:40:18 +00:00
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
2024-02-10 22:40:18 +00:00
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο github.
2022-04-28 16:01:33 +00:00
</details>