Неправильная конфигурация SSL-сертификата для AWS Elastic Load Balancer

Я пытаюсь настроить сертификат SSL для поддержки HTTPS через AWS ELB. У меня все настроено:

1) SSL-сертификат GoDaddy настроен в AWS ELB (включая цепочку сертификатов).
2) Пусть слушатели ELB выглядят следующим образом:
client ---> HTTPS -> ELB порт 443 -> HTTP - -> порт сервера 80
3) В GoDaddy создайте запись CNAME, например:
service.acme.com CNAME для aws-some-region.elb.amazonaws.com
4) Если я скручиваю -kv https://service.acme.com/

*   Trying 52.6.xxx.xx...
* Connected to service.acme.com (52.6.xxx.xxx) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: pixxeen.com
* Server certificate: Go Daddy Secure Certificate Authority - G2
* Server certificate: Go Daddy Root Certificate Authority - G2
> GET / HTTP/1.1
> Host: service.acme.com
> User-Agent: curl/7.43.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Content-Type: text/html
< Date: Mon, 22 Feb 2016 14:06:08 GMT 
< ETag: W/"154-1455797592000"
< Last-Modified: Thu, 18 Feb 2016 12:13:12 GMT
< Server: Apache-Coyote/1.1
< Content-Length: 154
< Connection: keep-alive
< 
<html>
  <head>
    <title>Acme Service Application</title>
  </head>
  <body bgcolor=white>
      <p>Acme Service Application</p>
  </body>
* Connection #0 to host service.acme.com left intact

HTML - это страница index.html, которую я развернул для ELB, чтобы запросить подтверждение того, что экземпляр EC2 запущен и работает.

Однако проблема, с которой я сталкиваюсь, заключается в том, что если какая-либо платформа мобильного клиента попадает в конечные точки службы service.acme.com (okhttp или AFNetworking), я вижу следующее (это вызов okhttp):

02-22 08:52:10.513 2564-2564/com.acme W/System.err: javax.net.ssl.SSLPeerUnverifiedException: Hostname service.acme.com not verified:
02-22 08:52:10.513 2564-2564/com.acme W/System.err:     certificate: sha1/+axZF3Oyaatuoio5rsmNhUUhOZE=
02-22 08:52:10.513 2564-2564/com.acme W/System.err:     DN: CN=acme.com,OU=Domain Control Validated
02-22 08:52:10.513 2564-2564/com.acme W/System.err:     subjectAltNames: [acme.com, www.acme.com]

Итак, есть ли у кого-нибудь идеи, где я ошибся?

Я гулял по StackOverflow и наткнулся на этот пост (один из самых подробных, что я видел): Установка сертификата SSL на Amazon EC2 ELB, и он, похоже, подтверждает все шаги, которые я сделал.


person Perry Hoekstra    schedule 22.02.2016    source источник


Ответы (2)


Ваш сертификат недействителен для доменного имени service.acme.com.

Это действительно только для конкретных хостов acme.com и www.acme.com.

Вы четко увидите эту ошибку, если опустите параметр -k (небезопасный) для curl (что не является хорошим тестовым флагом, поскольку он намеренно игнорирует большинство проблем с SSL)

person Joachim Isaksson    schedule 22.02.2016
comment
Это то, чего я боялся, потому что я не купил сертификат, разрешающий поддомены, верно? Итак, мой единственный выбор - переделать CNAME следующим образом: acme.com CNAME на aws-some-region.elb.amazonaws.com, что мне не нравится, потому что я действительно не хотел, чтобы домен верхнего уровня указывал на AWS. ELB. - person Perry Hoekstra; 22.02.2016
comment
@PerryHoekstra Либо так, либо иди для отдельного сертификата для конечной точки службы. В настоящее время они не слишком дороги и могут стоить того, чтобы не смешивать Интернет и службы. - person Joachim Isaksson; 22.02.2016

Сертификат, прикрепленный к ELB, будет проверяться по cname, а не по самому имени ELB. Если вы прикрепили сертификат x.y.z.com к ELB, то ваше cname должно соответствовать x.y.z.com, а не cname ELB.

Если у вас есть сертификат подстановки * .x.y.z.com, то ваше имя cname может быть любым. X.y.z.com в соответствии с требованиями.

person Raja Kumar    schedule 15.11.2019