De documentatie van dit product is waar mogelijk geschreven met inclusief taalgebruik. Inclusief taalgebruik wordt in deze documentatie gedefinieerd als taal die geen discriminatie op basis van leeftijd, handicap, gender, etniciteit, seksuele oriëntatie, sociaaleconomische status of combinaties hiervan weerspiegelt. In deze documentatie kunnen uitzonderingen voorkomen vanwege bewoordingen die in de gebruikersinterfaces van de productsoftware zijn gecodeerd, die op het taalgebruik in de RFP-documentatie zijn gebaseerd of die worden gebruikt in een product van een externe partij waarnaar wordt verwezen. Lees meer over hoe Cisco gebruikmaakt van inclusief taalgebruik.
Cisco heeft dit document vertaald via een combinatie van machine- en menselijke technologie om onze gebruikers wereldwijd ondersteuningscontent te bieden in hun eigen taal. Houd er rekening mee dat zelfs de beste machinevertaling niet net zo nauwkeurig is als die van een professionele vertaler. Cisco Systems, Inc. is niet aansprakelijk voor de nauwkeurigheid van deze vertalingen en raadt aan altijd het oorspronkelijke Engelstalige document (link) te raadplegen.
In dit document wordt gedetailleerd beschreven hoe u ondertekende pakketten kunt maken en gebruiken op het IOx-platform.
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Sinds de release van IOx wordt de ondertekening van het AC5-toepassingspakket ondersteund. Met deze functie kunt u ervoor zorgen dat het toepassingspakket geldig is en dat het pakket dat op het apparaat is geïnstalleerd, wordt verkregen uit een vertrouwde bron. Als de validatie van de handtekening van het toepassingspakket is ingeschakeld in een platform, kunnen alleen ondertekende toepassingen worden geïmplementeerd.
Deze stappen zijn vereist om de validatie van de pakkethandtekening te gebruiken:
Opmerking: Voor dit artikel wordt een zelfondertekende CA gebruikt in een productiescenario. De beste optie is om een officiële CA of de CA van uw bedrijf te ondertekenen.
Opmerking: de opties voor de CA, sleutels en handtekeningen worden alleen voor laboratoriumdoeleinden gekozen en moeten mogelijk worden aangepast aan uw omgeving.
De eerste stap is om je eigen CA te maken. Dit kan eenvoudig worden gedaan door het genereren van een sleutel voor de CA en een certificaat voor die sleutel:
Om de CA-sleutel te genereren:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl genrsa -out rootca-key.pem 2048 Generating RSA private key, 2048 bit long modulus .........................................................................................+++ .......+++ e is 65537 (0x10001)
Om het CA-certificaat te genereren:
[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 []:
De waarden in het CA-certificaat moeten worden aangepast aan uw use case.
Nu u de benodigde sleutel en het vereiste certificaat voor uw CA hebt, kunt u een vertrouwensankerbundel maken voor gebruik op uw IOx-apparaat. De vertrouwensankerbundel moet de volledige CA-ondertekeningsketen bevatten (in het geval dat tussenliggende certificaten worden gebruikt voor ondertekening) en een info.txt-bestand dat wordt gebruikt om de (vrije vorm) metagegevens te verstrekken.
Maak eerst het bestand info.txt en zet er wat metadata in:
[jedepuyd@KJK-SRVIOT-10 signing]$ echo "iox app root ca v1">info.txt
Als u meerdere CA-certificaten hebt om uw CA-certificaatketen te vormen, moet u deze optioneel samenstellen in één .pem:
cat first_cert.pem second_cert.pem > combined_cert.pem
Opmerking: deze stap is niet vereist voor dit artikel, omdat een enkel CA-basiscertificaat wordt gebruikt om direct te ondertekenen, wordt dit niet aanbevolen voor productie en moet het root CA-sleutelpaar altijd offline worden opgeslagen.
De CA-certificaatketen moet de naam ca-chain.cert.pem krijgen, dus bereid dit bestand voor:
[jedepuyd@KJK-SRVIOT-10 signing]$ cp rootca-cert.pem ca-chain.cert.pem
Ten slotte kunt u de ca-chain.cert.pem en info.txt combineren in een gegzipte teer:
[jedepuyd@KJK-SRVIOT-10 signing]$ tar -czf trustanchorv1.tar.gz ca-chain.cert.pem info.txt
De trustanchorv1.tar.gz die u in de vorige stap hebt gemaakt, moet op uw IOx-apparaat worden geïmporteerd. De bestanden in de bundel worden gebruikt om te controleren of een toepassing is ondertekend met een CA-ondertekend certificaat van de juiste CA voordat deze een installatie toestaat.
Het importeren van het vertrouwensanker kan via de ioxclient:
[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
Een andere optie is om het vertrouwensanker te importeren via Local Manager:
Navigeer naar Systeeminstellingen > Vertrouwensanker importeren zoals in de afbeelding wordt weergegeven.

Selecteer het bestand dat u hebt gegenereerd in stap 2. en klik op OK zoals weergegeven in de afbeelding.

Nadat u het vertrouwensanker met succes hebt geïmporteerd, controleert u Ingeschakeld voor validatie van toepassingsondertekening en klikt u op Configuratie opslaan zoals weergegeven in de afbeelding:

Vervolgens kunt u een sleutel- en certificaatpaar maken dat wordt gebruikt om u aan te melden bij uw IOx-toepassing. De beste praktijk is om één specifiek sleutelpaar te genereren voor elke toepassing die u van plan bent te implementeren.
Zolang elk van deze is ondertekend met dezelfde CA, worden ze allemaal als geldig beschouwd.
Om de toepassingsspecifieke sleutel te genereren:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl genrsa -out app-key.pem 2048 Generating RSA private key, 2048 bit long modulus .......+++ ...+++ e is 65537 (0x10001)
Om de CSR te genereren:
[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 []:
Net als bij de CA moeten de waarden in het aanvraagcertificaat worden aangepast aan uw use case.
Nu u de vereisten voor uw CA en CSR-toepassing hebt, kunt u de CSR ondertekenen met het gebruik van CA. Het resultaat is een ondertekend aanvraagspecifiek certificaat:
[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
Op dit punt bent u klaar om uw IOx-toepassing te verpakken en te ondertekenen met het gegenereerde sleutelpaar uit stap 4. en ondertekend door de CA in stap 5.
De rest van het proces om de bron en package.yaml voor uw toepassing te maken blijft ongewijzigd.
IOx-toepassing met behulp van een sleutelpaar:
[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
De laatste stap in het proces is het implementeren van de toepassing op uw IOx-apparaat. Er is geen verschil in vergelijking met een niet-ondertekende implementatie van een toepassing:
[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
Gebruik deze sectie om te controleren of uw configuratie goed werkt.
Om te controleren of een applicatiesleutel correct is ondertekend met uw CA, kunt u dit doen:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl verify -CAfile rootca-cert.pem app-cert.pem app-cert.pem: OK
Deze sectie bevat informatie die u kunt gebruiken om problemen met de configuratie te troubleshooten.
Wanneer u problemen ondervindt met de implementatie van toepassingen, ziet u een van deze fouten:
[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"
}
Er is iets misgegaan bij het ondertekenen van het aanvraagcertificaat met het gebruik van de CA of het komt niet overeen met die in de vertrouwde ankerbundel.
Gebruik de instructies in de sectie Verifiëren om uw certificaten en ook de vertrouwde ankerbundel te controleren.
Deze fout geeft aan dat uw pakket niet correct is ondertekend, u kunt opnieuw naar stap 6 kijken.
[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