

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Python
<a name="https-singleinstance-python"></a>

Untuk jenis kontainer Python yang menggunakan Apache HTTP Server dengan Web Server Gateway Interface (WSGI), Anda menggunakan [file konfigurasi](ebextensions.md) untuk mengaktifkan Apache HTTP Server untuk menggunakan HTTPS.

Tambahkan snippet berikut ke [file konfigurasi](ebextensions.md) Anda, menggantikan sertifikat dan materi kunci pribadi seperti yang diinstruksikan, dan simpan snippet di direktori `.ebextensions` paket sumber Anda. File konfigurasi melakukan tugas berikut:
+ Kunci `packages` tersebut menggunakan yum untuk memasang `mod_ssl`.
+ Kunci `files` tersebut membuat file berikut pada instans:  
`/etc/httpd/conf.d/ssl.conf`  
Mengonfigurasi server Apache. Jika aplikasi Anda tidak bernama `application.py`, ganti teks yang disorot dalam nilai `WSGIScriptAlias` dengan jalur lokal untuk aplikasi Anda. Sebagai contoh, aplikasi django mungkin berada di `django/wsgi.py`. Lokasi harus sesuai dengan nilai opsi `WSGIPath` yang Anda tetapkan untuk lingkungan Anda.  
Tergantung pada persyaratan aplikasi Anda, Anda mungkin juga perlu menambahkan direktori lain ke parameter **python-path**.   
`/etc/pki/tls/certs/server.crt`  
Membuat file sertifikat pada instans. Ganti *certificate file contents* dengan isi sertifikat Anda.  
YAML bergantung pada indentasi yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.
Jika Anda memiliki sertifikat menengah, sertakan sertifikat tersebut di `server.crt` setelah sertifikat situs Anda.  

  ```
        -----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`  
Membuat file kunci pribadi pada instans. Ganti *private key contents* dengan isi kunci pribadi yang digunakan untuk membuat permintaan sertifikat atau sertifikat yang ditandatangani sendiri. 
+ Kunci `container_commands` tersebut menghentikan layanan httpd setelah semuanya telah dikonfigurasi sehingga layanan menggunakan file `https.conf` dan sertifikat baru.

**catatan**  
Contoh tersebut bekerja hanya di lingkungan yang menggunakan platform [Python](create-deploy-python-container.md).

**Example .ebextensions/https-instance.config**  

```
packages:
  yum:
    mod_ssl: []
    
files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule wsgi_module modules/mod_wsgi.so
      WSGIPythonHome /var/app/venv/staging-LQM1lest
      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/ /var/app/current/static/
        <Directory /var/app/current/static>
        Order allow,deny
        Allow from all
        </Directory>
        
        WSGIScriptAlias / /var/app/current/application.py
        
        <Directory /var/app/current>
        Require all granted
        </Directory>
        
        WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \
          python-path=/var/app/current \
          python-home=/var/app/venv/staging-LQM1lest \
          home=/var/app/current \
          user=webapp \
          group=webapp
        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"
```

**catatan**  
Hindari melakukan file konfigurasi yang berisi kunci pribadi Anda ke kontrol sumber. Setelah Anda menguji konfigurasi dan mengonfirmasi bahwa konfigurasi berfungsi, simpan kunci pribadi Anda di Amazon S3 dan ubah konfigurasi untuk mengunduhnya selama deployment. Untuk petunjuk, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

**Catatan untuk lingkungan Amazon Linux 2023**  
Di Amazon Linux 2023, `mod_wsgi` harus diinstal secara terpisah karena tidak tersedia di repositori paket. Untuk petunjuk penginstalan, lihat [mod\$1wsgi](https://pypi.org/project/mod-wsgi/) di PyPI.

Pada lingkungan instans tunggal, Anda juga harus mengubah grup keamanan instans untuk mengizinkan lalu lintas pada port 443. File konfigurasi berikut mengambil ID grup keamanan menggunakan CloudFormation [fungsi](ebextensions-functions.md) dan menambahkan aturan ke dalamnya.

**Example .ebextensions/ .config https-instance-single**  

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

Untuk lingkungan yang seimbang beban, Anda mengonfigurasi penyeimbang beban untuk [meneruskan lalu lintas aman melalui yang tidak tersentuh](https-tcp-passthrough.md), atau [mendekripsi](configuring-https-endtoend.md) dan mengenkripsi ulang untuk enkripsi. end-to-end