Как подключить предварительно загруженный SSL-сертификат к ELB в шаблоне CloudFormation?
Я пытаюсь подключить SSL-сертификат, который в настоящее время я использую для одного из моих экземпляров балансировки эластичной нагрузки в новом шаблоне Cloud Formation, но каждый раз, когда я получаю:
Сертификат сервера не найден для ключа
Затем шаблон Cloudformation начинает откатываться назад.
"Listeners" : [
{
"LoadBalancerPort" : "443",
"InstancePort" : "80",
"SSLCertificateId" : "start_certname_com",
"Protocol" : "HTTPS"
},...
Amazon просит использовать ARN сертификата SSL. и я считаю, что это правильно, поскольку это точная строка, которая появляется в раскрывающемся списке текущего настроенного ELB, который берет 443 в порт 80 на экземплярах.
Мне что-то не хватает на моем слушателе?
Ответы
Ответ 1
Я действительно понял, как это сделать, ожидая ответа, вам нужно использовать инструменты CLI IAM, предоставляемые amazon, а затем использовать команду
iam-servercertgetattributes -s certname
Это даст вам строку типа:
arn:aws:iam::123456789123:server-certificate/start_certname_com
Это значение, которое вы поместите в поле пары значений "SSLCertificateId"
Инструкции по настройке инструментов командной строки IAM (CLI) можно найти по адресу:
http://docs.aws.amazon.com/IAM/latest/CLIReference/Setup.html
Загрузите набор инструментов с aws здесь
http://aws.amazon.com/developertools/AWS-Identity-and-Access-Management/4143
В целом ваш последний блок будет выглядеть так:
"Listeners" : [
{
"LoadBalancerPort" : "443",
"InstancePort" : "80",
"SSLCertificateId" : "arn:aws:iam::123456789123:server-certificate/start_certname_com",
"Protocol" : "HTTPS"
},...
Ответ 2
Вы можете получить ARN для сертификата в CloudFormation с именем сертификата. Не нужно запускать инструмент командной строки и жестко кодировать значение в шаблон 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"
},...
Это определяет идентификатор вашей учетной записи с псевдонимом {"Ref":"AWS::AccountId"}
и объединяет его с другими элементами, необходимыми для формирования ARN. Обратите внимание, что я использую переменную с именем Path
, если вы установили путь для своего сертификата. Если значение по умолчанию "/" не работает,
Это решение было упомянуто @Tristan и является расширением merrix143243 solution
Ответ 3
Здесь вы получите длинное имя сертификата с последним AWI CLI:
pip install awscli
aws iam list-server-certificates