26.2. Itinéraires sécurisés
Les itinéraires sécurisés permettent d'utiliser plusieurs types de terminaisons TLS pour fournir des certificats au client. Les sections suivantes décrivent comment créer des itinéraires de recryptage, de bordure et de passage avec des certificats personnalisés.
Si vous créez des itinéraires dans Microsoft Azure via des points de terminaison publics, les noms des ressources sont soumis à des restrictions. Vous ne pouvez pas créer de ressources qui utilisent certains termes. Pour obtenir une liste des termes restreints par Azure, voir Résoudre les erreurs de noms de ressources réservées dans la documentation Azure.
26.2.1. Création d'une route de recryptage avec un certificat personnalisé
Vous pouvez configurer une route sécurisée en utilisant la terminaison TLS reencrypt avec un certificat personnalisé à l'aide de la commande oc create route
.
Conditions préalables
- Vous devez disposer d'une paire certificat/clé dans des fichiers codés PEM, où le certificat est valide pour l'hôte de la route.
- Il se peut que vous disposiez d'un certificat d'autorité de certification distinct dans un fichier codé PEM qui complète la chaîne de certificats.
- Vous devez disposer d'un certificat d'autorité de certification de destination distinct dans un fichier codé en PEM.
- Vous devez avoir un service que vous souhaitez exposer.
Les fichiers clés protégés par un mot de passe ne sont pas pris en charge. Pour supprimer une phrase de passe d'un fichier clé, utilisez la commande suivante :
$ openssl rsa -in password_protected_tls.key -out tls.key
Procédure
Cette procédure permet de créer une ressource Route
avec un certificat personnalisé et de recrypter la terminaison TLS. La procédure suivante suppose que la paire certificat/clé se trouve dans les fichiers tls.crt
et tls.key
dans le répertoire de travail actuel. Vous devez également spécifier un certificat d'autorité de certification de destination pour permettre au contrôleur d'entrée de faire confiance au certificat du service. Vous pouvez également spécifier un certificat d'autorité de certification si nécessaire pour compléter la chaîne de certificats. Remplacez les noms de chemin réels pour tls.crt
, tls.key
, cacert.crt
, et (éventuellement) ca.crt
. Remplacez frontend
par le nom de la ressource Service
que vous souhaitez exposer. Remplacez le nom d'hôte approprié par www.example.com
.
Créer une ressource
Route
sécurisée en utilisant la terminaison TLS reencrypt et un certificat personnalisé :$ oc create route reencrypt --service=frontend --cert=tls.crt --key=tls.key --dest-ca-cert=destca.crt --ca-cert=ca.crt --hostname=www.example.com
Si vous examinez la ressource
Route
qui en résulte, elle devrait ressembler à ce qui suit :Définition YAML de la route sécurisée
apiVersion: route.openshift.io/v1 kind: Route metadata: name: frontend spec: host: www.example.com to: kind: Service name: frontend tls: termination: reencrypt key: |- -----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY----- certificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- caCertificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- destinationCACertificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
Voir
oc create route reencrypt --help
pour plus d'options.
26.2.2. Création d'une route périphérique avec un certificat personnalisé
Vous pouvez configurer un itinéraire sécurisé utilisant la terminaison TLS en périphérie avec un certificat personnalisé à l'aide de la commande oc create route
. Avec un itinéraire périphérique, le contrôleur d'entrée met fin au cryptage TLS avant de transmettre le trafic au pod de destination. L'itinéraire spécifie le certificat et la clé TLS que le contrôleur d'entrée utilise pour l'itinéraire.
Conditions préalables
- Vous devez disposer d'une paire certificat/clé dans des fichiers codés PEM, où le certificat est valide pour l'hôte de la route.
- Il se peut que vous disposiez d'un certificat d'autorité de certification distinct dans un fichier codé PEM qui complète la chaîne de certificats.
- Vous devez avoir un service que vous souhaitez exposer.
Les fichiers clés protégés par un mot de passe ne sont pas pris en charge. Pour supprimer une phrase de passe d'un fichier clé, utilisez la commande suivante :
$ openssl rsa -in password_protected_tls.key -out tls.key
Procédure
Cette procédure crée une ressource Route
avec un certificat personnalisé et une terminaison TLS. La procédure suivante suppose que la paire certificat/clé se trouve dans les fichiers tls.crt
et tls.key
dans le répertoire de travail actuel. Vous pouvez également spécifier un certificat CA si nécessaire pour compléter la chaîne de certificats. Remplacez les noms de chemin réels par tls.crt
, tls.key
et (éventuellement) ca.crt
. Remplacez le nom du service que vous souhaitez exposer par frontend
. Remplacez le nom d'hôte approprié par www.example.com
.
Créer une ressource
Route
sécurisée en utilisant la terminaison TLS et un certificat personnalisé.$ oc create route edge --service=frontend --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=www.example.com
Si vous examinez la ressource
Route
qui en résulte, elle devrait ressembler à ce qui suit :Définition YAML de la route sécurisée
apiVersion: route.openshift.io/v1 kind: Route metadata: name: frontend spec: host: www.example.com to: kind: Service name: frontend tls: termination: edge key: |- -----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY----- certificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- caCertificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
Voir
oc create route edge --help
pour plus d'options.
26.2.3. Création d'une route passante
Vous pouvez configurer une route sécurisée utilisant la terminaison passthrough à l'aide de la commande oc create route
. Avec la terminaison passthrough, le trafic crypté est envoyé directement à la destination sans que le routeur n'assure la terminaison TLS. Par conséquent, aucune clé ni aucun certificat n'est nécessaire sur l'itinéraire.
Conditions préalables
- Vous devez avoir un service que vous souhaitez exposer.
Procédure
Créer une ressource
Route
:$ oc create route passthrough route-passthrough-secured --service=frontend --port=8080
Si vous examinez la ressource
Route
qui en résulte, elle devrait ressembler à ce qui suit :Une route sécurisée à l'aide de la terminaison Passthrough
apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-passthrough-secured 1 spec: host: www.example.com port: targetPort: 8080 tls: termination: passthrough 2 insecureEdgeTerminationPolicy: None 3 to: kind: Service name: frontend
Le module de destination est chargé de fournir des certificats pour le trafic au point final. Il s'agit actuellement de la seule méthode permettant d'exiger des certificats de clients, également connus sous le nom d'authentification bidirectionnelle.