メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

.NET を実行している EC2 インスタンスでの HTTPS の終了

次の設定ファイルは、以下のタスクを実行する Windows PowerShell スクリプトを作成して実行します。

  • ポート 443 にバインドされる既存の HTTPS 証明書の確認

  • Amazon S3 バケットから、PFX 証明書とパスワードを取得

    Amazon S3 バケット上の SSL 証明書とパスワードファイルにアクセスするために、aws-elasticbeanstalk-service-roleAmazonS3ReadOnlyAccess ポリシーを必ず追加してください。

  • 証明書のインストール

  • ポート 443 に証明書をバインド

    HTTP エンドポイント (ポート 80) を削除する場合は、Remove-WebBinding コマンドの上のコメントを参照してください。

例 .ebextensions/https-instance-dotnet.config

files:
  "C:\\certs\\install-cert.ps1":
    content: |
      import-module webadministration
      ## Settings - replace the following values with your own
      $bucket = "my-bucket"        ## S3 bucket name
      $certkey = "example.com.pfx" ## S3 object key for your PFX certificate
      $pwdkey = "password.txt"     ## S3 object key for a text file containing the certificate's password
      ##

      # Set variables
      $certfile = "C:\cert.pfx"
      $pwdfile = "C:\certs\pwdcontent"
      Read-S3Object -BucketName $bucket -Key $pwdkey -File $pwdfile
      $pwd = Get-Content $pwdfile -Raw

      # Cleanup existing binding
      if ( Get-WebBinding "Default Web Site" -Port 443 ) {
        Echo "Removing WebBinding"
        Remove-WebBinding -Name "Default Web Site" -BindingInformation *:443:
      }
      if ( Get-Item -path IIS:\SslBindings\0.0.0.0!443 ) {
        Echo "Deregistering WebBinding from IIS"
        Remove-Item -path IIS:\SslBindings\0.0.0.0!443
      }

      # Download certificate from S3
      Read-S3Object -BucketName $bucket -Key $certkey -File $certfile
      
      # Install certificate
      Echo "Installing cert..."
      $securepwd = ConvertTo-SecureString -String $pwd -Force -AsPlainText
      $cert = Import-PfxCertificate -FilePath $certfile cert:\localMachine\my -Password $securepwd
      
      # Create site binding
      Echo "Creating and registering WebBinding"
      New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
      New-Item -path IIS:\SslBindings\0.0.0.0!443 -value $cert -Force
      
      ## (optional) Remove the HTTP binding - uncomment the following line to unbind port 80
      # Remove-WebBinding -Name "Default Web Site" -BindingInformation *:80:
      ##
      
      # Update firewall
      netsh advfirewall firewall add rule name="Open port 443" protocol=TCP localport=443 action=allow dir=OUT

commands:
  00_install_ssl:
    command: powershell -NoProfile -ExecutionPolicy Bypass -file C:\\certs\\install-cert.ps1

単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 443 のトラフィックを許可する必要があります。次の設定ファイルは、AWS CloudFormation 関数を使用してセキュリティグループの ID を取得し、それにルールを追加します。

例 .ebextensions/https-instance-single.config

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

ロードバランシング環境では、エンドツーエンドの暗号化のために安全なトラフィックを変更なしでパスする複合および暗号化することができるようにロードバランサ―を設定します。