AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Module 7 : Simulation d'intégration de sécurité matérielle
Cette fonction est disponible pourAWS IoT GreengrassCore v1.7 et versions ultérieures.
Ce module avancé montre comment configurer un module de sécurité matérielle (HSM) simulé à utiliser avec un noyau Greengrass. La configuration utilise SoftHSM, qui est une implémentation logicielle pure utilisant l'API PKCS#11. L'objectif de ce module est de vous permettre de configurer un environnement où vous pouvez apprendre et effectuer des tests initiaux sur une implémentation uniquement logicielle de l'API PKCS#11. Il est fourni uniquement à des fins d'apprentissage et de tests initiaux, et non à des fins de production de quelque nature que ce soit.
Vous pouvez utiliser cette configuration pour tester l'utilisation d'un service compatible avec PKCS # 11 pour stocker vos clés privées. Pour plus d'informations sur l'implémentation uniquement logicielle, consultez SoftHSM
Important
Ce module est destiné à des fins de test uniquement. Nous déconseillons vivement l'utilisation de SoftHSM dans un environnement de production, car elle peut donner un faux sentiment de sécurité supplémentaire. La configuration résultante ne fournit pas tous les avantages de sécurité réels. Les clés stockées dans SoftHSM ne sont pas stockées de façon plus sécurisée que dans n'importe quel autre moyen de stockage de secrets dans l'environnement Greengrass.
L'objectif de ce module est de vous permettre de découvrir la spécification PKCS#11 et d'effectuer des tests initiaux sur votre logiciel si vous prévoyez d'utiliser un HSM matériel à l'avenir.
Vous devez tester séparément et complètement votre implémentation matérielle future avant toute utilisation en production, car il peut y avoir des différences entre l'implémentation PKCS#11 fournie dans SoftHSM par rapport à une implémentation basée sur le matériel.
Si vous avez besoin d'aide pour intégrer unmodule de sécurité matérielle prise en charge, contactez votreAWSReprésentant du support technique.
Avant de commencer, exécutez le script de configuration de périphérique Greengrass ou assurez-vous d'avoir effectué le module 1 et le module 2 du didacticiel de mise en route. Dans ce module, nous supposons que votre noyau est configuré et communique déjà avecAWS. Ce module dure environ 30 minutes.
Installer le logiciel SoftHSM
Dans cette étape, vous installez SoftHSM et les outils pkcs11, qui sont utilisés pour gérer votre instance SoftHSM.
-
Dans un terminal sur votreAWS IoT Greengrass, exécutez la commande suivante :
sudo apt-get install softhsm2 libsofthsm2-dev pkcs11-dump
Pour plus d'informations sur ces packages, consultez Install softhsm2
, Install libsofthsm2-dev et Install pkcs11-dump . Note
Si vous rencontrez des problèmes lors de l'utilisation de cette commande sur votre système, consultez SoftHSM version 2
sur GitHub. Ce site fournit plus d'informations d'installation, notamment sur la façon de générer depuis la source.
Configurer SoftHSM
Au cours de cette étape, vous configurez SoftHSM
-
Basculez vers l'utilisateur racine.
sudo su
-
Utilisez la page du manuel pour trouver l'emplacement
softhsm2.conf
dans le système./etc/softhsm/softhsm2.conf
est un emplacement courant. Mais l'emplacement peut être différent sur certains systèmes.man softhsm2.conf
-
Créez le répertoire pour le fichier de configuration softhsm2 dans l'emplacement sur le système. Dans cet exemple, nous supposons que l'emplacement est
/etc/softhsm/softhsm2.conf
.mkdir -p /etc/softhsm
-
Créez le répertoire du jeton dans le répertoire
/greengrass
.Note
Si vous ignorez cette étape, softhsm2-util indique
ERROR: Could not initialize the library
.mkdir -p /greengrass/softhsm2/tokens
-
Configurez le répertoire du jeton.
echo "directories.tokendir = /greengrass/softhsm2/tokens" > /etc/softhsm/softhsm2.conf
-
Configurez un backend basé sur des fichiers.
echo "objectstore.backend = file" >> /etc/softhsm/softhsm2.conf
Note
Ces paramètres de configuration sont proposés à des fins d'expérimentation uniquement. Pour connaître toutes les options de configuration, consultez la page de manuel du fichier de configuration.
man softhsm2.conf
Importer la clé privée dans SoftHSM
Au cours de cette étape, vous allez initialiser le jeton SoftHSM, convertir le format de clé privée, puis importer la clé privée.
-
Initialiser le jeton SoftHSM.
softhsm2-util --init-token --slot 0 --label greengrass --so-pin 12345 --pin 1234
Note
Si vous y êtes invité, saisissez le PIN superviseur
12345
et le PIN utilisateur1234
. AWS IoT Greengrass n'utilise pas le PIN superviseur. Vous pouvez donc utiliser n'importe quelle valeur.Si vous recevez l'erreur
CKR_SLOT_ID_INVALID: Slot 0 does not exist
, essayez plutôt la commande suivante :softhsm2-util --init-token --free --label greengrass --so-pin 12345 --pin 1234
-
Convertir la clé privée dans un format qui peut être utilisé par l'outil d'importation SoftHSM. Dans le cadre de ce didacticiel, vous devez convertir la clé privée que vous avez obtenue à partir de l'option Création de groupes par défaut dans le Module 2 du didacticiel Démarrez.
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in
hash
.private.key -outhash
.private.pem -
Importer la clé privée dans SoftHSM. Parmi les commandes suivantes, exécutez celle qui correspond à votre version de softhsm2-util.
- Syntaxe Raspbian softhsm2-util v2.2.0
-
softhsm2-util --import hash.private.pem --token greengrass --label iotkey --id 0000 --pin 12340
- Syntaxe Ubuntu softhsm2-util v2.0.0
-
softhsm2-util --import hash.private.pem --slot 0 --label iotkey --id 0000 --pin 1234
Cette commande identifie l'emplacement comme
0
et définit l'étiquette de clé commeiotkey
. Vous utiliserez ces valeurs dans la section suivante.
Une fois la clé privée importée, vous pouvez la supprimer (optionnel) du répertoire /greengrass/certs
. Assurez-vous de conserver la CA racine et les certificats de l'appareil dans le répertoire.
Configurer le noyau Greengrass pour utiliser SoftHSM
Au cours de cette étape, vous allez modifier le fichier de configuration du noyau Greengrass pour utiliser SoftHSM.
Trouvez le chemin d'accès à la bibliothèque du fournisseur SoftHSM (
libsofthsm2.so
) sur votre système :Obtenez la liste des packages installés de la bibliothèque.
sudo dpkg -L libsofthsm2
Le fichier
libsofthsm2.so
est situé dans le répertoiresofthsm
.Copiez le chemin complet dans le fichier, par exemple,
/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so
. Vous utiliserez cette valeur plus tard.
Arrêtez le démon Greengrass.
cd /greengrass/ggc/core/ sudo ./greengrassd stop
Ouvrez le fichier de configuration Greengrass. Il s'agit du fichier config.json dans le répertoire
/greengrass/config
.Note
Les exemples de cette procédure sont rédigées en supposant que le fichier
config.json
utilise le format qui est généré à partir de l'option Création de groupes par défaut dans le Module 2 du didacticiel Démarrez.-
Dans l'objet
crypto.principals
, insérez l'objet de certificat de serveur MQTT suivant. Ajoutez une virgule si nécessaire pour créer un fichier JSON."MQTTServerCertificate": { "privateKeyPath": "path-to-private-key" }
-
Dans l'objet
crypto
, insérez l'objetPKCS11
suivant. Ajoutez une virgule si nécessaire pour créer un fichier JSON."PKCS11": { "P11Provider": "/path-to-pkcs11-provider-so", "slotLabel": "crypto-token-name", "slotUserPin": "crypto-token-user-pin" }
Votre fichier doit se présenter comme suit :
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "
hash
.cert.pem", "keyPath" : "hash
.private.key", "thingArn" : "arn:partition
:iot:region
:account-id
:thing/core-thing-name
", "iotHost" : "host-prefix
.iot.region
.amazonaws.com", "ggHost" : "greengrass.iot.region
.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto": {"PKCS11": { "P11Provider": "/path-to-pkcs11-provider-so", "slotLabel": "crypto-token-name", "slotUserPin": "crypto-token-user-pin" },
"principals" : {"MQTTServerCertificate": { "privateKeyPath": "path-to-private-key" },
"IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash
.private.key", "certificatePath" : "file:///greengrass/certs/hash
.cert.pem" }, "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash
.private.key" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }Note
Pour utiliser over-the-air (OTA) avec sécurité matérielle,
PKCS11
doit également contenir l'objetOpenSSLEngine
propriété. Pour plus d'informations, consultez Configurer le support pour les over-the-air mises à jour. -
Modifiez l'objet
crypto
:Configurez l'objet
PKCS11
.Pour
P11Provider
, entrez le chemin d'accès complet àlibsofthsm2.so
.Pour
slotLabel
, saisissezgreengrass
.Pour
slotUserPin
, saisissez1234
.
Configurez les chemins de la clé privée dans l'objet
principals
. Ne modifiez pas la propriétécertificatePath
.Pour les propriétés
privateKeyPath
, saisissez le chemin RFC 7512 PKCS # 11 suivant (qui spécifie l'étiquette de clé). Faites de même pour leIoTCertificate
, leSecretsManager
et les mandatairesMQTTServerCertificate
.pkcs11:object=iotkey;type=private
-
Vérifiez l'objet
crypto
. Il doit ressembler à l'exemple ci-dessous."crypto": { "PKCS11": { "P11Provider": "/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so", "slotLabel": "greengrass", "slotUserPin": "1234" }, "principals": { "MQTTServerCertificate": { "privateKeyPath": "pkcs11:object=iotkey;type=private" }, "SecretsManager": { "privateKeyPath": "pkcs11:object=iotkey;type=private" }, "IoTCertificate": { "certificatePath": "file://certs/core.crt", "privateKeyPath": "pkcs11:object=iotkey;type=private" } }, "caPath": "file://certs/root.ca.pem" }
-
Supprimez les valeurs
caPath
,certPath
etkeyPath
de l'objetcoreThing
. Il doit ressembler à l'exemple ci-dessous."coreThing" : { "thingArn" : "arn:
partition
:iot:region
:account-id
:thing/core-thing-name", "iotHost" : "host-prefix
-ats.iot.region
.amazonaws.com", "ggHost" : "greengrass-ats.iot.region
.amazonaws.com", "keepAlive" : 600 }
Note
Dans le cadre de ce didacticiel, vous spécifiez la même clé privée pour tous les mandataires. Pour plus d'informations sur le choix de la clé privée du serveur MQTT local, consultez Performance. Pour plus d'informations sur le secrets manager local, consultez Déployer des secrets sur AWS IoT Greengrass Core.
Tester la configuration
Démarrez le démon Greengrass.
cd /greengrass/ggc/core/ sudo ./greengrassd start
Si le démon démarre correctement, cela indique que votre noyau est configuré correctement.
Vous êtes maintenant prêt à en savoir plus sur la spécification PKCS#11 et à effectuer les tests initiaux avec l'API PKCS#11 qui est fournie par l'implémentation SoftHSM.
Important
Là encore, il est extrêmement important d'avoir conscience que ce module est conçu pour l'apprentissage et le test uniquement. Il ne renforce pas réellement le niveau de sécurité de votre environnement Greengrass.
Au lieu de cela, le module a pour objectif de vous permettre de commencer à apprendre et à tester en vue d'une utilisation future d'un véritable HSM basé sur le matériel. À ce moment-là, vous devrez tester séparément et complètement votre logiciel sur le module HSM basé sur le matériel avant toute utilisation en production, car il peut y avoir des différences entre l'implémentation PKCS # 11 fournie dans SoftHSM et une implémentation basée sur le matériel.
Consulter aussi
-
PKCS #11 Cryptographic Token Interface Usage Guide Version 2.40. Révisé par John Leiseboer et Robert Griffin. 16 novembre 2014. OASIS Committee Remarque 02. http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html
. Dernière version : http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html .