In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
In diesem Dokument wird detailliert beschrieben, wie signierte Pakete auf der IOx-Plattform erstellt und verwendet werden.
Cisco empfiehlt, über Kenntnisse in folgenden Bereichen zu verfügen:
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Seit IOx-Version wird die Signierung von AC5-Anwendungspaketen unterstützt. Diese Funktion stellt sicher, dass das Anwendungspaket gültig ist und das auf dem Gerät installierte Paket von einer vertrauenswürdigen Quelle bezogen wird. Wenn die Signatursignaturüberprüfung für Anwendungspakete auf einer Plattform aktiviert ist, können nur signierte Anwendungen bereitgestellt werden.
Die folgenden Schritte sind erforderlich, um die Paketsignaturüberprüfung zu verwenden:
Hinweis: In diesem Artikel wird eine selbstsignierte CA in einem Produktionsszenario verwendet. Die beste Option ist, eine offizielle CA oder die CA Ihres Unternehmens zu unterschreiben.
Hinweis: Die Optionen für CA, Schlüssel und Signaturen werden nur für Laborzwecke ausgewählt und müssen möglicherweise an Ihre Umgebung angepasst werden.
Der erste Schritt besteht darin, eine eigene CA zu erstellen. Dies kann einfach durch Generieren eines Schlüssels für die CA und eines Zertifikats für diesen Schlüssel erfolgen:
So generieren Sie den CA-Schlüssel:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl genrsa -out rootca-key.pem 2048 Generating RSA private key, 2048 bit long modulus .........................................................................................+++ .......+++ e is 65537 (0x10001)
So generieren Sie das Zertifizierungsstellenzertifikat:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl req -x509 -new -nodes -key rootca-key.pem -sha256 -days 4096 -out rootca-cert.pem You are about to be asked to enter information that is incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name (DN). There are quite a few fields but you can leave some blank For some fields there can be a default value, If you enter '.', the field can be left blank. ----- Country Name (2 letter code) [XX]:BE State or Province Name (full name) []:WVL Locality Name (eg, city) [Default City]:Kortrijk Organization Name (eg, company) [Default Company Ltd]:Cisco Organizational Unit Name (eg, section) []:IOT Common Name (eg, your name or your server's hostname) []:ioxrootca Email Address []:
Die Werte im Zertifizierungsstellenzertifikat müssen an Ihren Anwendungsfall angepasst werden.
Da Sie jetzt über den erforderlichen Schlüssel und das erforderliche Zertifikat für Ihre CA verfügen, können Sie ein Ankerpaket für Vertrauensstellungszwecke für die Verwendung auf Ihrem IOx-Gerät erstellen. Das Vertrauensanker-Paket muss die vollständige Zertifizierungsstellenkette der Zertifizierungsstelle (falls Zwischenzertifikat für die Signierung verwendet wird) und eine Datei info.txt enthalten, die zur Bereitstellung der Metadaten (frei zugängliches Formular) verwendet wird.
Erstellen Sie zunächst die Datei info.txt, und fügen Sie einige Metadaten hinzu:
[jedepuyd@KJK-SRVIOT-10 signing]$ echo "iox app root ca v1">info.txt
Wenn Sie mehrere Zertifizierungsstellenzertifikate besitzen, müssen Sie diese optional in einem .pem zusammenfassen, um die Zertifizierungsstellenkette zu bilden:
cat first_cert.pem second_cert.pem > combined_cert.pem
Hinweis: Dieser Schritt ist für diesen Artikel nicht erforderlich, da ein einzelnes CA-Root-Zertifikat zum Direktzeichen verwendet wird, wird dies für die Produktion nicht empfohlen und das Root-CA-Schlüsselpaar muss immer offline gespeichert werden.
Die Zertifizierungsstellenkette der Zertifizierungsstelle muss den Namen ca-chain.cert.pem tragen. Bereiten Sie diese Datei also vor:
[jedepuyd@KJK-SRVIOT-10 signing]$ cp rootca-cert.pem ca-chain.cert.pem
Schließlich können Sie die Dateien ca-chain.cert.pem und info.txt in einem gezippten Tar kombinieren:
[jedepuyd@KJK-SRVIOT-10 signing]$ tar -czf trustanchorv1.tar.gz ca-chain.cert.pem info.txt
Der im vorherigen Schritt erstellte trustanchorv1.tar.gz muss auf das IOx-Gerät importiert werden. Die Dateien im Paket werden verwendet, um zu überprüfen, ob eine Anwendung mit einem Zertifikat signiert wurde, das von einer Zertifizierungsstelle signiert wurde, bevor sie eine Installation zulässt.
Der Import des Vertrauensankers kann über den ioxlcient erfolgen:
[jedepuyd@KJK-SRVIOT-10 signing]$ ioxclient platform signedpackages trustanchor set trustanchorv1.tar.gz Currently active profile : default Command Name: plt-sign-pkg-ta-set Response from the server: Imported trust anchor file successfully [jedepuyd@KJK-SRVIOT-10 signing]$ ioxclient platform signedpackages enable Currently active profile : default Command Name: plt-sign-pkg-enable Successfully updated the signed package deployment capability on the device to true
Eine weitere Option besteht darin, den Vertrauensanker über den lokalen Manager zu importieren:
Navigieren Sie zu Systemeinstellungen > Vertrauenswürdigen Anker importieren, wie im Bild gezeigt.
Wählen Sie die Datei aus, die Sie in Schritt 2 generiert haben. und klicken Sie auf OK, wie im Bild gezeigt.
Nachdem Sie den Vertrauensanker erfolgreich importiert haben, aktivieren Sie Enabled for Application Signing Validation (Aktiviert für die Validierung der Anwendungssignatur), und klicken Sie auf Save Configuration, wie im Bild gezeigt:
Anschließend können Sie ein Schlüssel- und Zertifikatspaar erstellen, das zur Anmeldung bei der IOx-Anwendung verwendet wird. Die Best Practice besteht darin, für jede Anwendung, die Sie bereitstellen möchten, eine bestimmte Tastatur zu generieren.
Solange alle mit derselben CA signiert sind, gelten sie als gültig.
So generieren Sie den anwendungsspezifischen Schlüssel:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl genrsa -out app-key.pem 2048 Generating RSA private key, 2048 bit long modulus .......+++ ...+++ e is 65537 (0x10001)
So generieren Sie die CSR:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl req -new -key app-key.pem -out app.csr You are about to be asked to enter information that is incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name (DN). There are quite a few fields but you can leave some blank. For some fields there can be a default value, If you enter '.', the field can be left blank. ----- Country Name (2 letter code) [XX]:BE State or Province Name (full name) []:WVL Locality Name (eg, city) [Default City]:Kortrijk Organization Name (eg, company) [Default Company Ltd]:Cisco Organizational Unit Name (eg, section) []:IOT Common Name (eg, your name or your server's hostname) []:ioxapp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Wie bei der CA müssen die Werte im Anwendungszertifikat an Ihren Anwendungsfall angepasst werden.
Nachdem Sie nun die Anforderungen für Ihre CA und Anwendungs-CSR erfüllt haben, können Sie die CSR mit CA signieren. Das Ergebnis ist ein signiertes anwendungsspezifisches Zertifikat:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl x509 -req -in app.csr -CA rootca-cert.pem -CAkey rootca-key.pem -CAcreateserial -out app-cert.pem -days 4096 -sha256 Signature ok subject=/C=BE/ST=WVL/L=Kortrijk/O=Cisco/OU=IOT/CN=ioxapp Getting CA Private Key
An diesem Punkt sind Sie bereit, Ihre IOx-Anwendung zu packen und mit der generierten Tastatur aus Schritt 4 zu signieren. und von der Zertifizierungsstelle in Schritt 5 unterzeichnet.
Der restliche Prozess zum Erstellen der source und package.yaml für die Anwendung bleibt unverändert.
Paket-IOx-Anwendung mit der Verwendung von Tastenfeld:
[jedepuyd@KJK-SRVIOT-10 iox_docker_pythonsleep]$ ioxclient package --rsa-key ../signing/app-key.pem --certificate ../signing/app-cert.pem . Currently active profile : default Command Name: package Using rsa key and cert provided via command line to sign the package Checking if package descriptor file is present.. Validating descriptor file /home/jedepuyd/iox/iox_docker_pythonsleep/package.yaml with package schema definitions Parsing descriptor file.. Found schema version 2.2 Loading schema file for version 2.2 Validating package descriptor file.. File /home/jedepuyd/iox/iox_docker_pythonsleep/package.yaml is valid under schema version 2.2 Created Staging directory at : /tmp/666018803 Copying contents to staging directory Checking for application runtime type Couldn't detect application runtime type Creating an inner envelope for application artifacts Excluding .DS_Store Generated /tmp/666018803/artifacts.tar.gz Calculating SHA1 checksum for package contents.. Package MetaData file was not found at /tmp/666018803/.package.metadata Wrote package metadata file : /tmp/666018803/.package.metadata Root Directory : /tmp/666018803 Output file: /tmp/096960694 Path: .package.metadata SHA1 : 2a64461a921c2d5e8f45e92fe203127cf8a06146 Path: artifacts.tar.gz SHA1 : 63da3eb3d81e13249b799bf57845f3fc9f6f2f94 Path: package.yaml SHA1 : 0e6259e49ff22d6d38e6d1913759c5674c5cec6d Generated package manifest at package.mf Signed the package and the signature is available at package.cert Generating IOx Package.. Package generated at /home/jedepuyd/iox/iox_docker_pythonsleep/package.tar
Der letzte Schritt des Prozesses ist die Bereitstellung der Anwendung auf Ihrem IOx-Gerät. Im Vergleich zu einer nicht signierten Anwendungsbereitstellung besteht kein Unterschied:
[jedepuyd@KJK-SRVIOT-10 iox_docker_pythonsleep]$ ioxclient app install test package.tar Currently active profile : default Command Name: application-install Saving current configuration Installation Successful. App is available at : https://10.50.215.248:8443/iox/api/v2/hosting/apps/test Successfully deployed
In diesem Abschnitt überprüfen Sie, ob Ihre Konfiguration ordnungsgemäß funktioniert.
Um zu überprüfen, ob ein Anwendungsschlüssel korrekt mit Ihrer CA signiert ist, können Sie Folgendes tun:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl verify -CAfile rootca-cert.pem app-cert.pem app-cert.pem: OK
Dieser Abschnitt enthält Informationen, die Sie zur Fehlerbehebung bei Ihrer Konfiguration verwenden können.
Wenn Probleme bei der Anwendungsbereitstellung auftreten, kann einer der folgenden Fehler auftreten:
[jedepuyd@KJK-SRVIOT-10 iox_docker_pythonsleep]$ ioxclient app install test package.tar Currently active profile : default Command Name: application-install Saving current configuration Could not complete your command : Error. Server returned 500 { "description": "Invalid Archive file: Certificate verification failed: [18, 0, 'self signed certificate']", "errorcode": -1, "message": "Invalid Archive file" }
Beim Signieren des Anwendungszertifikats mithilfe der CA ist etwas schief gegangen, oder es stimmt nicht mit dem Zertifikat im Ankerpaket überein.
Überprüfen Sie anhand der Anweisungen im Abschnitt Überprüfen Ihre Zertifikate und auch das Ankerpaket.
Diese Fehlermeldung weist darauf hin, dass Ihr Paket nicht richtig signiert wurde. Sie können Schritt 6 aufrufen. wieder.
[jedepuyd@KJK-SRVIOT-10 iox_docker_pythonsleep]$ ioxclient app install test2 package.tar Currently active profile : default Command Name: application-install Saving current configuration Could not complete your command : Error. Server returned 500 { "description": "Package signature file package.cert or package.sign not found in package", "errorcode": -1009, "message": "Error during app installation" }