CNAME到安全网址

时间:2017-06-26 10:45:43

标签: amazon-web-services encryption https elastic-beanstalk elastic-load-balancer

我有一个AWS Elastic Load Balancer,其中包含以下安全网址:

https://example.us-west-2.elasticbeanstalk.com/

我还有以下1& 1注册域名:

example.com

然后我在1& 1配置中添加www的子域名,结果为www.example.com

我想添加一个CNAME别名来将流量从域名路由到ELB。

www.example.com -> https://example.us-west-2.elasticbeanstalk.com/

所以我尝试添加CNAME

enter image description here

如您所见,它不接受网址,因为它是Invalid host name

我需要别名来提示安全(https)网址。但是,我认为这可能是错误的原因。

问题

如何设置CNAME以指向安全网址?

由于

更新

我的Elastic Load Balanacer确实有一个安全的听众。

enter image description here

2 个答案:

答案 0 :(得分:2)

放弃' http://'来自CNAME,只需使用:

example.us-west-2.elasticbeanstalk.com

答案 1 :(得分:2)

您必须使用HTTPSNGINX使用redirectApache中指定mod_rewrite。如果您想要更高级别的HTTP到HTTPS翻转,您可以通过指定证书的位置并在端口上执行listen来在您的应用程序中执行此操作(大部分时间) 80,重定向/重定位到端口443

在DNS级别,您只需指定location。在您的应用程序中或您的服务器上,您可以指定HTTP/HTTPS protocol。作为协议本身的DNS不能在其响应中指定其他协议。 HTTPS是在您的服务器上完成的处理器密集型加密操作。

我强烈建议您使用AWS Certificate Manager为您的域分配证书。如果你想在beanstalk应用程序中使用它,请查看letsencrypt。这是一个很棒的CLI工具。

Here is a helpful resource


Ubuntu + NGINX + letsencrypt

在Ubuntu上配置HTTP到HTTPS。是的,只有一个特定于操作系统的示例,但letsencrypt随时都可以在任何地方使用。

sudo apt-get update
sudo apt-get install letsencrypt
sudo apt-get install nginx
sudo systemctl stop nginx    #if it starts by default...
sudo letsencrypt certonly --standalone -n -m richard@thewhozoo.com.com -d thewhozoo.com -d cname.thewhozoo.com --agree-tos
sudo ls -l /etc/letsencrypt/live/thewhozoo.com/    #you should see your stuff in this folder
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048    #make yo'self a diffie
sudo vim /etc/nginx/sites-available/default

default文件中 (摘自HEREHERE以及HEREHERE

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name thewhozoo.com www.thewhozoo.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name thewhozoo.com www.thewhozoo.com;

    ssl_certificate /etc/letsencrypt/live/thewhozoo.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/thewhozoo.com/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;
}

现在您的NGINX文件中包含您的证书/密钥/ pems /列出的内容,您必须仔细检查防火墙。 对于Ubuntu和ufw,您可以通过以下方式进行访问:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw allow 'OpenSSH'
sudo ufw enable
sudo ufw status

您应该看到Nginx HTTPS已启用。 无论您的HTTPS风格是什么(SSL,TLSvXX等),您都需要在防火墙级别打开端口22,因为它们都使用它,而不是'OpenSSH'确保在allow 'OpenSSH'之前运行ufw enable。如果你不这样做......你的SSH会话将被终止并且......祝你好运。

现在你的防火墙很不错,重新启动nginx并且应该设置:

sudo systemctl start nginx

未来有用的提示: NGINX默认情况下将续订政策设置为3个月。我不确定这是否是互联网法的“标准”,但更新证书的附件是:

将此添加到您的crontab

sudo systemctl stop nginx
sudo letsencrypt renew
sudo systemctl start nginx

有用的注释:

  • 必须将域名链接到选择 BEFORE 正在运行letsencrypt的服务器。它执行反向IP查找以确保您是域的所有者/管理员。

  • 您不需要加密类型的巨大列表,但我强烈建议保留大多数。椭圆曲线Diffie Hellman是上面使用的键类型必须的,但您可以将其缩小为ECDH?EAESGCMRSA或{{ 1}}取决于您要支持的密码套件数量。如果您支持SHA且仅SSLvX,您只需支持(并限制)以下内容:TLSvX

    < / LI>


ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

  • 转到EC2资源控制台中的Load Balancer
  • 选择您的听众
    • 应该用粗体字母说明AWS Certificate Manager (ACM) + Elastic Load Balancer
  • 选中它,然后点击操作=&gt;修改
  • 仔细检查您的协议在端口443上是否为HTTPS,目标群体是否正常
  • 在弹出窗口底部,选择“从AWS Certificate Manager(ACM)中选择现有证书
  • 然后选择您的ACM证书
  • 保存
  • 在EBS /无论
  • 上使用SSH进入您的实例/应用程序
  • 编写NGINX策略,将HTTP流量重定向到HTTPS:

    HTTPS: 443
  • 重启NGINX

对于Elastic Beanstalk环境,请检查THIS INFO

等待大约5分钟让所有东西都沉没,你应该好好去! Check this for help if needed