Vous consultez la documentation Apigee Edge.
Accédez à la
documentation**Apigee X**. info
Edge vous permet de créer des hôtes virtuels compatibles avec le protocole TLS unidirectionnel et bidirectionnel. Avec le protocole TLS unidirectionnel, 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 pour authentifier le certificat.
Avec le protocole TLS bidirectionnel, le client et Edge transmettent des certificats qui sont 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 de lui envoyer son certificat.
- Le client TLS présente son certificat à Edge pour s'authentifier.
Pour en savoir plus, consultez À 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 le protocole 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 varie selon que l'hôte virtuel est compatible avec le protocole TLS unidirectionnel ou bidirectionnel. Par exemple, pour le protocole TLS unidirectionnel, Edge peut capturer des informations sur l' algorithme de chiffrement TLS ou le 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 le certificat client au format PEM.
Récupérer des informations pour le protocole TLS unidirectionnel et bidirectionnel
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 capturées pour le protocole TLS unidirectionnel
et bidirectionnel en définissant <ConnectionProperties> sur "true" dans la
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 soit
|
Configurer un hôte virtuel pour capturer des informations TLS
Pour configurer l'hôte virtuel afin qu'il capture des informations TLS, définissez les propriétés suivantes
sous <PropagateTLSInformation> sur true.
<ConnectionProperties>: permet de capturer des informations de connexion TLS pour le protocole TLS unidirectionnel et bidirectionnel. La valeur par défaut estfalse.<ClientProperties>: permet de capturer des 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 pour les en-têtes
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 des en-têtes 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 de proxy ou d'un flux cible,
ou dans un élément <Step> ou <RouteRule>. Par exemple, vous pouvez acheminer
une requête vers différentes cibles en fonction du SN du client.
Pour en savoir plus, consultez les ressources suivantes :