Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X. info
Edge vous permet de créer des hôtes virtuels compatibles avec le TLS unidirectionnel et bidirectionnel. Avec le TLS à sens unique, le client envoie une requête de session à un hôte virtuel déployé sur un routeur Edge, et le routeur répond avec un certificat contenant la clé publique de l'hôte virtuel. Pour un certificat signé, le client peut ensuite envoyer une requête à l'autorité de certification (CA) pour authentifier le certificat.
Dans le protocole TLS bidirectionnel, les certificats client et Edge sont tous deux validés dans le cadre d’une requête:
- Le routeur Edge présente son certificat au client TLS pour s'authentifier. Le client vérifie ensuite l’identité du serveur avant d’envoyer son certificat au serveur.
- Le client TLS présente son certificat à Edge pour s'authentifier.
Pour en savoir plus, consultez la section À propos des hôtes virtuels.
Récupérer des informations de connexion TLS
Lors d'une requête adressée à un proxy d'API via un hôte virtuel compatible avec TLS, Edge peut capturer des informations sur la connexion TLS. Votre proxy d'API peut ensuite accéder à ces informations via des variables de flux pour effectuer une analyse et une validation supplémentaires.
Le type d'informations TLS capturées par Edge dépend de la compatibilité de l'hôte virtuel avec le protocole TLS unidirectionnel ou bidirectionnel. Par exemple, pour TLS à sens unique, Edge peut capturer des informations sur le Chiffrement TLS ou protocole TLS utilisé dans la connexion TLS.
Pour le protocole TLS bidirectionnel, Edge peut capturer les mêmes informations que celles capturées pour le TLS unidirectionnel, et également capturer des informations sur le certificat du client. Par exemple, Edge peut capturer l'empreinte SHA1 du certificat client et du certificat client au format PEM.
Capturer des informations pour TLS unidirectionnelle et bidirectionnelle
Le tableau suivant répertorie les variables de flux contenant les informations de connexion TLS capturées par Edge et accessibles dans le proxy d'API. Ces informations sont recueillies pour les requêtes à sens unique
et le protocole TLS bidirectionnel en définissant <ConnectionProperties>
sur "true"
Définition de l'hôte virtuel:
Variable de flux | Description |
---|---|
tls.cipher
|
Algorithme de chiffrement utilisé par la connexion TLS. |
tls.protocol
|
Protocole utilisé par la connexion TLS. |
tls.server.name
|
Nom du serveur SNI demandé. |
tls.session.id
|
Identifiant de session. Cette variable de flux est disponible lorsque vous définissez |
Récupérer des informations TLS supplémentaires lors du protocole TLS bidirectionnel
Le tableau suivant répertorie les variables de flux contenant les détails du certificat client capturés par Edge via le protocole TLS bidirectionnel. Ces informations sont capturées pour le protocole TLS bidirectionnel en définissant <ClientProperties>
sur "true" dans la définition de l'hôte virtuel :
Variable de flux | Description |
---|---|
tls.client.s.dn
|
Nom distinctif de l'objet du certificat client |
tls.client.i.dn
|
Émetteur du nom distinctif du certificat client |
tls.client.raw.cert
|
Certificat client au format PEM |
tls.client.cert.serial
|
Numéro de série du certificat client |
tls.client.cert.fingerprint
|
Empreinte SHA1 du certificat client |
tls.session.id
|
Identifiant de session. Cette variable de flux est disponible lorsque vous définissez
|
Configurer un hôte virtuel pour capturer des informations TLS
Pour configurer l'hôte virtuel afin qu'il capture les informations TLS, définissez les propriétés suivantes
sous <PropagateTLSInformation>
par true
.
<ConnectionProperties>
: active la capture des informations de connexion TLS. pour le protocole TLS unidirectionnel et bidirectionnel. La valeur par défaut estfalse
.<ClientProperties>
: active la capture d'informations supplémentaires pour le protocole TLS bidirectionnel. La valeur par défaut estfalse
.
Par exemple, la définition d'hôte virtuel suivante utilise le protocole TLS bidirectionnel et permet de capturer les deux types d'informations TLS :
<VirtualHost name="secure"> .... <SSLInfo> <Enabled>true</Enabled> # Enable two-way TLS. <ClientAuthEnabled>true</ClientAuthEnabled> <IgnoreValidationErrors>false</IgnoreValidationErrors> <KeyAlias>ks-alias</KeyAlias> <KeyStore>ref://ks-ref</KeyStore> <TrustStore>ref://ts-ref</TrustStore> </SSLInfo> <PropagateTLSInformation> <ConnectionProperties>true</ConnectionProperties> <ClientProperties>true</ClientProperties> </PropagateTLSInformation> </VirtualHost>
Si vous transmettez un corps JSON, définissez les propriétés comme suit:
"propagateTLSInformation" : { "connectionProperties" : true, "clientProperties" : true }
Définir des limites de taille d'en-tête
Lorsque vous activez la capture d'informations TLS sur un hôte virtuel, Edge transmet ces informations à l'aide d'en-têtes HTTP. Vous devez donc vous assurer que les limites de taille d'en-tête sont définies de manière appropriée selon que vous utilisez Edge pour le cloud ou Edge pour le cloud privé :
- Edge pour le cloud : Apigee définit les tailles d'en-tête de manière appropriée.
- Edge pour le cloud privé: fonctionnalité non disponible.
Accéder aux variables de flux dans un proxy d'API
À partir de votre proxy d'API, vous pouvez accéder aux variables de flux TLS et les inspecter. Par exemple, vous pouvez utiliser la règle AssignMessage pour y accéder, ou y accéder en JavaScript avec la règle JavaScript.
Vous pouvez également référencer les variables de flux dans un élément <Condition>
d'un flux proxy ou cible,
ou dans <Step>
ou <RouteRule>
. Par exemple, vous pouvez acheminer
une demande à différentes cibles
en fonction du numéro de série du client.
Pour en savoir plus, consultez les articles suivants: