Epinglage de certificat
Utilisez l'épinglage de certificat pour empêcher toute attaque de type man-in-the-middle.
Lorsque vous communiquez sur des réseaux publics, il est essentiel d'envoyer et de recevoir les informations de façon sécurisée. Le protocole largement utilisé pour sécuriser ces communications est SSL/TLS. (SSL/TLS fait référence à Secure Sockets Layer ou à son successeur, TLS, ou Transport Layer Security.) SSL/TLS utilise des certificats numériques pour assurer l'authentification et le chiffrement. Pour garantir qu'un certificat est authentique et valide, il est signé numériquement par un certificat racine appartenant à une autorité de certification de confiance. Les systèmes d'exploitation et les navigateurs gèrent des listes de certificats racine d'autorité de certification de confiance pour pouvoir facilement déterminer quels sont les certificats émis et signés par les autorités de certification.
Les protocoles qui s'appuient sur la vérification de la chaîne de certificats, comme SSL/TLS, sont vulnérables à plusieurs attaques dangereuses, notamment les attaques de type man-in-the-middle, qui surviennent lorsqu'une partie prenante autorisée peut afficher et modifier l'intégralité du trafic transmis entre le terminal mobile et les systèmes de back end.
IBM MobileFirst Platform Foundation fournit une API permettant d'épingler les certificats. Elle est prise en charge dans les applications iOS natives, les applications Android natives et les applications MobileFirst Cordova multiplateformes.
Processus d'épinglage de certificat
L'épinglage de certificat est le processus d'association d'un hôte à sa clé publique prévue. Etant donné vous possédez le code côté serveur et le code côté client, vous pouvez configurer votre code client pour qu'il n'accepte qu'un certificat spécifique pour votre nom de domaine, au lieu de tous les certificats correspondant à un certificat racine d'autorité de certification de confiance reconnus par le système d'exploitation ou le navigateur.- Certains systèmes d'exploitation mobiles peuvent mettre en cache le résultat du contrôle de validation de certificat. Par conséquent, votre code doit appeler l'API d'épinglage de certificat avant l'envoi d'une demande sécurisée. Sinon, toutes les demandes suivantes risquent d'ignorer le contrôle de validation de certificat et d'épinglage.
- Si vous appelez cette méthode une deuxième fois, l'opération d'épinglage précédente est remplacée.
Si l'épinglage aboutit, la clé publique qui se trouve dans le certificat fourni est utilisée pour vérifier l'intégrité du certificat de MobileFirst Server au cours de l'établissement de liaison SSL/TLS pour la demande sécurisée. S'il échoue, toutes les demandes SSL/TLS envoyées au serveur sont rejetées par l'application client.
Configuration du certificat
Vous devez utiliser un certificat acheté auprès d'une autorité de certification. Les certificats autosignés ne sont pas pris en charge. En vue de la compatibilité avec les environnements pris en charge, veillez à utiliser un certificat codé au format DER (Fichier de règles de codage distinctif, comme défini dans la norme International Telecommunications Union X.690).
Vous devez placer le certificat sur le serveur MobileFirst Server et dans votre application. Placez le certificat comme suit :
- Sur le serveur MobileFirst Server : (WebSphere Application Server, WebSphere Application Server Liberty ou Apache Tomcat). Consultez la documentation de votre serveur d'applications spécifique pour des informations sur la configuration de SSL/TLS et des certificats.
- Dans votre application :
- iOS native : ajoutez le certificat au bundle d'applications
- Android native : placez le certificat dans le dossier assets
- Multiplateforme (Cordova) : placez le certificat dans le dossier nom_app\www\certificates
API d'épinglage de certificat
L'épinglage de certificat est une méthode d'API unique qui possède un paramètre nom_fichier_certificat, où nom_fichier_certificat est le nom du fichier certificat.
- Application Android native

- Syntaxe :
public void pinTrustedCertificatePublicKey(String nom_fichier_certificat) throws IllegalArgumentException - Exemple :
WLClient.getInstance().pinTrustedCertificatePublicKey("monCertificat.cer"); - La méthode d'épinglage de certificat émet une exception dans deux cas :
- Le fichier n'existe pas
- Le format du fichier n'est pas correct
- Application iOS native

- Syntaxe :
pinTrustedCertificatePublicKeyFromFile:(NSString*) nom_fichier_certificat; - Exemple :
[[WLClient sharedInstance]pinTrustedCertificatePublicKeyFromFile:@"monCertificat.cer"]; - La méthode d'épinglage de certificat émet une exception dans deux cas :
- Le fichier n'existe pas
- Le format du fichier n'est pas correct
- Application multiplateforme (Cordova)


- Syntaxe :
WL.Client.pinTrustedCertificatePublicKey('nom_fichier_certificat').then(onSuccess,onFailure) - La méthode d'épinglage de certificat renvoie une promesse :
- La méthode d'épinglage de certificat appelle la méthode onSuccess si l'épinglage aboutit.
- La méthode d'épinglage de certificat déclenche le rappel onFailure dans deux cas :
- Le fichier n'existe pas
- Le format du fichier n'est pas correct
- Exemple :
WL.Client.pinTrustedCertificatePublicKey('monCertificat.cer').then(onSuccess,onFailure) -
Ultérieurement, si une demande sécurisée est envoyée à un serveur dont le certificat n'est pas épinglé, le rappel onFailure de la demande spécifique (par exemple WL.Client.connect ou WLResourceRequest) est appelé.
- Applications Android natives : classe d'API Java™ côté client WLClient.
- Applications iOS natives : classe d'API Objective-C côté client WLClient.
- Applications multiplateformes (Cordova) : classe d'API JavaScript côté client WL.Client.