ProHoster > Blog > administration > Automatisation de la gestion des certificats SSL Let's Encrypt à l'aide du challenge DNS-01 et AWS
Automatisation de la gestion des certificats SSL Let's Encrypt à l'aide du challenge DNS-01 et AWS
L'article décrit les étapes pour automatiser la gestion des certificats SSL à partir de Chiffrons l'AC en utilisant Défi DNS-01 и AWS.
acme-dns-route53 est un outil qui nous permettra d'implémenter cette fonctionnalité. Il peut fonctionner avec les certificats SSL de Let's Encrypt, les enregistrer dans Amazon Certificate Manager, utiliser l'API Route53 pour implémenter le défi DNS-01 et, enfin, envoyer des notifications push vers SNS. DANS acme-dns-route53 Il existe également des fonctionnalités intégrées à utiliser dans AWS Lambda, et c'est ce dont nous avons besoin.
Cet article est divisé en 4 sections :
créer un fichier zip ;
créer un rôle IAM ;
créer une fonction lambda qui s'exécute acme-dns-route53;
créer une minuterie CloudWatch qui déclenche une fonction 2 fois par jour ;
Remarque: Avant de commencer, vous devez installer GoLang 1.9+ и CLI AWS
Création d'un fichier zip
acme-dns-route53 est écrit en GoLang et prend en charge la version non inférieure à 1.9.
Nous devons créer un fichier zip avec un binaire acme-dns-route53 à l'intérieur. Pour ce faire, vous devez installer acme-dns-route53 depuis le référentiel GitHub à l'aide de la commande go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Le binaire est installé dans $GOPATH/bin annuaire. Veuillez noter que lors de l'installation, nous avons spécifié deux environnements modifiés : GOOS=linux и GOARCH=amd64. Ils indiquent clairement au compilateur Go qu'il doit créer un binaire adapté au système d'exploitation Linux et à l'architecture amd64 - c'est ce qui fonctionne sur AWS.
AWS s'attend à ce que notre programme soit déployé dans un fichier zip, alors créons acme-dns-route53.zip archive qui contiendra le binaire nouvellement installé :
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Remarque: Le binaire doit être à la racine de l'archive zip. Pour cela nous utilisons -j drapeau.
Maintenant notre pseudo zip est prêt à être déployé, il ne reste plus qu'à créer un rôle avec les droits nécessaires.
Création d'un rôle IAM
Nous devons mettre en place un rôle IAM avec les droits requis par notre lambda lors de son exécution.
Appelons cette politique lambda-acme-dns-route53-executor et donnez-lui immédiatement un rôle de base AWSLambdaBasicExecutionRole. Cela permettra à notre lambda d'exécuter et d'écrire des journaux sur le service AWS CloudWatch.
Tout d'abord, nous créons un fichier JSON qui décrit nos droits. Cela permettra essentiellement aux services lambda d'utiliser le rôle lambda-acme-dns-route53-executor:
Maintenant, exécutons la commande aws iam create-role pour créer un rôle :
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Remarque: rappelez-vous l'ARN de la politique (Amazon Resource Name) - nous en aurons besoin dans les prochaines étapes.
Rôle lambda-acme-dns-route53-executor créé, nous devons maintenant spécifier les autorisations pour celui-ci. Le moyen le plus simple de procéder est d'utiliser la commande aws iam attach-role-policy, en transmettant l'ARN de la stratégie AWSLambdaBasicExecutionRole comme suit:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Remarque: une liste avec d'autres politiques peut être trouvée ici.
Création d'une fonction lambda qui s'exécute acme-dns-route53
Hourra! Vous pouvez maintenant déployer notre fonction sur AWS à l'aide de la commande aws lambda create-function. Le lambda doit être configuré à l'aide des variables d'environnement suivantes :
AWS_LAMBDA - c'est clair acme-dns-route53 cette exécution a lieu dans AWS Lambda.
DOMAINS — une liste de domaines séparés par des virgules.