19

J'ai essayé de joindre un certificat SSL que je suis actuellement à l'aide d'un de mes instances élastiques d'équilibrage de charge sur un nouveau modèle de formation nuageuse, mais chaque fois que je reçois:
Certificate Server introuvable pour la clé
Ensuite, le modèle Cloudformation commence à revenir à ce stade.Comment attacher le certificat SSL pré-téléchargé à ELB dans le modèle CloudFormation?

  "Listeners" : [ 
     { 
      "LoadBalancerPort" : "443", 
      "InstancePort" : "80", 
      "SSLCertificateId" : "start_certname_com", 
      "Protocol" : "HTTPS" 
     },... 

Amazon demande la Le certificat du ARN SSL à utiliser. et je crois que c'est correct car c'est la chaîne exacte qui apparaît dans la liste déroulante de la configuration actuelle ELB qui prend 443 au port 80 sur les instances.

Ai-je oublié quelque chose sur mon auditeur?

Répondre

20

J'ai fait compris comment le faire en attendant la réponse, vous devez utiliser les outils IAM CLI fournis par amazon, puis utilisez la commande
iam-servercertgetattributes -s certname

Cela vous fournira une chaîne comme :

arn:aws:iam::123456789123:server-certificate/start_certname_com

Ceci est la valeur que vous placez dans le champ paire de valeurs "SSLCertificateId"

le instruire d'installation ions pour les outils de ligne de commande IAM (CLI) se trouvent à:
http://docs.aws.amazon.com/IAM/latest/CLIReference/Setup.html

Téléchargez le kit d'outils de aws ici
http://aws.amazon.com/developertools/AWS-Identity-and-Access-Management/4143

dans l'ensemble de votre bloc final ressemblera:

"Listeners" : [ 
    { 
     "LoadBalancerPort" : "443", 
     "InstancePort" : "80", 
     "SSLCertificateId" : "arn:aws:iam::123456789123:server-certificate/start_certname_com", 
     "Protocol" : "HTTPS" 
    },... 
+0

Grande suite réponse - beaucoup aidé. – Aitch

+3

Il est également possible de faire cette recherche directement dans la formation des nuages. Voir https://forums.aws.amazon.com/message.jspa?messageID=248285. – Tristan

+1

La réponse de Tristan est bien expliquée par @gene_wood dans la réponse ci-dessous. –

29

Vous pouvez dériver le ARN pour un certificat dans CloudFormation avec uniquement le nom du certificat. Pas besoin d'exécuter un outil de ligne de commande et de coder en dur la valeur dans votre modèle CloudFormation.

"Parameters":{ 
     "Path":{ 
     "Description":"AWS Path", 
     "Default":"/", 
     "Type":"String" 
     } 
    } 
    ... 
     "Listeners" : [ 
    { 
     "LoadBalancerPort" : "443", 
     "InstancePort" : "80", 
     "SSLCertificateId" : { 
     "Fn::Join":[ 
      "", 
      [ 
       "arn:aws:iam::", 
       { 
       "Ref":"AWS::AccountId" 
       }, 
       ":server-certificate", 
       { 
       "Ref":"Path" 
       }, 
       "start_certname_com" 
      ] 
     ] 
     }, 
     "Protocol" : "HTTPS" 
    },... 

Ce paramètre détermine votre identifiant de compte avec le {"Ref":"AWS::AccountId"}pseudo parameter et combines avec les autres éléments nécessaires pour former le ARN. Notez que j'utilise une variable appelée Path dans le cas où vous avez défini un chemin pour votre certificat. Sinon, la valeur par défaut de "/" fonctionne correctement.

Cette solution a été mentionnée par @Tristan et est une extension de merrix143243's solution

+3

Certainement la meilleure réponse! –

+1

Très cool! Si quelqu'un utilise [cloudformation-ruby-dsl] (https: // github.com/bazaarvoice/cloudformation-ruby-dsl), voici un one-liner inspiré par cette réponse: ': SSLCertificateId => rejoindre ('', 'arn: aws: iam ::', aws_account_id(), ': serveur- certificate/', ref (' SSLCertificateName ')) ' –

+0

@gene_wood La réponse correspond aux certificats émis par Amazon, mais peut-être pas ceux que j'ai importés (d'autres autorités de certification). Les importés reçoivent un GUID comme visible dans le champ "Identifier" dans ACM (Amazon Certificate Management). Aussi, en mars 2018, 1) le "arn: aws: acm ::" semble être le préfixe non ": iam ::", 2) le ": server-certificate" ressemble à ": certificate" (sauf si j'ai importé c'est faux). Question: quel champ dans ACM votre "start_certname_com" correspond-il à: "Nom de domaine", "Noms supplémentaires", "Identifiant", "Nom" (user tag)? – timmi4sa

3

Voici comment vous obtenez le nom long de cert avec la dernière AWS CLI:

pip install awscli 
aws iam list-server-certificates 
Questions connexes