Ρύθμιση επαλήθευσης πιστοποιητικών MQTTS και HTTPS σε μετρητή IAMMETER
Οι μετρητές IAMMETER με υλικολογισμικό i.91.065.9 ή νεότερο μπορούν να επαληθεύουν το πιστοποιητικό διακομιστή όταν ανεβάζουν δεδομένα μέσω MQTTS ή HTTPS. Αυτό προσθέτει έλεγχο αλυσίδας πιστοποιητικών και ονόματος διακομιστή στις ασφαλείς εξερχόμενες συνδέσεις.
Το άρθρο αφορά τη ρύθμιση εμπιστοσύνης TLS. Δεν ρυθμίζει θέματα MQTT, payload JSON ή ανακάλυψη Home Assistant. Για τη δημοσίευση MQTT, δείτε Μετρητής MQTT: δημοσιεύστε δεδομένα IAMMETER στον δικό σας MQTT broker.
Σε αυτή τη σελίδα
- Επιλέξτε λειτουργία επαλήθευσης πιστοποιητικού
- Απαιτήσεις και σημαντικά όρια
- Ελέγξτε την τρέχουσα λειτουργία TLS
- Επιλέξτε επαλήθευση builtin
- Επιλέξτε none για προσωρινή διάγνωση
- Ανεβάστε και επιλέξτε προσαρμοσμένη CA
- Διαγράψτε την προσαρμοσμένη CA
- Χρησιμοποιήστε το IAMMETER Swagger UI
- Αντιμετώπιση προβλημάτων επαλήθευσης πιστοποιητικών
Επιλέξτε λειτουργία επαλήθευσης πιστοποιητικού
Οι πελάτες MQTTS και HTTPS του IAMMETER υποστηρίζουν τρεις λειτουργίες επαλήθευσης πιστοποιητικού διακομιστή:
| Λειτουργία | Αλυσίδα πιστοποιητικών | Όνομα διακομιστή | Χρήση |
|---|---|---|---|
builtin |
Επαλήθευση με Root CA ενσωματωμένες στο υλικολογισμικό | Επαληθεύεται | Συνιστάται για δημόσιες υπηρεσίες με υποστηριζόμενη αλυσίδα |
custom |
Επαλήθευση με PEM Root CA του χρήστη | Επαληθεύεται | Ιδιωτική PKI, αυτοϋπογεγραμμένα πιστοποιητικά ή μη ενσωματωμένες δημόσιες ρίζες |
none |
Δεν επαληθεύεται | Δεν επαληθεύεται | Μόνο προσωρινή συμβατότητα ή διάγνωση |
Οι ρυθμίσεις ισχύουν όταν η συσκευή IAMMETER λειτουργεί ως πελάτης TLS και ανεβάζει δεδομένα σε MQTTS broker ή διακομιστή HTTPS. Δεν ενεργοποιούν HTTPS στον τοπικό Web server της συσκευής.
builtin
Η builtin είναι η προεπιλεγμένη λειτουργία. Χρησιμοποιείται όταν δεν έχει αποθηκευτεί προηγούμενη ρύθμιση επαλήθευσης TLS και επανέρχεται μετά τη διαγραφή της διαμόρφωσης TLS CA ή την εργοστασιακή επαναφορά.
Το υλικολογισμικό περιέχει αυτές τις Root CA:
- DigiCert Global Root G2
- ISRG Root X1
Η συσκευή επαληθεύει τόσο την αλυσίδα όσο και το όνομα διακομιστή. Ο MQTTS broker ή διακομιστής HTTPS πρέπει να παρουσιάζει πιστοποιητικό με αλυσίδα προς μία από αυτές τις ρίζες, και το Subject Alternative Name (SAN) πρέπει να ταιριάζει με τη ρυθμισμένη διεύθυνση διακομιστή.
Αν η διεύθυνση μεταφόρτωσης χρησιμοποιεί IP, το SAN πρέπει να περιλαμβάνει ακριβώς αυτή την IP. Ένα όνομα DNS δεν ταιριάζει με μια IP, ακόμη κι αν οδηγούν στον ίδιο διακομιστή.
custom
Η custom κάνει τον ίδιο έλεγχο αλυσίδας και ονόματος με την builtin, αλλά εμπιστεύεται το πιστοποιητικό PEM CA που ανέβασε ο διαχειριστής. Χρησιμοποιήστε την όταν:
- το πιστοποιητικό διακομιστή εκδίδεται από ιδιωτική CA·
- η εγκατάσταση χρησιμοποιεί αυτοϋπογεγραμμένο πιστοποιητικό διακομιστή· ή
- η απαιτούμενη δημόσια Root CA δεν υπάρχει στο υλικολογισμικό.
Για ιδιωτική PKI ανεβάστε το πιστοποιητικό της Root CA. Ο διακομιστής TLS πρέπει ακόμη να στέλνει τα απαραίτητα ενδιάμεσα πιστοποιητικά κατά τη χειραψία. Αυτοϋπογεγραμμένο πιστοποιητικό διακομιστή μπορεί να ανέβει ως άγκυρα εμπιστοσύνης, αλλά το SAN πρέπει να ταιριάζει με το ρυθμισμένο όνομα ή την IP.
none
Η none εξακολουθεί να δημιουργεί κρυπτογραφημένη σύνδεση TLS, αλλά δεν επαληθεύει αλυσίδα ή όνομα διακομιστή. Μοιάζει με παλαιότερη συμπεριφορά TLS χωρίς έλεγχο ταυτότητας διακομιστή.
Αυτή η λειτουργία είναι ευάλωτη σε επιθέσεις ενδιάμεσου. Χρησιμοποιήστε την μόνο προσωρινά για συμβατότητα ή διάγνωση. Στην παραγωγή προτιμήστε builtin ή custom.
Απαιτήσεις και σημαντικά όρια
Τα API διαμόρφωσης TLS CA απαιτούν ενεργοποιημένο Local Admin Security. Κάθε αίτημα πρέπει να περιλαμβάνει το ρυθμισμένο όνομα χρήστη και τον κωδικό διαχειριστή μέσω HTTP Basic Authentication.
Ο υπολογιστής με curl ή Swagger UI πρέπει να φτάνει στην τοπική IP της συσκευής. Οι πελάτες MQTTS και HTTPS μοιράζονται μία λειτουργία επαλήθευσης και μία προσαρμοσμένη CA, άρα η αλλαγή ισχύει για την ασφαλή λειτουργία μεταφόρτωσης που χρησιμοποιεί η συσκευή.
Επανεκκινήστε τη συσκευή μετά από αλλαγές TLS, ώστε ο εξερχόμενος πελάτης να δημιουργηθεί με τις νέες ρυθμίσεις.
Τα παραδείγματα χρησιμοποιούν αυτές τις τιμές αντικατάστασης:
DEVICE_IP="192.168.1.80"
ADMIN_USER="admin"
ADMIN_PASSWORD="ExamplePassword1"
Αντικαταστήστε τις με την πραγματική διεύθυνση συσκευής και τα διαπιστευτήρια διαχειριστή.
Ελέγξτε την τρέχουσα λειτουργία TLS
API:
GET /api/tls/ca/status
Παράδειγμα:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
"http://$DEVICE_IP/api/tls/ca/status"
Παράδειγμα απόκρισης:
{
"successful": 1,
"mode": "builtin",
"customCaValid": 0,
"customCaLength": 0,
"customCaSha256": "",
"restartRequiredAfterChange": 1
}
Η απόκριση αναφέρει την επιλεγμένη λειτουργία και, αν υπάρχει αποθηκευμένη προσαρμοσμένη CA, το μήκος και τη σύνοψη SHA-256 της.
Επιλέξτε επαλήθευση builtin
API:
POST /api/tls/ca/select
Παράδειγμα:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
-X POST "http://$DEVICE_IP/api/tls/ca/select" \
-H "Content-Type: application/json" \
-d '{"mode":"builtin"}'
Επανεκκινήστε τη συσκευή μετά από επιτυχή απόκριση.
Επιλέξτε none για προσωρινή διάγνωση
API:
POST /api/tls/ca/select
Παράδειγμα:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
-X POST "http://$DEVICE_IP/api/tls/ca/select" \
-H "Content-Type: application/json" \
-d '{"mode":"none"}'
Η απόκριση προειδοποιεί ότι η επαλήθευση πιστοποιητικού διακομιστή είναι απενεργοποιημένη. Επανεκκινήστε μετά την αλλαγή και επιστρέψτε σε builtin ή custom μετά τη διάγνωση.
Ανεβάστε και επιλέξτε προσαρμοσμένη CA
Η μεταφόρτωση CA και η επιλογή custom είναι ξεχωριστές ενέργειες. Η μεταφόρτωση δεν αλλάζει αυτόματα την ενεργή λειτουργία.
Απαιτήσεις αρχείου προσαρμοσμένης CA
Το αρχείο πρέπει να πληροί όλες τις απαιτήσεις:
- μορφή πιστοποιητικού PEM·
- ακατέργαστο σώμα αιτήματος, όχι JSON ούτε
multipart/form-data· Content-Type: application/x-pem-file·- μήκος 1 έως 3072 byte, μαζί με κεφαλίδες PEM, αλλαγές γραμμής και κενά·
- περιέχει
-----BEGIN CERTIFICATE-----και-----END CERTIFICATE-----· - δεν περιέχει ιδιωτικό κλειδί.
Το όριο 3072 byte αφορά ολόκληρο το σώμα του HTTP αιτήματος. Αρχείο PEM 3072 byte γίνεται δεκτό, ενώ 3073 byte απορρίπτεται.
Ελέγξτε το μέγεθος αρχείου πριν το ανεβάσετε:
wc -c root-ca.pem
Βήμα 1: Ανεβάστε την CA
API:
POST /api/tls/ca/upload
Παράδειγμα:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
-X POST "http://$DEVICE_IP/api/tls/ca/upload" \
-H "Content-Type: application/x-pem-file" \
--data-binary @root-ca.pem
Παράδειγμα επιτυχούς απόκρισης:
{
"successful": 1,
"length": 1939,
"sha256": "64-character SHA-256 digest",
"message": "CA uploaded; select custom mode and restart"
}
Η συσκευή αποθηκεύει την CA σε πολλαπλά μπλοκ KV και ελέγχει το αποθηκευμένο μήκος και τη σύνοψη SHA-256 πριν τη χαρακτηρίσει ενεργή. Διακοπή εγγραφής δεν αντικαθιστά την προηγούμενη έγκυρη CA.
Βήμα 2: Επιλέξτε custom
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
-X POST "http://$DEVICE_IP/api/tls/ca/select" \
-H "Content-Type: application/json" \
-d '{"mode":"custom"}'
Η συσκευή απορρίπτει το αίτημα αν δεν υπάρχει αποθηκευμένη έγκυρη προσαρμοσμένη CA. Δεν επιστρέφει σιωπηρά σε none.
Βήμα 3: Επανεκκινήστε και επαληθεύστε
Επανεκκινήστε από την τοπική διαδικτυακή διεπαφή ή χρησιμοποιήστε το προστατευμένο API επανεκκίνησης:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
"http://$DEVICE_IP/api/restart?reset=false"
Μετά την επανασύνδεση, ζητήστε ξανά την κατάσταση:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
"http://$DEVICE_IP/api/tls/ca/status"
Επιβεβαιώστε ότι το mode είναι custom, το customCaValid είναι 1, και το μήκος και η σύνοψη SHA-256 συμφωνούν με το πιστοποιητικό που ανεβάσατε.
Διαγράψτε την προσαρμοσμένη CA
API:
POST /api/tls/ca/delete
Παράδειγμα:
curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
-X POST "http://$DEVICE_IP/api/tls/ca/delete"
Η διαγραφή της προσαρμοσμένης CA επαναφέρει και τη λειτουργία builtin. Επανεκκινήστε μετά τη διαγραφή.
Χρησιμοποιήστε το IAMMETER Swagger UI
Τα ίδια API μπορούν να δοκιμαστούν χωρίς χειροκίνητη γραφή εντολών curl:
IAMMETER WEM API Test - TLS CA
- Ανοίξτε το WEM API Test σε υπολογιστή που φτάνει στην τοπική IP της συσκευής.
- Εισαγάγετε τη διεύθυνση, π.χ.
192.168.1.80, και επιλέξτε Apply. - Επιλέξτε Authorize και εισαγάγετε όνομα χρήστη και κωδικό διαχειριστή.
- Ανοίξτε την ομάδα TLS CA - Authenticated.
- Με
GET /api/tls/ca/statusελέγξτε τη διαμόρφωση. - Χρησιμοποιήστε μεταφόρτωση, επιλογή ή διαγραφή όπως χρειάζεται.
- Επανεκκινήστε μετά από αλλαγή λειτουργίας ή πιστοποιητικού.
Η σελίδα Swagger εκτελείται στο πρόγραμμα περιήγησης και στέλνει αιτήματα απευθείας από τον υπολογιστή στη συσκευή IAMMETER. Δεν τα διαμεσολαβεί μέσω IAMMETER Cloud, επομένως χρειάζεται άμεση δικτυακή πρόσβαση στην IP της συσκευής.
Αντιμετώπιση προβλημάτων επαλήθευσης πιστοποιητικών
admin security required
Ενεργοποιήστε το Local Admin Security πριν χρησιμοποιήσετε τα API TLS CA. Οι ρυθμίσεις αυτές δεν αλλάζουν ανώνυμα.
custom CA is missing or invalid
Ανεβάστε επιτυχώς έγκυρη PEM CA πριν επιλέξετε custom. Ζητήστε /api/tls/ca/status και επιβεβαιώστε ότι το customCaValid είναι 1.
Η σύνδεση TLS αποτυγχάνει σε builtin ή custom
Ελέγξτε όλα τα παρακάτω:
- το ρυθμισμένο όνομα ή IP ταιριάζει με το SAN·
- το πιστοποιητικό ισχύει τώρα και η ώρα συσκευής είναι σωστή·
- ο διακομιστής στέλνει τα απαιτούμενα ενδιάμεσα πιστοποιητικά·
- η επιλεγμένη Root CA εξέδωσε ή μέσω της αλυσίδας εμπιστεύεται το πιστοποιητικό διακομιστή·
- η συσκευή επανεκκινήθηκε μετά την αλλαγή TLS.
Το TLS λειτουργεί σε none, αλλά αποτυγχάνει στις λειτουργίες επαλήθευσης
Συνήθως αυτό δείχνει πρόβλημα αλυσίδας πιστοποιητικών, ονόματος, περιόδου ισχύος ή ρολογιού συσκευής. Η διατήρηση του none κρύβει την αποτυχία ελέγχου ταυτότητας χωρίς να τη λύνει. Διορθώστε την εγκατάσταση πιστοποιητικών ή ανεβάστε την κατάλληλη Root CA και χρησιμοποιήστε custom.