【问题标题】:Configuring SSL on Elastic Beanstalk Single Instance在 Elastic Beanstalk 单实例上配置 SSL
【发布时间】:2015-03-14 16:24:22
【问题描述】:

我正在尝试为我的 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-----

【问题讨论】:

  • 你能解释一下你是怎么去 https 运行的吗?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    对我来说,在使用 AWS Beanstalk Single Instance SSL for HTTPS(用于 Docker 环境)完成相同的例程之后,以及花费时间弄清楚 YAML 和制表符与空格(或键脚后没有空格,或或..)之后我的编辑器(Atom/Packages/Whitespace),甚至将 YAML 转换为 JSON(Atom/Packages/YAML_JSON 转换器),我已经意识到 初始键已损坏,必须生成一个新集合

    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/\*
    

    【讨论】:

      猜你喜欢
      • 2016-02-03
      • 2015-01-26
      • 2015-04-23
      • 2017-07-20
      • 2017-01-07
      • 2017-05-21
      • 2016-05-10
      • 1970-01-01
      • 2017-06-14
      相关资源
      最近更新 更多