在Elastic Beanstalk单实例上配置SSL

时间:2015-03-14 16:24:22

标签: json node.js ssl amazon-web-services yaml

我正在尝试为我的NodeJS Beanstalk实例安装SSL证书。在这些instructions from Amazon之后,我创建了YAML文件并插入了我的信息。

每次尝试部署时都会收到此错误:

  

应用程序版本0.0.3中的配置文件.ebextensions / singlessl.config包含无效的YAML或JSON。 YAML例外:在扫描下一个令牌时发现字符' \ t'无法在"",第10行,第1列中启动任何令牌:^,JSON异常:位置0处的意外字符(R)。更新配置文件。

我已经用一把细梳齿梳理了这件事,让它在多个验证器中得到验证,甚至在多个操作系统上创作了......但我似乎无法动摇这个假设标签字符。

有人在JSON中有这样的配置文件示例吗?我的其他配置是JSON并且工作得很好。如果没有,谁能看到我在这里做错了什么?

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {Ref : MyIDHere}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

files:
  /etc/nginx/conf.d/ssl.conf:
    mode: "000755"
    owner: root
    group: root
    content: |
      # HTTPS server

      server {
          listen       443;
          server_name  localhost;

          ssl                  on;
          ssl_certificate      /etc/pki/tls/certs/server.crt;
          ssl_certificate_key  /etc/pki/tls/certs/server.key;

          ssl_session_timeout  5m;

          ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
          ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
          ssl_prefer_server_ciphers   on;

          location / {
              proxy_pass  http://nodejs;
              proxy_set_header   Connection "";
              proxy_http_version 1.1;
              proxy_set_header        Host            $host;
              proxy_set_header        X-Real-IP       $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }
      }

  /etc/pki/tls/certs/server.crt:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN CERTIFICATE-----
      CERT DATA HERE
      -----END CERTIFICATE-----

/etc/pki/tls/certs/server.key:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      KEY DATA HERE
      -----END RSA PRIVATE KEY-----

2 个答案:

答案 0 :(得分:1)

第10行有一个制表符。删除此选项卡可以解决您收到的错误。

当您从亚马逊的指令中复制代码时,它会复制到会导致此问题的选项卡上。我遇到了同样的问题,如果你浏览YAML文件并确保没有奇怪的空白字符,它应该可以正常工作。

答案 1 :(得分:0)

对我来说,在使用适用于HTTPS的AWS Beanstalk单实例SSL(对于Docker env)使用相同的例程之后,并花了一些时间弄清楚了YAML和制表符与空间(或键页脚后没有空格,或..)我的编辑器(Atom / Packages / Whitespace),甚至将YAML转换为JSON(Atom / Packages / YAML_JSON Converter),我意识到初始键已损坏,必须 生成新集合

openssl genrsa 2048 > privatekey.pem
openssl req -new -key privatekey.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt
# last line is for signing the rsa yourself for development purposes.

然后一切正常!因此,我无法强调确保这些键有效的重要性。看来解决这个问题的唯一方法就是出现一些错误:

  

PEM_read_bio_PrivateKey:ASN1   错误:0D0680A8:ASN1编码例程:ASN1_CHECK_TLEN   错误:0D07803A:asn1编码例程:ASN1_ITEM_EX_D2I:嵌套的asn1错误

祝你好运!

P.S .:哦,如果您遇到__MACOSX /错误,请执行以下操作:

 zip -d Archive.zip __MACOSX/\*