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, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netz Live ist, überprüfen Sie, ob Sie die mögliche Auswirkung jedes möglichen Befehls verstehen.
Seit der IOx-Version wird die Signierung von AC5-Anwendungspaketen unterstützt. Mit dieser Funktion können Sie sicherstellen, dass das Anwendungspaket gültig ist und das auf dem Gerät installierte Paket von einer vertrauenswürdigen Quelle abgerufen wird. Wenn die Signaturüberprüfung des Anwendungspakets auf einer Plattform aktiviert ist, können nur signierte Anwendungen bereitgestellt werden.
Die folgenden Schritte sind für die Validierung der Paketsignatur erforderlich:
Anmerkung: Für diesen Artikel wird eine selbstsignierte Zertifizierungsstelle in einem Produktionsszenario verwendet. Die beste Option ist, eine offizielle Zertifizierungsstelle oder die Zertifizierungsstelle Ihres Unternehmens zu verwenden, um zu unterzeichnen.
Anmerkung: Die Optionen für die CA, die Schlüssel und die 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 Zertifizierungsstelle zu erstellen. Dies kann einfach durch Generieren eines Schlüssels für die Zertifizierungsstelle und eines Zertifikats für diesen Schlüssel erfolgen:
So generieren Sie den Zertifizierungsstellenschlü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.
Nachdem Sie den erforderlichen Schlüssel und das erforderliche Zertifikat für Ihre Zertifizierungsstelle erhalten haben, können Sie ein Vertrauensankerpaket für die Verwendung auf Ihrem IOx-Gerät erstellen. Das trust-Ankerpaket muss die vollständige CA-Signaturkette (falls Zwischenzertifikate zum Signieren verwendet werden) und eine Datei info.txt enthalten, die zum Bereitstellen der Metadaten (Freiform) 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 über mehrere Zertifizierungsstellenzertifikate verfügen, müssen Sie diese für die Erstellung der Zertifizierungsstellenzertifikatenkette optional in einer .pem-Datei zusammenfassen:
cat first_cert.pem second_cert.pem > combined_cert.pem
Anmerkung: Dieser Schritt ist für diesen Artikel nicht erforderlich, da ein einzelnes CA-Root-Zertifikat für die direkte Signierung verwendet wird. Dies wird für die Produktion nicht empfohlen, und das CA-Root-Tastenpaar muss immer offline gespeichert werden.
Die CA-Zertifikatskette muss ca-chain.cert.pem heißen. Bereiten Sie daher diese Datei vor:
[jedepuyd@KJK-SRVIOT-10 signing]$ cp rootca-cert.pem ca-chain.cert.pem
Schließlich können Sie die Datei 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
Die trustanchorv1.tar.gz, die Sie im vorherigen Schritt erstellt haben, muss auf Ihr IOx-Gerät importiert werden. Die Dateien im Paket werden verwendet, um zu überprüfen, ob eine Anwendung mit einem CA-signierten Zertifikat von der richtigen CA signiert wurde, bevor sie eine Installation zulässt.
Der Import des Trustankers kann über den ioxclient 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 > Trust Anchor importieren, wie im Bild dargestellt.

Wählen Sie die Datei aus, die Sie in Schritt 2 erzeugt haben, und klicken Sie auf OK, wie im Bild dargestellt.

Nachdem Sie den Vertrauensanker erfolgreich importiert haben, aktivieren Sie für die Validierung der Anwendungssignatur die Option Aktiviert, und klicken Sie auf Konfiguration speichern, wie im Bild gezeigt:

Als Nächstes können Sie ein Schlüssel-Zertifikat-Paar erstellen, das für die Anmeldung bei Ihrer IOx-Anwendung verwendet wird. Als Best Practice sollten Sie für jede Anwendung, die Sie bereitstellen möchten, ein bestimmtes Tastenpaar generieren.
Solange alle mit derselben Zertifizierungsstelle signiert sind, gelten sie alle 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 Zertifizierungsstelle müssen die Werte im Anwendungszertifikat an den Anwendungsfall angepasst werden.
Nachdem Sie die Anforderungen für Ihre CA und die Anwendungs-CSR festgelegt haben, können Sie die CSR-Anfrage mithilfe der 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 dieser Stelle sind Sie bereit, Ihre IOx-Anwendung zu packen und mit dem generierten Schlüsselpaar aus Schritt 4. zu signieren, das von der Zertifizierungsstelle in Schritt 5 signiert wurde.
Der übrige Prozess zum Erstellen der Quelle und von package.yaml für die Anwendung bleibt unverändert.
Paket IOx-Anwendung mit der Verwendung von Keypair:
[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 in diesem Prozess besteht in der Bereitstellung der Anwendung auf Ihrem IOx-Gerät. Im Vergleich zu einer Bereitstellung ohne Vorzeichen gibt es keinen 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
Verwenden Sie diesen Abschnitt, um zu überprüfen, ob Ihre Konfiguration ordnungsgemäß funktioniert.
So überprüfen Sie, ob ein Anwendungsschlüssel korrekt mit Ihrer Zertifizierungsstelle signiert wurde:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl verify -CAfile rootca-cert.pem app-cert.pem app-cert.pem: OK
In diesem Abschnitt erhalten Sie Informationen zur Behebung von Fehlern in Ihrer Konfiguration.
Wenn bei der Bereitstellung von Anwendungen Probleme 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 mit der Verwendung der Zertifizierungsstelle ist ein Fehler aufgetreten, oder es stimmt nicht mit dem Zertifikat im vertrauenswürdigen Ankerpaket überein.
Verwenden Sie die Anweisungen im Abschnitt Überprüfen, um Ihre Zertifikate und auch das vertrauenswürdige Ankerpaket zu überprüfen.
Diese Fehlermeldung zeigt an, dass Ihr Paket nicht korrekt signiert wurde. Sie können sich Schritt 6. noch einmal ansehen.
[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"
}
Feedback