Итак, после некоторого расследования я понял это. Puppet 2.7.6 не устанавливает subjectAltNames в сертификате сервера, когда он генерирует этот сертификат для мастера (он действительно не знает, что это мастер в какой-либо момент).
Есть два способа исправить это:
puppet ca generate --dns_alt_names puppet [master-name/uuid/string/etc]
certname = master
У вас есть сертификат, установленный в качестве главного. Что касается способа его настройки, либо заставьте его работать с марионеткой, либо используйте файл хоста, чтобы установить IP-адрес мастера вместо марионетки.
Вы также можете использовать полное доменное имя, такое как master.example.com или puppet.example.com, чтобы вы могли использовать записи DNS, не требуя записей домена поиска.
Один совет по использованию марионетки в EC2 - назначить ElasticIP своему мастеру марионеток, а затем создать запись DNS для ElasticIP CNAME, а не запись A для IP.
DNS-серверы AWS изменяют свой ответ в зависимости от того, поступил ли запрос из одного региона EC2 или извне. Если запрос CNAME поступает из региона EC2, DNS-серверы AWS ответят внутренним IP-адресом CNAME.
Вы должны использовать CNAME в DNS, чтобы, когда марионеточные клиенты EC2 запрашивали у DNS-серверов AWS IP-адрес Puppetmaster, они получат ответ, который направит их на внутренний IP-адрес кукловода, а не на внешний IP.