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.
Dit document beschrijft op een gedetailleerde manier 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.
Aangezien IOx wordt vrijgegeven, wordt de ondertekening van het AC5-toepassingspakket ondersteund. Deze optie maakt het mogelijk om er zeker van te zijn dat het toepassingspakket geldig is en het pakket dat op het apparaat is geïnstalleerd, afkomstig is van een vertrouwde bron. Als Application Package Signature Validering in een platform wordt ingeschakeld, kunnen alleen dan ondertekende toepassingen worden ingezet.
Deze stappen zijn vereist voor het gebruik van de validatie van de handtekening van een pakket:
Opmerking: Voor dit artikel wordt een zelfgetekende CA gebruikt bij een productiescenario. De beste optie is om een officiële CA of de CA van uw bedrijf te gebruiken om te ondertekenen.
Opmerking: De opties voor de CA, toetsen en handtekeningen worden alleen voor laboratoriumdoeleinden gekozen en moeten mogelijk aan uw omgeving worden aangepast.
De eerste stap is het creëren van uw eigen CA. Dit kan simpelweg gedaan worden door het genereren van een sleutel voor de CA en een certificaat voor die sleutel:
Zo genereert u de CA-toets:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl genrsa -out rootca-key.pem 2048 Generating RSA private key, 2048 bit long modulus .........................................................................................+++ .......+++ e is 65537 (0x10001)
Zo genereert u het CA-certificaat:
[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 gebruikcase.
Nu u de noodzakelijke sleutel en het certificaat voor uw CA hebt, kunt u een bundel van het trust ankerpunt voor gebruik op uw IOx apparaat creëren. De bundel van het vertrouwensankerpunt moet de volledige CA-signaalketen bevatten (indien tussentijdse certificaten voor de ondertekening worden gebruikt) en een info.txt-bestand dat wordt gebruikt om de (vrije vorm) metagegevens te verstrekken.
Maak eerst het info.txt bestand en zet er metagegevens in:
[jedepuyd@KJK-SRVIOT-10 signing]$ echo "iox app root ca v1">info.txt
Optioneel: als u meerdere CA-certificaten hebt, moet u deze in één .pem samenstellen om uw CA-certificeringsketen te vormen:
cat first_cert.pem second_cert.pem > combined_cert.pem
Opmerking: Deze stap is niet vereist voor dit artikel, aangezien één enkel CA wortel certificaat wordt gebruikt om teken te richten, wordt dit niet aanbevolen voor productie en de wortel CA sleutelpaar moet altijd offline worden opgeslagen.
De CA-certificaatketen moet ca-chain.cert.pem worden genoemd, dus bereid dit bestand voor:
[jedepuyd@KJK-SRVIOT-10 signing]$ cp rootca-cert.pem ca-chain.cert.pem
Ten slotte kan je de ca-chain.cert.pem en info.txt combineren in een gzipped tar:
[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 getekend met een door CA ondertekend certificaat van de juiste CA voordat deze een installatie toestaat.
De invoer van het vertrouwensanker kan geschieden via de volgende documenten:
[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 trust anchor te importeren via Local Manager:
Navigeer naar systeeminstelling > Vertrouwen importeren zoals in de afbeelding.
Selecteer het bestand dat u in Stap 2 gegenereerd hebt en klik op OK zoals in de afbeelding.
Nadat u het vertrouwde anker hebt geïmporteerd, controleert u Ingeschakeld op Toepassingssignalering en klikt u op Configuratie opslaan zoals in de afbeelding:
Daarna kunt u een key en een certificaatpaar maken die gebruikt wordt om in uw IOx-toepassing te tekenen. De beste praktijk is om één specifiek toetsenbord voor elke toepassing te genereren die u van plan bent in te zetten.
Zolang elk van deze overeenkomsten met dezelfde CA is ondertekend, worden ze allemaal als geldig beschouwd.
Zo genereert u de toepassingsspecifieke toets:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl genrsa -out app-key.pem 2048 Generating RSA private key, 2048 bit long modulus .......+++ ...+++ e is 65537 (0x10001)
Zo genereert u de 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 []:
Net als bij de CA moeten de waarden in het sollicitatiecertificaat worden aangepast aan uw gebruikcase.
Nu u de vereisten voor uw CA en toepassing CSR hebt, kunt u de CSR met CA ondertekenen. 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 het met het gegenereerde sleutelpaar uit Stap 4 te ondertekenen en in Stap 5 door de CA te ondertekenen.
De rest van het proces om de bron en het pakket te maken.yaml voor uw toepassing blijft ongewijzigd.
Verpakking IOx-toepassing met gebruik van toetsencombinatie:
[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
Laatste stap in het proces zou zijn om de toepassing op uw IOx-apparaat in te voeren. Er is geen verschil in vergelijking met een niet-ondertekende sollicitatie:
[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 dit gedeelte om te bevestigen dat de configuratie correct werkt.
Om te verifiëren of een toepassingssleutel correct met uw CA wordt ondertekend, kunt u dit doen:
[jedepuyd@KJK-SRVIOT-10 signing]$ openssl verify -CAfile rootca-cert.pem app-cert.pem app-cert.pem: OK
Deze sectie verschaft informatie die u kunt gebruiken om problemen met uw configuratie op te lossen.
Wanneer u problemen ondervindt met de toepassing van toepassingen, kunt u één van deze fouten zien:
[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 sollicitatiecertificaat met het gebruik van de CA of het komt niet overeen met het certificaat in de vertrouwde ankerbundel.
Gebruik de instructies in het gedeelte Verifiëren om uw certificaten en ook de bundel voor het vertrouwde anker te controleren.
Deze fout duidt erop dat uw pakket niet correct is getekend, u kunt ook 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" }