Je souhaite utiliser un certificat client émis par un tiers lors de la configuration de l'authentification mutuelle du protocole TLS (Transport Layer Security) pour les API Amazon API Gateway.
Solution
Pour utiliser un certificat client signé par un tiers pour API Passerelle avec authentification TLS, procédez comme suit :
- Créez un truststore pour utiliser le certificat signé par un tiers.
- Créez un nom de domaine personnalisé et un mappage d'API pour votre API API Passerelle.
- Créez un enregistrement DNS pour mapper le nom de domaine personnalisé à API Passerelle.
- Désactivez le point de terminaison par défaut.
- Tester l'API.
Remarque :
Créez un truststore pour utiliser le certificat signé par un tiers
1. Générez un RootCA. Le RootCA est utilisé pour émettre le certificat client.
openssl genrsa -out RootCA.key 4096
openssl req -new -x509 -days 3650 -key RootCA.key -out RootCA.pem
2. Remplissez les champs obligatoires et entrez le nom de domaine.
3. Créez une clé privée de certificat client, une demande de signature de certificat (CSR) et un certificat client.
openssl genrsa -out my_client.key 2048
openssl req -new -key my_client.key -out my_client.csr
4. Signez le certificat client à l'aide de l'autorité de certification que vous avez créée précédemment.
openssl x509 -req -in my_client.csr -CA RootCA.pem -CAkey RootCA.key -set_serial 01 -out my_client.pem -days 3650 -sha256
5. Créez un compartiment Amazon Simple Storage Service (Amazon S3) pour stocker le fichier truststore.pem.
6. Chargez le fichier RootCA.pem dans le truststore du compartiment Amazon S3.
7. (Facultatif) Créez un fichier de chaîne de certificats à partir du certificat d'autorité de certification intermédiaire vers l'autorité de certification Root.
Cat Intermediate.pem ca.pem >ca-chain.pem.
Pour plus d'informations, consultez la section Configuration de votre truststore.
Créez un nom de domaine personnalisé et un mappage d'API pour votre API API Passerelle
Remarque : seuls les certificats dont la taille de clé est de 2048 bits sont visibles avec API Passerelle. La taille du certificat ne peut pas dépasser 2048 bits.
1. Ouvrez la console API Passerelle, puis cliquez sur Noms de domaine personnalisé.
2. Pour les noms de domaine, entrez votre nom de domaine, puis choisissez Créer.
3. Dans le champ Nom de domaine, entrez votre nom de domaine.
4. Pour la version TLS minimale, choisissez TLS 1.2.
5. Activez l'authentification TLS mutuelle.
6. Pour l'URI Truststore, entrez l'URI Amazon S3 que vous avez créé précédemment.
7. Pour la configuration des points de terminaison, choisissez Regional.
8. Dans Type de certificat, choisissez votre type de certificat, puis choisissez Créer un nom de domaine.
9. Choisissez votre nom de domaine personnalisé, puis choisissez Configurer les mappages d'API.
-
Choisissez Ajouter un nouveau mappage.
-
Choisissez l'API, l'étape et le chemin du mappage, puis choisissez Enregistrer.
Pour plus d'informations, veuillez consulter la section Comment configurer un nom de domaine personnalisé pour mon API API Passerelle ?
Créez un enregistrement DNS pour mapper le nom de domaine personnalisé à API Passerelle
Créez un enregistrement DNS pour faire pointer le nom de domaine personnalisé vers le nom de domaine régional d'API Passerelle. Cela permet au trafic lié au nom de domaine personnalisé d'être acheminé vers le nom d'hôte régional de l'API. L'enregistrement DNS peut être du type CNAME ou « A Alias ».
Pour plus d'informations, consultez la sectionConfiguration de Route 53 pour acheminer le trafic vers un point de terminaison API Passerelle.
Désactiver le point de terminaison par défaut
Par défaut, les clients peuvent appeler des API à l'aide du point de terminaison execute-api généré par API Passerelle pour votre API. Désactivez le point de terminaison execute-api par défaut afin que les clients puissent accéder à votre API en utilisant uniquement un nom de domaine personnalisé.
Pour les API HTTP, consultez la section Désactivation du point de terminaison par défaut pour une API HTTP.
Pour les API REST, voir Désactivation du point de terminaison par défaut pour une API REST.
Tester l'API
Testez l'API avec les paramètres --key et --cert pour envoyer le certificat client dans le cadre de la demande.
$ curl -v https://{YourCustomDomainName}/{resource} --key my_client.key --cert my_client.pem
Remarque : La clé privée my_client.key et le certificat client my_client.pem doivent être inclus pour que la demande soit réussie.
Informations connexes
Comment puis-je résoudre les problèmes liés à la chaîne de certificats et aux certificats auto-signés pour Amazon API Gateway lorsque les domaines personnalisés et le protocole TLS mutuel sont activés ?
Présentation de l'authentification TLS mutuelle pour Amazon API Gateway
Comment dois-je résoudre les erreurs HTTP 403 Forbidden (HTTP 403 accès interdit) provenant d'un nom de domaine personnalisé d'API Gateway qui nécessite une authentification TLS mutuelle ?