Exemple : Échange de message AS2 complet (Avancé)
Cet exemple illustre un échange de message AS2 plus avancé, avec chiffrage et signature, entre deux partenaires AS2 qui sont tous les deux exécutés sur FlowForce Server. Avant de suivre ce tutoriel, assurez-vous que vous avez déjà suivi le précédent, qui couvre les bases, voir Exemple : Échange de message AS2 complet (simple).
Cet exemple illustre le scénario de communication le plus complexe entre deux partenaires AS2 (la première de douze permutations possibles conformément à la section 2.4.2 de RFC 4130), ce qui signifie, essentiellement :
•L'expéditeur envoie des données AS2 chiffrées
•L'expéditeur envoie des données AS2 signées
•L'expéditeur demande que le destinataire retourne une MDN signée en réponse au message
Hypothèses
•Les mêmes expéditeurs ou destinataires sont utilisés comme dans l'exemple précédent, respectivement : Hermes (FlowForce Server sur Linux) et Apollo (FlowForce Server sur Windows)
•Hermes veut envoyer à Apollo un message chiffré et signé, et requiert une MDN signée en retour
•Apollo et Hermes sont tous les deux exécutés sur un réseau privé local.
•Le serveur de réception AS2 (Apollo) acceptera des requêtes HTTP depuis des clients non authentifiés (c'est-à-dire que le service AS2 sera adressé publiquement).
Prérequis
•FlowForce Server Advanced Edition doit être installé et mis sous licence sur les appareils Apollo et Hermes.
•Sur les serveurs Apollo et Hermes, l'interface d'administration FlowForce Web doit être en bon fonctionnement sur l'hôte et le port configuré (par exemple, http://apollo:8082 et http://hermes:8082, en partant du principe que "apollo" et "hermes" sont les noms d'hôte respectifs). Voir aussi Définir les paramètres de réseau.
Configurer les certificats d'Apollo
Dans cette étape de configuration, les choses suivantes se produisent :
1.Apollo génère un certificat public et une clé privée et d'importer les deux dans FlowForce Server.
2.Apollo envoie le certificat public (sans la clé privée) sur Hermes.
3.Hermes importe le certificat public d'Apollo dans FlowForce Server.
Pourquoi cela est nécessaire :
•Avant d’envoyer le message à Apollo, Hermes a besoin de la clé publique d’Apollo pour l’encrypter. Avant d'envoyer la MDN requise par Hermes, Apollo le signera en utilisant sa propre clé privée.
•Lors de la réception la MDN signée, Hermes nécessite le certificat public d'Apollo pour vérifier la signature. Dès récption de MDN signé, Hermes requiert le certificat public d’Apollo pour vérifier la signature.
En ce qui concerne cet exemple, nous allons générer un certificat auto-signé en utilisant la bibliothèque OpenSSL (https://www.openssl.org/), y compris avec Cygwin (https://cygwin.com/). Il est uniquement destiné à des fins de démonstration ; dans un scénario réaliste, vous pourrez avoir envie d'utiliser d'autres outils pour générer le certificat SSL, ou il peut être disponible dans votre institution.
Pour générer le certificat auto-signé pour Appollo, ouvrez le terminal Cygwin et saisissez la ligne suivante :
openssl req -x509 -newkey rsa:2048 -keyout apollo_private.pem -out apollo_public.pem -days 365 |
Lorsque vous êtes invité à saisir une phrase de passe, saisir le mot de passe sous lequel vous souhaitez chiffrer la clé privée, attention à ne pas l'oublier. Vous aurez besoin de ce mot de passe ultérieurement pour importer le certificat dans FlowForce Server. Passer par toutes les étapes de l'assistant, et saisir tous les champs requis ("Country", "State or Province Name", "Locality Name", "Organization Name", "Department Name", "Common Name" et "Email").
Lorsque vous terminez l'assistant, la commande ci-dessus génère deux fichiers, apollo_private.pem et apollo_public.pem, dans le répertoire d'accueil Cygwin's (par exemple, C:\cygwin64\home\<user>\, si vous installez Cygwin à C:\cygwin64). Étant donné que cette paire peut uniquement être chargée en tant qu'un seul fichier dans FlowForce Server, exécutez la commande suivante supplémentaire pour copier le certificat public dans le fichier de clé privée :
cat apollo_public.pem >> apollo_private.pem |
Sur l’appareil Apollo, connectez-vous sur FlowForce Server, cliquez sur le menu Configuration, puis cliquez sur Create > Create Certificate.
Saisissez le nom de certificat et la description, cliquez sur Naviguer et sélectionnez le fichier apollo_private.pemcréé précédemment. Veillez à saisir le mot de passe que vous avez créé plus tôt dans cette étape, et cliquez sur Enregistrer.
La paire de certificat public+privé est maintenant importée dans FlowForce Server d'Apollo. Veuillez noter que l'icône et le texte descriptif indiquent que ce fichier de certificat contient les deux :
Pour envoyer la clé publique sur Hermes, copiez le fichier apollo_public.pem sur l'appareil Hermes. Ensuite, se connecter sur FlowForce Server sur l'appareil Hermes et l'importer en utilisant les mêmes étapes que ci-dessus (cette fois une clé privée n'est pas présente dans le fichier, donc un mot de passe n'est pas nécessaire).
Veuillez noter que l'icône et le texte descriptif indiquent que ce fichier de certificat contient uniquement le certificat public (pas de clé privée).
Configurer les certificats de Hermes
Dans cette étape de configuration, les choses suivantes se produisent :
1.Hermes génère un certificat public et une clé privée et l'importe dans FlowForce Server
2.Hermes envoie le certificat public (sans la clé privée) sur Apollo
3.Apollo importe le certificat public Hermes dans FlowForce Server
Pourquoi cela est nécessaire :
•Avant d'envoyer le message à Apollo, Hermes le signera en utilisant sa propre clé privée.
•Lors de la réception du message depuis Hermes, Apollo vérifiera la signature du message en utilisant le certificat public d'Hermes.
D'abord, créez le certificat public et la clé privée Hermes, suivant les mêmes étapes que pour Apollo. Assurez-vous de remplacer les noms de fichier :
openssl req -x509 -newkey rsa:2048 -keyout hermes_private.pem -out hermes_public.pem -days 365 |
De plus, "Organization name", "Common Name", etc. doivent être ceux d'Hermes :
Ensuite, combiner les deux fichiers dans un seul en utilisant la commande :
cat hermes_public.pem >> hermes_private.pem |
Puis, importez hermes_private.pem dans FlowForce Server sur l’appareil Hermes :
Puis, copiez hermes_public.pem sur l’appareil Apollo et importez-le dans FlowForce Server:
Activer le chiffrage AS2, la signature, et la vérification de signature MDN sur Hermes
Sur l'appareil Hermes, éditez les paramètres de partenaire APOLLO comme suit :
Activer le déchiffrage AS2, la signature MDN, et la vérification de signature sur Apollo
Sur l'appareil Apollo, éditer les paramètres de partenaire HERMES comme suit :
Traiter la MDN
Conformément aux exigences indiquées ci-dessus, Hermes exige qu'Apollo envoie une MDN pour reconnaître la transmission AS2. Nous pouvons calculer le statut de MDN entrante (succès, échec) avec l'aide de la fonction d'expression as2-success. Pour y réussir, se connecter à FlowForce sur un appareil Hermes, et ouvrir la tâche "send-as2" créée précédemment dans Example: : Échange de message AS2 complet (simple). Ensuite, modifiez la tâche comme indiqué ci-dessous :
Veuillez noter les points suivants :
•Le résultat de la première étape d'exécution, de type "AS2 MDN", est maintenant déclaré (voir le champ Attribuer le résultat de cette étape dans).
•La case à cocher Abandonner sur erreur est décochée, puisque l'exécution doit continuer à la prochaine étape.
•La deuxième étape d'exécution appelle la fonction /system/compute. Cette fonction calcule une expression booléenne avec l'aide de la fonction as2-success. Ce deuxième prend en tant qu'argument la MDN retournée par la première étape d'exécution.
Envoyer le message AS2
Vous êtes maintenant prêt d'envoyer le message AS2 chiffré et signé depuis Hermes vers Apollo. Sur les appareils Hermes, copiez un fichier .edi sur le répertoire /home/altova/as2/outgoing configuré précédemment. Lorsque l’intervalle d’interrogation du répertoire s’écoule (60 secondes, par défaut), le déclencheur est exécuté, et la tâche envoie le fichier au service AS2 sur l'appareil Apollo. Le répertoire C:\as2\incoming sur l’appareil Apollo devrait contenir désormais le message envoyé par Hermes, par exemple :
Pour voir si la tâche a échoué ou a été exécuté correctement, vérifiez le journal d'erreur (vous devrez le faire pour Hermes mais aussi sur l'appareil Apollo). Pour plus d’information, voir Consulter le journal de la tâche.
Veuillez noter que la MDN retournée peut aussi contenir des informations concernant des erreurs qui se sont produites pendant la transmission. Par exemple, si Hermes envoie des données non chiffrées mais qu'Apollo s'attend à recevoir des données chiffrées, alors la tâche échoue et un message correspondant se trouvera dans le journal.