翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Python を実行している EC2 インスタンスの HTTPS を終了する
Web Server Gateway Interface (WSGI) で Apache HTTP Server を使用する Python コンテナタイプの場合、設定ファイルを使用して、Apache HTTP Server が HTTPS を使用できるようにします。
次のスニペットを設定ファイルに追加して、証明書とプライベートキーマテリアルを説明に従って置き換え、ソースバンドルの .ebextensions
ディレクトリに保存します。設定ファイルは以下のタスクを実行します。
-
packages
キーは、yum を使用してmod24_ssl
をインストールします。 -
files
キーはインスタンスに次のファイルを作成します。/etc/httpd/conf.d/ssl.conf
-
Apache サーバーを設定します。アプリケーションの名前が
application.py
でない場合は、WSGIScriptAlias
の値内の強調表示されたテキストをそのアプリケーションへのローカルパスに置き換えてください。たとえば、django アプリケーションのものはdjango/wsgi.py
にあることがあります。この場所は、お客様の環境用に設定したWSGIPath
オプションの値と一致する必要があります。アプリケーションの要件によっては、python-path パラメータに他のディレクトリを追加する必要もあります。
/etc/pki/tls/certs/server.crt
-
インスタンスに証明書ファイルを作成します。
証明書ファイルの内容
をお客様の証明書の内容に置き換えます。注記
YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。
中間証明書がある場合は、
server.crt
のサイト証明書の後に組み込みます。-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
first intermediate certificate
-----END CERTIFICATE----- -----BEGIN CERTIFICATE-----second intermediate certificate
-----END CERTIFICATE----- /etc/pki/tls/certs/server.key
-
インスタンスにプライベートキーのファイルを作成します。
プライベートキーの内容
を、証明書リクエストまたは自己署名証明書の作成に使用したプライベートキーの内容に置き換えます。
-
container_commands
キーは、すべての設定が完了してから httpd サービスを停止し、httpd サービスが新しいhttps.conf
ファイルと証明書を使用できるようにします。
注記
この例は、Python プラットフォームを使用する環境のみで動作します。
例 .ebextensions/https-instance.config
packages:
yum:
mod24_ssl : []
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/python/run/baselinenv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
Alias /static/ /opt/python/current/app/static/
<Directory /opt/python/current/app/static>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /opt/python/current/app/application.py
<Directory /opt/python/current/app>
Require all granted
</Directory>
WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \
python-path=/opt/python/current/app \
python-home=/opt/python/run/venv \
home=/opt/python/current/app \
user=wsgi \
group=wsgi
WSGIProcessGroup wsgi-ssl
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents
# See note below.
-----END RSA PRIVATE KEY-----
container_commands:
01killhttpd:
command: "killall httpd"
02waitforhttpddeath:
command: "sleep 3"
注記
プライベートキーを含む設定ファイルがソースコントロールにコミットされないようにしてください。設定をテストして動作が適切であることを確認したら、プライベートキーを Amazon S3 に保存して、デプロイ中にダウンロードされるように設定を変更します。手順については、「秘密キーを Amazon S3 に安全に保存する」を参照してください。
単一インスタンスの環境では、インスタンスのセキュリティも変更してポート 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
ロードバランシング環境では、エンドツーエンドの暗号化のために安全なトラフィックを変更なしでパスするか復号および暗号化することができるようにロードバランサーを設定します。