3

ロードバランサーにSSL証明書が設定されたWindows/.NETElasticBeanstalkインスタンスがあります。デフォルトでは、これによりhttps/443からhttp/80へのポート転送が作成されます。ロードバランサーの443/httpsをbeanstalkインスタンスの443httpsに転送したいと思います。

私はここに記載されていることをやろうとしていました:

対応するEC2インスタンスEC2-->ロードバランサー->リスナーを再構成して、SSL証明書で構成されたHTTPSにHTTPS転送するようにしました。問題は、HTTPSリクエストを実行しようとするとタイムアウトすることです。ElasticBeanstalkインスタンスは、EC2リスナーを変更することを好まないようです。

何か案は?

4

3 に答える 3

2

LoadBalancerとElasticBeanstalkの間でSSLを機能させるには、いくつかのものが必要です。

  1. ポート443をポート443に転送するようにEC2LoadBalancerを設定します(SSL上)。私はすでに上記の質問でこの部分を持っていました。

  2. SSLを使用する他のサイトと同様にEC2インスタンスでIISを設定します。a)。IISのEC2インスタンスにSSL証明書をインストールします。b)。SSL証明書を使用してhttps/443バインディングを追加します。

問題は、私が#2を無料で期待していたことでした。Windows Azureでは、インスタンスで証明書を構成する場合、これはほとんど無料ですが、現時点では、Windows用のAMZNElasticBeanstalkには当てはまりません。

また、#2はスクリプト可能であると期待しているので、手動で#2を実行しなくても、インスタンスをスケールアップまたはスケールダウンできます。EBインスタンスでパワーシェルスクリプトを結び付ける簡単な方法を探していましたが、どうやらこの機能もありません。

私の最終的な解決策は、SSL証明書がインストールされ、httpsバインディングがすでに追加されているカスタムVMイメージ(AMI)を作成することでした。これを行うと、SSLのものがすでにセットアップされているElasticBeanstalkイメージをデプロイできます。これを行うと、構成なしでスケールアップまたはスケールダウンできます。

于 2012-12-04T04:58:34.063 に答える
1

これは、さまざまなOAuthプロバイダーを使用したASP.NETMVCプロジェクトでの私にとって特に問題でした。基本的に、httpsを使用する必要があるものはすべてElasticBeanstalkで壊れていました。X-Forwarded-Proto HTTPヘッダーを探してコーディングしようとしましたが、かなり厄介でした。そのため、SSLをEC2インスタンスに直接接続したかったのです。

AMIを使用せずにこれを行う方法を理解するのにおそらく3時間かかったので、これが誰かに役立つことを願っています。

以前にカスタムAMIアプローチを試しましたが、機能しますが、2つの問題があります。

  1. 自分のAMIにパッチを適用して維持する必要があり、これには時間がかかります。標準のイメージを使用すると、新しいイメージが利用可能になったときに環境を再構築できます。
  2. 構成設定をソース管理できません。クラウドのどこかにある不透明なAMIに埋め込まれているだけです。

私はこの投稿からこれを適応させました。

まず、VisualStudioWebプロジェクトのルートに次のディレクトリを追加する必要があります.ebextensions

その中に、というテキストファイルを作成しますenvironment.config-ここではYAMLを使用するので、アプリケーション構成ファイルであると見なしてタブを追加する場合に備えて、VisualStudioで編集しないでください-YAMLは空白に依存します。ファイルの構文はAmazonに記載されています

私のファイルにはIISを調整するための他の設定がたくさんありますが、関連するビットは次のようになります。

container_commands:
  site_add_ssl_binding:
    command: PowerShell -ExecutionPolicy Bypass -File "C:\\inetpub\\wwwroot\\.ebextensions\\ssl.ps1"

これにより、と呼ばれるカスタムPowerShellスクリプトが実行されssl.ps1ます。.ebextensionsそれでは、ディレクトリ内にそれを作成しましょう。

# If there is no existing SSL binding
if ( -not(Get-WebBinding "Default Web Site" -Port 443) ) {

    # Import the .pfx file into the certificate store
    $securepwd = ConvertTo-SecureString -String "YOUR_PFX_PASSWORD_HERE" -Force -AsPlainText
    $cert = Import-PfxCertificate -FilePath C:\inetpub\wwwroot\.ebextensions\my-certificate.pfx cert:\localMachine\my -Password $securepwd

    # Create site binding in IIS
    New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
    New-Item IIS:SslBindings\0.0.0.0!443 -value $cert
}

このコマンドを実行すると、.pfxファイルが証明書ストアにインポートされ、Webサイトのポート443にSSLバインディングが作成されます。

私が参照した元のコードでは、危険な文字エンコードに関してあらゆる種類の問題がありました。したがって、このサンプルをコピーして貼り付けても機能しない場合は、EC2インスタンスにリモート接続し、コマンドプロンプトを開いて、コマンドを直接実行することでテストできます。PowerShell -ExecutionPolicy Bypass -File "C:\inetpub\wwwroot\.ebextensions\ssl.ps1"

.pfxファイルもディレクトリに追加する必要があります.ebextensions。Visual Studioで、すべてのファイルがプロジェクトに含まれていること、およびコンテンツのビルドアクションがあることを確認します(ソリューションエクスプローラーでファイルを選択し、F4キーを押します)。ソリューションエクスプローラーは次のようになります。

  • web-project.csproj
    • .ebextensions
      • environment.config
      • my-certificate.pfx
      • ssl.ps1
  • ..。

次に、AWS Toolkit for Visual Studioを使用して、プロジェクトを右クリックしPublish to AWS、プロンプトを選択して実行します。これにより、デプロイメントパッケージがElastic Beanstalk環境にアップロードされ、インストールされます。カスタマイズは、デプロイ中、または新しいEC2インスタンスがプロビジョニングされるたびに実行されます。

正常に実行されると、.ebextensionsディレクトリは削除されます。

Visual Studioプロジェクト内に.pfxファイルを含めたくない場合、 元の例ではPowerShellを使用してS3インスタンスから.pfxファイルをダウンロードします。Elastic Beanstalk環境変数を参照することで、.ps1にパスワードが埋め込まれないようにすることもできます。

これをエンドツーエンドで機能させるには、次のことも行う必要があります。

  1. EC2インスタンスのポート443に443トラフィックを転送するようにロードバランサーを設定します。デフォルトではポート80に切り替わります。
  2. 443トラフィックを許可するように、ロードバランサーからセキュリティグループを構成します。
  3. 443トラフィックを許可するようにセキュリティグループをEC2インスタンスに設定します。
于 2015-01-26T01:09:48.943 に答える
0

一部のインスタンスタイプでは、構成ファイルを介してElasticBeanstalkアプリサーバーを構成できます。この手法を使用してSSLを有効にすることができます。

設定例については、 ElasticBeanstalkアプリケーションインスタンスからHTTPSを提供するを参照してください。

于 2013-04-09T17:18:46.673 に答える