

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

# Mengonfigurasi HTTPS untuk lingkungan Elastic Beanstalk Anda
<a name="configuring-https"></a>

Topik di bagian ini menjelaskan cara mengonfigurasi HTTPS untuk lingkungan Elastic Beanstalk Anda. HTTPS adalah suatu keharusan bagi setiap aplikasi yang mentransmisikan data pengguna atau informasi login.

Jika Anda telah membeli dan mengonfigurasi [nama domain khusus](customdomains.md) untuk lingkungan Elastic Beanstalk Anda, Anda dapat menggunakan HTTPS untuk mengizinkan pengguna terhubung ke situs web Anda dengan aman.

Jika Anda tidak memiliki nama domain, Anda masih dapat menggunakan HTTPS dengan sertifikat yang ditandatangani sendiri untuk tujuan pengembangan dan pengujian. Untuk informasi selengkapnya, lihat [Sertifikat server](configuring-https.certificate.md).

**Mengkonfigurasi Penghentian HTTPS di penyeimbang beban**  
Load balancer mendistribusikan permintaan ke instans EC2 yang menjalankan aplikasi Anda. Penyeimbang beban juga menghilangkan kebutuhan untuk mengekspos instans Anda langsung ke internet. Cara termudah untuk menggunakan HTTPS dengan lingkungan multi-instance Elastic Beanstalk adalah dengan mengonfigurasi pendengar yang aman untuk penyeimbang beban. Koneksi antara klien dan penyeimbang beban tetap aman, sehingga Anda dapat mengonfigurasi penyeimbang beban untuk menghentikan HTTPS. Koneksi back end antara load balancer dan instans EC2 menggunakan HTTP, jadi tidak diperlukan konfigurasi tambahan instance. Untuk petunjuk mendetail untuk mengonfigurasi listenter aman, lihat[Mengkonfigurasi Penghentian HTTPS di penyeimbang beban](configuring-https-elb.md).

**Mengkonfigurasi Penghentian HTTPS pada instans EC2**  
Jika Anda menjalankan aplikasi Anda di lingkungan instans tunggal, atau perlu mengamankan koneksi sepenuhnya ke instans EC2 di belakang penyeimbang beban, Anda dapat mengonfigurasi server proksi yang berjalan pada instans untuk mengakhiri HTTPS. Mengonfigurasi instans Anda untuk mengakhiri koneksi HTTPS memerlukan penggunaan [file konfigurasi](ebextensions.md) untuk mengubah perangkat lunak yang berjalan pada instans, dan untuk mengubah grup keamanan agar yang memungkinkan koneksi aman. Untuk informasi selengkapnya, lihat [Mengkonfigurasi Pengakhiran HTTPS pada instance](https-singleinstance.md).

**Mengkonfigurasi HTTPS end-to-end**  
Untuk end-to-end HTTPS di lingkungan load-balanced, Anda dapat menggabungkan instance dan penghentian penyeimbang beban untuk mengenkripsi kedua koneksi. Secara default, jika Anda mengonfigurasi penyeimbang beban untuk meneruskan lalu lintas menggunakan HTTPS, penyeimbang itu akan memercayai sertifikat apa pun yang disajikan oleh intans backend. Untuk keamanan maksimum, Anda dapat melampirkan kebijakan ke penyeimbang beban yang mencegahnya terhubung ke instans yang tidak menampilkan sertifikat publik yang dipercayainya. Untuk informasi selengkapnya, lihat [Mengkonfigurasi end-to-end enkripsi dalam lingkungan Elastic Beanstalk Beanstalk yang seimbang](configuring-https-endtoend.md).

**Mengkonfigurasi HTTPS dengan TCP Passthrough**  
 Anda juga dapat mengonfigurasi penyeimbang beban untuk menyampaikan lalu lintas HTTPS tanpa mendekripsinya. Untuk informasi selengkapnya, lihat [Mengonfigurasi penyeimbang beban lingkungan Anda untuk TCP Passthrough](https-tcp-passthrough.md). 

**catatan**  
[Apakah ada ular?](https://github.com/awslabs/eb-tomcat-snakes) contoh aplikasi GitHub termasuk file konfigurasi dan instruksi untuk setiap metode konfigurasi HTTPS dengan aplikasi web Tomcat. Lihat [file readme](https://github.com/awslabs/eb-tomcat-snakes/blob/master/README.md) dan [petunjuk HTTPS](https://github.com/awslabs/eb-tomcat-snakes/blob/master/src/.ebextensions/inactive/HTTPS.md) untuk detailnya.

**Topics**
+ [

# Sertifikat server
](configuring-https.certificate.md)
+ [

# Mengkonfigurasi Penghentian HTTPS di penyeimbang beban
](configuring-https-elb.md)
+ [

# Mengkonfigurasi Pengakhiran HTTPS pada instance
](https-singleinstance.md)
+ [

# Mengkonfigurasi end-to-end enkripsi dalam lingkungan Elastic Beanstalk Beanstalk yang seimbang
](configuring-https-endtoend.md)
+ [

# Mengonfigurasi penyeimbang beban lingkungan Anda untuk TCP Passthrough
](https-tcp-passthrough.md)
+ [

# Mengonfigurasi HTTP ke pengalihan HTTPS
](configuring-https-httpredirect.md)

# Sertifikat server
<a name="configuring-https.certificate"></a>

Topik ini menjelaskan berbagai jenis sertifikat yang dapat Anda gunakan untuk mengonfigurasi HTTPS dan kapan harus menerapkannya. Subtopik di bagian ini memberikan instruksi untuk membuat sertifikat Anda sendiri dan cara mengunggahnya.

**AWS Certificate Manager (ACM)**  
ACM adalah alat pilihan untuk menyediakan, mengelola, dan menerapkan sertifikat server Anda. Anda dapat melakukannya secara terprogram atau menggunakan. AWS CLI Dengan ACM Anda dapat membuat sertifikat tepercaya untuk nama domain Anda secara gratis.

 Sertifikat ACM hanya dapat digunakan dengan penyeimbang AWS beban dan CloudFront distribusi Amazon, dan ACM hanya tersedia di Wilayah tertentu. AWS Untuk menggunakan sertifikat ACM dengan Elastic Beanstalk, lihat [Mengkonfigurasi Penghentian HTTPS di penyeimbang beban](configuring-https-elb.md). Untuk informasi selengkapnya tentang ACM, lihat [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). 

**catatan**  
 Untuk daftar wilayah di mana ACM tersedia, lihat [titik akhir ACM dan kuota](https://docs.aws.amazon.com/general/latest/gr/acm.html) di. *Referensi Umum Amazon Web Services* 

Jika ACM tidak tersedia di AWS Wilayah Anda, Anda dapat mengunggah sertifikat pihak ketiga atau yang ditandatangani sendiri dan kunci pribadi ke AWS Identity and Access Management (IAM). Anda dapat menggunakan AWS CLI untuk mengunggah sertifikat. Sertifikat yang disimpan dalam IAM dapat digunakan dengan penyeimbang beban dan distribusi. CloudFront Untuk informasi selengkapnya, lihat [Unggah sertifikat ke IAM](configuring-https-ssl-upload.md).

**Sertifikat pihak ketiga**  
Jika ACM tidak tersedia di wilayah Anda, Anda dapat membeli sertifikat terpercaya dari pihak ketiga. Sertifikat pihak ketiga dapat digunakan untuk mendekripsi lalu lintas HTTPS di penyeimbang beban, pada instans backend, atau keduanya.

**Sertifikat yang ditandatangani sendiri**  
Untuk pengembangan dan pengujian, Anda dapat [membuat dan menandatangani sertifikat](configuring-https-ssl.md) sendiri dengan alat sumber terbuka. Sertifikat yang ditandatangani sendiri gratis dan mudah dibuat, namun tidak dapat digunakan untuk dekripsi front-end di situs publik. Jika Anda mencoba untuk menggunakan sertifikat yang ditandatangani sendiri untuk koneksi HTTPS ke klien, peramban pengguna menampilkan pesan galat yang menunjukkan bahwa situs web Anda tidak aman. Namun, Anda dapat, menggunakan sertifikat yang ditandatangani sendiri untuk mengamankan koneksi backend tanpa masalah.

# Buat dan tandatangani sertifikat X509
<a name="configuring-https-ssl"></a>

Anda dapat membuat sertifikat X509 untuk aplikasi Anda dengan `OpenSSL`. OpenSSL adalah perpustakaan sumber terbuka standar yang mendukung berbagai fungsi kriptografi, termasuk pembuatan dan penandatanganan sertifikat x509. Untuk informasi selengkapnya tentang OpenSSL, kunjungi [www.openssl.org](https://www.openssl.org/).

**catatan**  
Anda hanya perlu membuat sertifikat secara lokal jika Anda ingin [menggunakan HTTPS dalam lingkungan instans tunggal](https-singleinstance.md) atau [mengenkripsi ulang pada backend](configuring-https-endtoend.md) dengan sertifikat yang ditandatangani sendiri. Jika Anda memiliki nama domain, Anda dapat membuat sertifikat AWS dan menggunakannya dengan lingkungan load-balanced secara gratis dengan menggunakan AWS Certificate Manager (ACM). Lihat [Meminta Sertifikat](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html) di *Panduan Pengguna AWS Certificate Manager * untuk petunjuk.

Jalankan `openssl version` pada baris perintah untuk melihat apakah Anda sudah memasang OpenSSL. Jika tidak, Anda dapat membangun dan menginstal kode sumber menggunakan instruksi di [ GitHub repositori publik](https://github.com/openssl/openssl), atau menggunakan manajer paket favorit Anda. [OpenSSL juga diinstal pada gambar Linux Elastic Beanstalk, jadi alternatif cepat adalah terhubung ke EC2 instance di lingkungan berjalan dengan menggunakan perintah EB CLI:](eb-cli3.md) **eb ssh**

```
~/eb$ eb ssh
[ec2-user@ip-255-55-55-255 ~]$ openssl version
OpenSSL 1.0.1k-fips 8 Jan 2015
```

Anda perlu membuat kunci pribadi RSA untuk membuat permintaan penandatanganan sertifikat (CSR). Untuk membuat kunci pribadi Anda, gunakan perintah **openssl genrsa**:

```
[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem
Generating RSA private key, 2048 bit long modulus
.................................................................................................................................+++
...............+++
e is 65537 (0x10001)
```

*privatekey.pem*  
Nama file tempat Anda ingin menyimpan kunci pribadi. Biasanya, perintah **openssl genrsa** mencetak konten kunci pribadi ke layar, tetapi perintah ini menyalurkan output ke file. Pilih nama file apa pun, dan simpan file di tempat yang aman sehingga Anda dapat mengambilnya nanti. Jika Anda kehilangan kunci pribadi, Anda tidak akan dapat menggunakan sertifikat Anda.

CSR adalah file yang Anda kirim ke otoritas sertifikat (CA) untuk mengajukan sertifikat server digital. Untuk membuat CSR, gunakan perintah **openssl req**:

```
$ openssl req -new -key privatekey.pem -out csr.pem
You are about to be asked to enter information that will be incorporated 
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
```

Masukkan informasi yang diminta dan tekan **Masukkan**. Tabel berikut menjelaskan dan menunjukkan contoh untuk setiap bidang.


****  

| Nama | Deskripsi | Contoh | 
| --- | --- | --- | 
| Nama Negara | Singkatan ISO dua huruf untuk negara Anda. | AS = Amerika Serikat | 
| Negara Bagian atau Provinsi | Nama negara bagian atau provinsi tempat organisasi Anda berada. Anda tidak dapat menyingkat nama ini. | Washington | 
| Nama Lokal | Nama kota tempat organisasi Anda berada. | Seattle | 
| Nama Organisasi | Nama lengkap legal organisasi Anda. Jangan menyingkat nama organisasi Anda. | Contoh Perusahaan | 
| Unit Organisasi | Opsional, untuk informasi organisasi tambahan. | Pemasaran | 
| Nama Umum | Nama domain yang memenuhi syarat untuk situs web Anda. Ini harus sesuai dengan nama domain yang pengguna lihat ketika mereka mengunjungi situs Anda, jika tidak, kesalahan sertifikat akan ditampilkan. | www.example.com | 
| Alamat email | Alamat email administrator situs. | someone@example.com | 

Anda dapat mengirimkan permintaan penandatanganan ke pihak ketiga untuk ditandatangani, atau menandatanganinya sendiri untuk pengembangan dan pengujian. Sertifikat yang ditandatangani sendiri juga dapat digunakan untuk HTTPS backend antara penyeimbang beban dan instance. EC2 

Untuk menandatangani sertifikat, gunakan perintah **openssl x509**. Contoh berikut menggunakan kunci pribadi dari langkah sebelumnya (*privatekey.pem*) dan permintaan penandatanganan (*csr.pem*) untuk membuat sertifikat publik bernama *public.crt* yang valid selama *365* berhari-hari.

```
$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt
Signature ok
subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/CN=www.example.com/emailAddress=someone@example.com
Getting Private key
```

Simpan kunci pribadi dan sertifikat publik untuk digunakan nanti. Anda dapat membuang permintaan penandatanganan. Selalu [simpan kunci pribadi di lokasi yang aman](https-storingprivatekeys.md) dan hindari menambahkannya ke kode sumber Anda.

Untuk menggunakan sertifikat dengan platform Windows Server, Anda harus mengubahnya ke format PFX. Gunakan perintah berikut untuk membuat sertifikat PFX dari file sertifikat pribadi dan publik:

```
$ openssl pkcs12 -export -out example.com.pfx -inkey privatekey.pem -in public.crt
Enter Export Password: password
Verifying - Enter Export Password: password
```

Setelah Anda memiliki sertifikat, Anda dapat [mengunggahnya ke IAM](configuring-https-ssl-upload.md) untuk digunakan dengan penyeimbang beban, atau [mengonfigurasi instans di lingkungan Anda untuk mengakhiri HTTPS](https-singleinstance.md).

# Unggah sertifikat ke IAM
<a name="configuring-https-ssl-upload"></a>

Untuk menggunakan sertifikat Anda dengan penyeimbang beban lingkungan Elastic Beanstalk Anda, unggah sertifikat dan kunci pribadi ke (IAM). AWS Identity and Access Management Anda dapat menggunakan sertifikat yang disimpan di IAM dengan penyeimbang beban Elastic Load Balancing dan distribusi Amazon. CloudFront 

**catatan**  
AWS Certificate Manager (ACM) adalah alat pilihan untuk menyediakan, mengelola, dan menyebarkan sertifikat server Anda. Untuk informasi selengkapnya tentang permintaan sertifikat ACM, lihat [Meminta Sertifikat](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html) di *AWS Certificate Manager Panduan Pengguna*. Untuk informasi tentang mengimpor sertifikat pihak ke tiga ke ACM, lihat [Mengimpor Sertifikat](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) di *Panduan Pengguna AWS Certificate Manager *. Gunakan IAM untuk mengunggah sertifikat hanya jika ACM tidak [tersedia di Wilayah Anda AWS](https://docs.aws.amazon.com/general/latest/gr/acm.html).

Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk mengunggah sertifikat Anda. Perintah berikut mengunggah sertifikat yang ditandatangani sendiri bernama *https-cert.crt* dengan kunci pribadi bernama: *private-key.pem*

```
$ aws iam upload-server-certificate --server-certificate-name elastic-beanstalk-x509 --certificate-body file://https-cert.crt --private-key file://private-key.pem
{
    "ServerCertificateMetadata": {
        "ServerCertificateId": "AS5YBEIONO2Q7CAIHKNGC",
        "ServerCertificateName": "elastic-beanstalk-x509",
        "Expiration": "2017-01-31T23:06:22Z",
        "Path": "/",
        "Arn": "arn:aws:iam::123456789012:server-certificate/elastic-beanstalk-x509",
        "UploadDate": "2016-02-01T23:10:34.167Z"
    }
}
```

`file://`Awalan memberitahu AWS CLI untuk memuat isi file dalam direktori saat ini. *elastic-beanstalk-x509*menentukan nama untuk memanggil sertifikat di IAM.

Jika Anda membeli sertifikat dari otoritas sertifikat dan menerima file rantai sertifikat, unggah juga dengan menyertakan opsi `--certificate-chain`:

```
$ aws iam upload-server-certificate --server-certificate-name elastic-beanstalk-x509 --certificate-chain file://certificate-chain.pem --certificate-body file://https-cert.crt --private-key file://private-key.pem
```

Buat catatan dari Amazon Resource Name (ARN) untuk sertifikat Anda. Anda akan menggunakan catatan itu saat memperbarui pengaturan konfigurasi penyeimbang beban untuk menggunakan HTTPS.

**catatan**  
Sertifikat yang diunggah ke IAM akan tetap disimpan meskipun sertifikat itu tidak lagi digunakan di penyeimbang beban lingkungan mana pun. Sertifikat ini berisi data sensitif. Saat Anda tidak lagi membutuhkan sertifikat tersebut untuk lingkungan apapun, pastikan untuk menghapusnya. Untuk detail tentang menghapus sertifikat dari IAM, lihat [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html#delete-server-certificate](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html#delete-server-certificate).

Untuk informasi selengkapnya tentang sertifikat server di IAM, lihat [Bekerja dengan Sertifikat Server](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) di *Panduan Pengguna IAM*.

# Menyimpan kunci pribadi dengan aman di Amazon S3
<a name="https-storingprivatekeys"></a>

Kunci pribadi yang Anda gunakan untuk menandatangani sertifikat publik pribadi Anda bersifat pribadi dan tidak boleh diserahkan ke kode sumber. Anda dapat menghindari menyimpan kunci pribadi dalam file konfigurasi dengan mengunggahnya ke Amazon S3, dan mengonfigurasi Elastic Beanstalk untuk mengunduh file dari Amazon S3 selama deployment aplikasi.

Contoh berikut menunjukkan bagian [Sumber Daya](environment-resources.md) dan [file](customize-containers-ec2.md#linux-files) dari [file konfigurasi](ebextensions.md) mengunduh file kunci pribadi dari bucket Amazon S3.

**Example .ebextensions/privatekey.config**  

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
  # Private key
  "/etc/pki/tls/certs/server.key":
    mode: "000400"
    owner: root
    group: root
    authentication: "S3Auth"
    source: https://elasticbeanstalk-us-west-2-123456789012.s3.us-west-2.amazonaws.com/server.key
```

Ganti nama bucket dan URL dalam contoh dengan milik Anda. Entri pertama dalam file ini menambahkan metode otentikasi yang dinamai `S3Auth` ke metadata grup Auto Scaling lingkungan. Jika Anda telah mengonfigurasi [profil instans](concepts-roles-instance.md) khusus untuk lingkungan Anda, itu akan digunakan, jika tidak nilai default `aws-elasticbeanstalk-ec2-role` akan diterapkan. Profil instans default memiliki izin untuk membaca dari bucket penyimpanan Elastic Beanstalk. Jika Anda menggunakan bucket yang berbeda, [tambahkan izin ke profil instans](iam-instanceprofile.md#iam-instanceprofile-addperms).

Entri kedua menggunakan `S3Auth` metode otentikasi untuk mengunduh kunci pribadi dari URL yang ditentukan dan menyimpannya ke `/etc/pki/tls/certs/server.key`. Kemudian server proksi dapat membaca kunci pribadi dari lokasi ini untuk [mengakhiri koneksi HTTPS pada instans](https-singleinstance.md).

Profil instans yang ditetapkan ke EC2 instance lingkungan Anda harus memiliki izin untuk membaca objek kunci dari bucket yang ditentukan. [Verifikasi bahwa profil instans memiliki izin](iam-instanceprofile.md#iam-instanceprofile-verify) untuk membaca objek di IAM, dan bahwa izin pada bucket dan objek tidak melarang profil instans.

**Melihat izin bucket**

1. Buka [Konsol Manajemen Amazon S3](https://console.aws.amazon.com/s3/home).

1. Pilih bucket.

1. Pilih **Properti** lalu pilih **Izin**.

1. Verifikasi bahwa akun Anda adalah penerima pada bucket dengan izin baca.

1. Jika kebijakan bucket dilampirkan, pilih **Kebijakan bucket** untuk melihat izin yang ditetapkan ke bucket.

# Mengkonfigurasi Penghentian HTTPS di penyeimbang beban
<a name="configuring-https-elb"></a>

Untuk memperbarui AWS Elastic Beanstalk lingkungan agar menggunakan HTTPS, Anda perlu mengonfigurasi pendengar HTTPS untuk penyeimbang beban di lingkungan Anda. Dua jenis penyeimbang beban mendukung pendengar HTTPS: Classic Load Balancer dan Application Load Balancer.

Anda dapat menggunakan konsol Elastic Beanstalk atau file konfigurasi untuk mengonfigurasi pendengar yang aman dan menetapkan sertifikat.

**catatan**  
Lingkungan instans tunggal tidak memiliki penyeimbang beban dan tidak mendukung penghentian HTTPS di penyeimbang beban.

## Mengonfigurasi pendengar yang aman menggunakan konsol Elastic Beanstalk
<a name="configuring-https-elb.console"></a>

**Untuk menetapkan sertifikat untuk penyeimbang beban lingkungan Anda**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

1. Di panel navigasi, pilih **Lingkungan**, dan kemudian pilih nama lingkungan Anda dari daftar.

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Pada kategori konfigurasi **Penyeimbang beban**, pilih **Edit**.
**catatan**  
Jika kategori konfigurasi **Penyeimbang beban** tidak memiliki tombol **Edit**, lingkungan Anda tidak memiliki [penyeimbang beban](using-features-managing-env-types.md#using-features.managing.changetype).

1. Pada halaman **Ubah penyeimbang beban**, prosedurnya bervariasi tergantung pada jenis penyeimbang beban yang terkait dengan lingkungan Anda.
   + **Classic Load Balancer**

     1. Pilih **Tambahkan pendengar**.

     1. Di kotak dialog **pendengar Classic Load Balancer**, konfigurasikan pengaturan berikut:
        + Untuk **port Pendengar**, ketik port lalu lintas masuk, biasanya `443`.
        + Untuk **protokol Pendengar**, pilih **HTTPS**.
        + Untuk **port Instans**, ketik `80`.
        + Untuk **Protokol instans**, pilih **HTTP**.
        + Untuk **Sertifikat SSL**, pilih sertifikat Anda.

     1. Pilih **Tambahkan**.
   + **Penyeimbang Beban Aplikasi**

     1. Pilih **Tambahkan pendengar**.

     1. Di kotak dialog **pendengar Application Load Balancer**, konfigurasikan pengaturan berikut:
        + Untuk **Port**, ketik port lalu lintas masuk, biasanya `443`.
        + Untuk **Protokol**, pilih **HTTPS**.
        + Untuk **Sertifikat SSL**, pilih sertifikat Anda.

     1. Pilih **Tambahkan**.
**catatan**  
Untuk Classic Load Balancer dan Application Load Balancer, jika menu drop-down tidak menampilkan sertifikat apa pun, Anda harus membuat atau mengunggah sertifikat untuk [nama domain khusus](customdomains.md) Anda di [(ACM)AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/) (lebih disukai). Atau, unggah sertifikat ke IAM dengan AWS CLI.
   + **Penyeimbang Beban Jaringan**

     1. Pilih **Tambahkan pendengar**.

     1. Di kotak dialog **pendengar Network Load Balancer**, untuk **Port**, ketik port lalu lintas masuk, biasanya `443`.

     1. Pilih **Tambahkan**.

1. Untuk menyimpan perubahan pilih **Terapkan** di bagian bawah halaman.

## Mengonfigurasi pendengar yang aman menggunakan file konfigurasi
<a name="configuring-https-elb.configurationfile"></a>

Anda dapat mengonfigurasi pendengar yang aman pada penyeimbang beban Anda dengan salah satu [file konfigurasi](ebextensions.md) berikut.

**Example .ebextensions/securelistener-qqclb.config**  
Gunakan contoh ini bila lingkungan Anda memiliki Classic Load Balancer. Contoh ini menggunakan opsi di namespace `aws:elb:listener` untuk mengonfigurasi pendengar HTTPS pada port 443 dengan sertifikat tertentu, dan untuk meneruskan lalu lintas terdekripsi ke instans di lingkungan Anda pada port 80.  

```
option_settings:
  aws:elb:listener:443:
    SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
    ListenerProtocol: HTTPS
    InstancePort: 80
```

Ganti teks yang disorot dengan ARN sertifikat Anda. Sertifikat dapat berupa sertifikat yang Anda buat atau unggah di AWS Certificate Manager (ACM) (disukai), atau yang Anda unggah ke IAM dengan sertifikat. AWS CLI

Untuk informasi selengkapnya tentang opsi konfigurasi Classic Load Balancer, lihat [Namespace konfigurasi Classic Load Balancer](environments-cfg-clb.md#environments-cfg-clb-namespace).

**Example .ebextensions/securelistener-alb.config**  
Gunakan contoh ini bila lingkungan Anda memiliki Application Load Balancer. Contoh ini menggunakan opsi di namespace `aws:elbv2:listener` untuk mengonfigurasi pendengar HTTPS pada port 443 dengan sertifikat tertentu. Pendengar merutekan lalu lintas ke proses default.  

```
option_settings:
  aws:elbv2:listener:443:
    ListenerEnabled: 'true'
    Protocol: HTTPS
    SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
```

**Example .ebextensions/securelistener-nlb.config**  
Gunakan contoh ini bila lingkungan Anda memiliki Network Load Balancer. Contoh ini menggunakan opsi di namespace `aws:elbv2:listener` untuk mengonfigurasi pendengar pada port 443. Pendengar merutekan lalu lintas ke proses default.  

```
option_settings:
  aws:elbv2:listener:443:
    ListenerEnabled: 'true'
```

## Mengonfigurasi grup keamanan Anda
<a name="configuring-https-elb.security-group"></a>

Jika Anda mengonfigurasi penyeimbang beban Anda untuk meneruskan lalu lintas ke port instans selain port 80, Anda harus menambahkan aturan untuk grup keamanan Anda yang mengizinkan lalu lintas masuk melalui port instans dari penyeimbang beban Anda. Jika Anda membuat lingkungan Anda di VPC khusus, Elastic Beanstalk menambahkan aturan ini untuk Anda.

Anda menambahkan aturan ini dengan menambahkan kunci `Resources` ke [file konfigurasi](ebextensions.md) di direktori `.ebextensions` untuk aplikasi Anda.

Contoh file konfigurasi berikut menambahkan aturan masuk ke `AWSEBSecurityGroup` grup keamanan. Ini mengizinkan lalu lintas pada port 1000 dari grup keamanan penyeimbang beban.

**Example .ebextensions/sg-ingressfromlb.config**  

```
Resources:
  sslSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 1000
      FromPort: 1000
      SourceSecurityGroupId: {"Fn::GetAtt" : ["AWSEBLoadBalancerSecurityGroup", "GroupId"]}
```

# Mengkonfigurasi Pengakhiran HTTPS pada instance
<a name="https-singleinstance"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengonfigurasi server proksi yang melewati lalu lintas ke aplikasi Anda untuk mengakhiri koneksi HTTPS. Hal ini berguna jika Anda ingin menggunakan HTTPS dengan lingkungan intans tunggal, atau jika Anda mengonfigurasi penyeimbang beban Anda untuk melewati lalu lintas tanpa mendekripsinya.

Untuk mengaktifkan HTTPS, Anda harus mengizinkan lalu lintas masuk di port 443 ke EC2 instance tempat aplikasi Elastic Beanstalk Anda berjalan. Anda melakukan ini dengan menggunakan `Resources` kunci dalam file konfigurasi untuk menambahkan aturan untuk port 443 ke aturan ingress untuk AWSEBSecurity grup keamanan Grup.

Snippet berikut menambahkan aturan masuk ke `AWSEBSecurityGroup` grup keamanan yang membuka port 443 ke semua lalu lintas untuk lingkungan instans tunggal:

**`.ebextensions/https-instance-securitygroup.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
```

Dalam lingkungan yang seimbang dengan beban di [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) default, Anda dapat mengubah kebijakan ini hanya untuk menerima lalu lintas dari penyeimbang beban. Lihat [Mengkonfigurasi end-to-end enkripsi dalam lingkungan Elastic Beanstalk Beanstalk yang seimbang](configuring-https-endtoend.md) untuk contoh.

**Topics**
+ [

# Mengakhiri HTTPS di instans EC2 yang menjalankan Docker
](https-singleinstance-docker.md)
+ [

# Mengakhiri HTTPS pada EC2 instance yang menjalankan Go
](https-singleinstance-go.md)
+ [

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Java SE
](https-singleinstance-java.md)
+ [

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Node.js
](https-singleinstance-nodejs.md)
+ [

# Mengakhiri HTTPS pada EC2 instance yang menjalankan PHP
](https-singleinstance-php.md)
+ [

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Python
](https-singleinstance-python.md)
+ [

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Ruby
](https-singleinstance-ruby.md)
+ [

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Tomcat
](https-singleinstance-tomcat.md)
+ [

# Mengakhiri HTTPS pada instans Amazon EC2 yang menjalankan .NET Core di Linux
](https-singleinstance-dotnet-linux.md)
+ [

# Mengakhiri HTTPS di EC2 instans Amazon yang menjalankan .NET
](SSLNET.SingleInstance.md)

# Mengakhiri HTTPS di instans EC2 yang menjalankan Docker
<a name="https-singleinstance-docker"></a>

Untuk kontainer Docker, Anda menggunakan [file konfigurasi](ebextensions.md) untuk mengaktifkan HTTPS.

Tambahkan snippet berikut ke file konfigurasi 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 `files` tersebut membuat file berikut pada instans:  
`/etc/nginx/conf.d/https.conf`  
Konfigurasikan server nginx. File ini dimuat ketika layanan nginx dimulai.  
`/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. 

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

```
files:
  /etc/nginx/conf.d/https.conf:
    mode: "000644"
    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_prefer_server_ciphers on;
        
        location / {
          proxy_pass http://docker;
          proxy_http_version 1.1;
          
          proxy_set_header Connection "";
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto https;
        }
      }
      
  /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-----
```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

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

# Mengakhiri HTTPS pada EC2 instance yang menjalankan Go
<a name="https-singleinstance-go"></a>

Untuk tipe kontainer Go, Anda mengaktifkan HTTPS dengan [file konfigurasi](ebextensions.md) dan file konfigurasi nginx yang mengonfigurasi server nginx untuk menggunakan HTTPS.

Tambahkan snippet berikut ke file konfigurasi Anda, menggantikan sertifikat dan placeholder kunci pribadi seperti yang diperintahkan, dan simpan snippet di direktori `.ebextensions` paket sumber Anda. File konfigurasi melakukan tugas berikut:
+ Kunci `Resources` tersebut mengaktifkan port 443 pada grup keamanan yang digunakan oleh instans lingkungan Anda. 
+ Kunci `files` tersebut membuat file berikut pada instans:  
`/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. 

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

```
files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |      
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

Tempatkan hal berikut dalam sebuah file dengan ekstensi `.conf` di `.ebextensions/nginx/conf.d/` direktori paket sumber Anda (misalnya, `.ebextensions/nginx/conf.d/https.conf`). Ganti *app\$1port* dengan nomor port yang didengarkan aplikasi Anda. Contoh ini mengonfigurasi server nginx untuk mendengarkan pada port 443 menggunakan SSL. Untuk informasi selengkapnya tentang file konfigurasi ini pada platform Go, lihat [Mengonfigurasi server proksi](go-nginx.md).

**Example . ebextensions/nginx/conf.d/https.conf**  

```
# 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_prefer_server_ciphers   on;
    
    location / {
        proxy_pass  http://localhost:app_port;
        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;
        proxy_set_header        X-Forwarded-Proto https;
    }
}
```

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

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Java SE
<a name="https-singleinstance-java"></a>

Untuk jenis kontainer Java SE, Anda mengaktifkan HTTPS dengan [file konfigurasi](ebextensions.md) .ebextensions, dan file konfigurasi nginx yang mengonfigurasi server nginx untuk menggunakan HTTPS.

Semua AL2023/AL2 platform mendukung fitur konfigurasi proxy yang seragam. Untuk informasi selengkapnya tentang mengonfigurasi server proxy pada versi platform yang menjalankan AL2023/AL2, lihat[Konfigurasi proksi terbalik](platforms-linux-extend.proxy.md). 

Tambahkan snippet berikut ke file konfigurasi Anda, menggantikan sertifikat dan placeholder kunci pribadi seperti yang diperintahkan, dan simpan snippet dalam direktori `.ebextensions`. File konfigurasi melakukan tugas berikut:
+ Kunci `files` tersebut membuat file berikut pada instans:  
`/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. 

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

```
files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

Tempatkan hal berikut dalam sebuah file dengan ekstensi `.conf` di `.ebextensions/nginx/conf.d/` direktori paket sumber Anda (misalnya, `.ebextensions/nginx/conf.d/https.conf`). Ganti *app\$1port* dengan nomor port yang didengarkan aplikasi Anda. Contoh ini mengonfigurasi server nginx untuk mendengarkan pada port 443 menggunakan SSL. Untuk informasi selengkapnya tentang file konfigurasi ini pada platform Java SE, lihat [Mengonfigurasi server proksi](java-se-nginx.md).

**Example . ebextensions/nginx/conf.d/https.conf**  

```
# 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_prefer_server_ciphers   on;
    
    location / {
        proxy_pass  http://localhost:app_port;
        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;
        proxy_set_header        X-Forwarded-Proto https;
    }
}
```

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

# Mengakhiri HTTPS pada instans EC2 yang menjalankan Node.js
<a name="https-singleinstance-nodejs"></a>

Contoh file konfigurasi berikut [memperluas konfigurasi nginx default](nodejs-platform-proxy.md) untuk mendengarkan pada port 443 dan SSL/TLS mengakhiri koneksi dengan sertifikat publik dan kunci pribadi.

Jika Anda mengonfigurasi lingkungan Anda untuk [pelaporan kondisi yang ditingkatkan](health-enhanced.md), Anda perlu mengonfigurasi nginx untuk menghasilkan log akses. Untuk melakukannya, batalkan komentar blok baris di bawah komentar yang berbunyi `# For enhanced health...` dengan menghapus karakter utama`#`.

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

```
files:
  /etc/nginx/conf.d/https.conf:
    mode: "000644"
    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_prefer_server_ciphers   on;

          # For enhanced health reporting support, uncomment this block:

          #if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
          #    set $year $1;
          #    set $month $2;
          #    set $day $3;
          #    set $hour $4;
          #}
          #access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
          #access_log  /var/log/nginx/access.log  main;
          
          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;
              proxy_set_header        X-Forwarded-Proto https;
          }
      }
      
  /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-----
```

Kunci `files` tersebut membuat file berikut pada instans:

`/etc/nginx/conf.d/https.conf`  
Konfigurasikan server nginx. File ini dimuat ketika layanan nginx dimulai.

`/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. 

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

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

# Mengakhiri HTTPS pada EC2 instance yang menjalankan PHP
<a name="https-singleinstance-php"></a>

Untuk jenis kontainer PHP, Anda menggunakan [file konfigurasi](ebextensions.md) untuk mengaktifkan Apache HTTP Server untuk menggunakan HTTPS.

Tambahkan snippet berikut ke file konfigurasi 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 `mod24_ssl`.
+ Kunci `files` tersebut membuat file berikut pada instans:  
`/etc/httpd/conf.d/ssl.conf`  
Mengonfigurasi server Apache. File ini memuat ketika layanan Apache dimulai.  
`/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.

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

```
packages:
  yum:
    mod24_ssl : []

files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule ssl_module modules/mod_ssl.so
      Listen 443
      <VirtualHost *:443>
        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        SSLEngine             on
        SSLCertificateFile    "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLProtocol           All -SSLv2 -SSLv3
        SSLHonorCipherOrder   On
        SSLSessionTickets     Off
        
        Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff
        
        ProxyPass / http://localhost:80/ retry=0
        ProxyPassReverse / http://localhost:80/
        ProxyPreserveHost on
        RequestHeader set X-Forwarded-Proto "https" early
        
      </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-----
```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

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

# 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

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

Untuk jenis kontainer Ruby, cara Anda mengaktifkan HTTPS tergantung pada jenis server aplikasi yang digunakan.

**Topics**
+ [

## Konfigurasikan HTTPS untuk Ruby dengan Puma
](#Puma)
+ [

## Konfigurasikan HTTPS untuk Ruby dengan Passenger
](#Passenger)

## Konfigurasikan HTTPS untuk Ruby dengan Puma
<a name="Puma"></a>

Untuk jenis kontainer Ruby yang menggunakan Puma sebagai server aplikasi, Anda menggunakan [file konfigurasi](ebextensions.md) untuk mengaktifkan HTTPS.

Tambahkan snippet berikut ke file konfigurasi 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 `files` tersebut membuat file berikut pada instans:  
`/etc/nginx/conf.d/https.conf`  
Konfigurasikan server nginx. File ini dimuat ketika layanan nginx dimulai.  
`/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. 

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

```
files:
  /etc/nginx/conf.d/https.conf:
    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_prefer_server_ciphers   on;
          
          location / {
              proxy_pass  http://my_app;
              proxy_set_header        Host            $host;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto https;
          }

          location /assets {
            alias /var/app/current/public/assets;
            gzip_static on;
            gzip on;
            expires max;
            add_header Cache-Control public;
          }

          location /public {
            alias /var/app/current/public;
            gzip_static on;
            gzip on;
            expires max;
            add_header Cache-Control public;
          }
      }

  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |      
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

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

## Konfigurasikan HTTPS untuk Ruby dengan Passenger
<a name="Passenger"></a>

Untuk jenis kontainer Ruby yang menggunakan Passenger sebagai server aplikasi, Anda menggunakan file konfigurasi dan file JSON untuk mengaktifkan HTTPS.

**Untuk mengonfigurasi HTTPS untuk Ruby dengan Passenger**

1. Tambahkan snippet berikut ke file konfigurasi 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 `files` tersebut membuat file berikut pada instans:  
`/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.   
**Example Snippet .ebextensions yang mengonfigurasi HTTPS untuk Ruby dengan Passenger**  

   ```
   files:
     /etc/pki/tls/certs/server.crt:
       content: |
         -----BEGIN CERTIFICATE-----
         certificate file contents
         -----END CERTIFICATE-----
         
     /etc/pki/tls/certs/server.key:
       content: |      
         -----BEGIN RSA PRIVATE KEY-----
         private key contents # See note below.
         -----END RSA PRIVATE KEY-----
   ```
**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

1. Buat file teks dan tambahkan JSON berikut ke file tersebut. Simpan file dalam direktori akar paket sumber Anda dengan nama `passenger-standalone.json`. File JSON ini mengonfigurasi Passenger untuk menggunakan HTTPS.
**penting**  
File JSON ini tidak boleh berisi tanda urutan byte (BOM). Jika JSON berisi tanda urutan byte, perpustakaan Passenger JSON tidak akan membaca file dengan benar dan layanan Passenger tidak akan dimulai.  
**Example passenger-standalone.json**  

   ```
   {
     "ssl" : true,
     "ssl_port" : 443,
     "ssl_certificate" : "/etc/pki/tls/certs/server.crt",
     "ssl_certificate_key" : "/etc/pki/tls/certs/server.key"
   }
   ```

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

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

Untuk jenis kontainer Tomcat, Anda menggunakan [file konfigurasi](ebextensions.md) untuk mengaktifkan Apache HTTP Server agar menggunakan HTTPS ketika bertindak sebagai proksi terbalik untuk Tomcat.

Tambahkan snippet berikut ke file konfigurasi 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 `files` tersebut membuat file berikut pada instans:  
`/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.  
`/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.   
`/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh`  
Membuat skrip kait pasca-deployment untuk memulai kembali layanan httpd.

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

```
files:
  /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-----

  /opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh:
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      sudo service httpd restart
```

Anda juga harus mengonfigurasi server proksi lingkungan Anda untuk mendengarkan port 443. Konfigurasi Apache 2.4 berikut menambahkan pendengar pada port 443. Untuk mempelajari informasi lebih lanjut, lihat [Mengonfigurasi server proksi](java-tomcat-proxy.md).

**Example . ebextensions/httpd/conf.d/ssl.conf**  

```
Listen 443
<VirtualHost *:443> 
  ServerName server-name
  SSLEngine on 
  SSLCertificateFile "/etc/pki/tls/certs/server.crt" 
  SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" 

  <Proxy *> 
    Require all granted 
  </Proxy> 
  ProxyPass / http://localhost:8080/ retry=0 
  ProxyPassReverse / http://localhost:8080/ 
  ProxyPreserveHost on 

  ErrorLog /var/log/httpd/elasticbeanstalk-ssl-error_log 

</VirtualHost>
```

Vendor sertifikat Anda mungkin menyertakan sertifikat perantara yang dapat Anda instal untuk kompatibilitas yang lebih baik dengan klien seluler. Konfigurasikan Apache dengan paket otoritas sertifikat menengah (CA) dengan menambahkan hal berikut ke file konfigurasi SSL Anda (lihat [Memperluas dan mengganti konfigurasi Apache default - Amazon Linux AMI () AL1](java-tomcat-proxy.md#java-tomcat-proxy-apache) untuk lokasi):
+ Pada konten file `ssl.conf`, tentukan file rantai:

  ```
  SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
  SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
  SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
  ```
+ Tambahkan entri baru ke kunci `files` dengan konten sertifikat menengah:

  ```
  files:
    /etc/pki/tls/certs/gd_bundle.crt:
      mode: "000400"
      owner: root
      group: root
      content: |
        -----BEGIN CERTIFICATE-----
        First intermediate certificate
        -----END CERTIFICATE-----
        -----BEGIN CERTIFICATE-----
        Second intermediate certificate
        -----END CERTIFICATE-----
  ```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

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

# Mengakhiri HTTPS pada instans Amazon EC2 yang menjalankan .NET Core di Linux
<a name="https-singleinstance-dotnet-linux"></a>

Untuk jenis kontainer .NET Core pada Linux, Anda mengaktifkan HTTPS dengan [file konfigurasi](ebextensions.md) `.ebextensions`, dan file konfigurasi nginx yang mengonfigurasi server nginx untuk menggunakan HTTPS.

Tambahkan snippet berikut ke file konfigurasi Anda, menggantikan sertifikat dan placeholder kunci pribadi seperti yang diperintahkan, dan simpan snippet dalam direktori `.ebextensions`. File konfigurasi melakukan tugas berikut:
+ Kunci `files` tersebut membuat file berikut pada instans:  
`/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. 

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

```
files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |      
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----
```

**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 instruksi, lihat [Menyimpan kunci pribadi dengan aman di Amazon S3](https-storingprivatekeys.md).

Tempatkan hal berikut dalam sebuah file dengan ekstensi `.conf` di `.platform/nginx/conf.d/` direktori paket sumber Anda (misalnya, `.platform/nginx/conf.d/https.conf`). Ganti *app\$1port* dengan nomor port yang didengarkan aplikasi Anda. Contoh ini mengonfigurasi server nginx untuk mendengarkan pada port 443 menggunakan SSL. Untuk informasi selengkapnya tentang file konfigurasi ini pada .NET Core di platform Linux, lihat [Mengonfigurasi server proksi](dotnet-linux-platform-nginx.md).

**Example . platform/nginx/conf.d/https.conf**  

```
# HTTPS server

server {
    listen       443 ssl;
    server_name  localhost;
    
    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_prefer_server_ciphers   on;
    
    location / {
        proxy_pass  http://localhost:app_port;
        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;
        proxy_set_header        X-Forwarded-Proto https;
    }
}
```

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

# Mengakhiri HTTPS di EC2 instans Amazon yang menjalankan .NET
<a name="SSLNET.SingleInstance"></a>

[File konfigurasi](ebextensions.md) berikut membuat dan menjalankan PowerShell skrip Windows yang melakukan tugas-tugas berikut:
+ Memeriksa sertifikat HTTPS yang ada yang mengikat ke port 443.
+ Mendapat [sertifikat PFX](configuring-https-ssl.md) dari bucket Amazon S3.
**catatan**  
Tambahkan `AmazonS3ReadOnlyAccess` kebijakan `aws-elasticbeanstalk-ec2-role` untuk mengakses sertifikat SSL di bucket Amazon S3.
+ Mendapat kata sandi dari AWS Secrets Manager.
**catatan**  
Tambahkan pernyataan `aws-elasticbeanstalk-ec2-role` yang memungkinkan `secretsmanager:GetSecretValue` tindakan untuk rahasia yang berisi kata sandi sertifikat
+ Menginstal sertifikat.
+ Mengikat sertifikat ke port 443.
**catatan**  
Untuk menghapus titik akhir HTTP (port 80), masukkan perintah `Remove-WebBinding` di bawah bagian **Hapus pengikatan HTTP** pada contoh.

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

```
files:
  "C:\\certs\\install-cert.ps1":
    content: |
      import-module webadministration
      ## Settings - replace the following values with your own
      $bucket = "amzn-s3-demo-bucket"  ## S3 bucket name
      $certkey = "example.com.pfx"    ## S3 object key for your PFX certificate
      $secretname = "example_secret"  ## AWS Secrets Manager name for a secret that contains the certificate's password
      ##

      # Set variables
      $certfile = "C:\cert.pfx"
      $pwd = Get-SECSecretValue -SecretId $secretname | select -expand SecretString

      # Clean up 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
      
      ## Remove the HTTP binding
      ## (optional) 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
```

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

# Mengkonfigurasi end-to-end enkripsi dalam lingkungan Elastic Beanstalk Beanstalk yang seimbang
<a name="configuring-https-endtoend"></a>

Mengakhiri koneksi yang aman pada penyeimbang beban dan menggunakan HTTP pada backend mungkin cukup untuk aplikasi Anda. Lalu lintas jaringan antara sumber daya AWS tidak dapat didengarkan oleh instans yang bukan bagian dari koneksi, meskipun mereka berjalan di bawah akun yang sama.

Namun, jika Anda mengembangkan aplikasi yang harus mematuhi peraturan eksternal yang ketat, Anda mungkin diminta untuk mengamankan semua koneksi jaringan. Anda bisa menggunakan konsol Elastic Beanstalk atau [file konfigurasi](ebextensions.md) untuk membuat penyeimbang beban lingkungan Elastic Beanstalk Anda terhubung ke instans backend dengan aman untuk memenuhi persyaratan ini. Prosedur berikut berfokus pada file konfigurasi.

Pertama, [tambahkan pendengar yang aman ke penyeimbang beban Anda](configuring-https-elb.md), jika Anda belum melakukannya.

Anda juga harus mengonfigurasi instans di lingkungan Anda untuk mendengarkan port yang aman dan mengakhiri koneksi HTTPS. Konfigurasi bervariasi per platform. Lihat [Mengkonfigurasi Pengakhiran HTTPS pada instance](https-singleinstance.md) untuk instruksi. Anda dapat menggunakan [sertifikat yang ditandatangani sendiri](configuring-https-ssl.md) untuk EC2 instans tanpa masalah.

Selanjutnya, konfigurasikan pendengar untuk meneruskan lalu lintas menggunakan HTTPS pada port yang aman yang digunakan oleh aplikasi Anda. Gunakan salah satu file konfigurasi berikut, berdasarkan jenis penyeimbang beban yang digunakan oleh lingkungan Anda.

**`.ebextensions/https-reencrypt-clb.config`**

Gunakan file konfigurasi ini dengan Classic Load Balancer. Selain mengonfigurasi penyeimbang beban, file konfigurasi juga mengubah pemeriksaan kondisi default untuk menggunakan port 443 dan HTTPS, untuk memastikan bahwa penyeimbang beban dapat terhubung dengan aman.

```
option_settings:
  aws:elb:listener:443:
    InstancePort: 443
    InstanceProtocol: HTTPS
  aws:elasticbeanstalk:application:
    Application Healthcheck URL: HTTPS:443/
```

**`.ebextensions/https-reencrypt-alb.config`**

Gunakan file konfigurasi ini dengan Application Load Balancer.

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
```

**`.ebextensions/https-reencrypt-nlb.config`**

Gunakan file konfigurasi ini dengan Network Load Balancer.

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
```

Opsi `DefaultProcess` berikut dinamai demikian karena Application Load Balancers, yang dapat memiliki pendengar nondefault pada port yang sama untuk lalu lintas ke jalur tertentu (lihat [Application Load Balancer](environments-cfg-alb.md) untuk detail). Untuk Network Load Balancer, opsi menentukan satu-satunya proses target untuk pendengar ini.

Pada contoh ini, kami menamai proses `https` karena proses ini mendengarkan lalu lintas yang aman (HTTPS). Pendengar mengirimkan lalu lintas ke proses pada port yang ditunjuk menggunakan protokol TCP, karena Network Load Balancer hanya bekerja dengan TCP. Tidak apa-apa, karena lalu lintas jaringan untuk HTTP dan HTTPS diimplementasikan di atas TCP.

**catatan**  
Konsol EB CLI dan Elastic Beanstalk menerapkan nilai yang direkomendasikan untuk pilihan sebelumnya. Anda harus menghapus pengaturan ini jika Anda ingin menggunakan file konfigurasi untuk mengonfigurasi hal yang sama. Lihat [Nilai yang disarankan](command-options.md#configuration-options-recommendedvalues) untuk rincian selengkapnya.

Dalam tugas berikutnya, Anda perlu mengubah grup keamanan penyeimbang beban untuk mengizinkan lalu lintas. Bergantung pada [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) tempat Anda meluncurkan lingkungan—VPC default atau VPC khusus—grup keamanan penyeimbang beban akan bervariasi. Pada VPC default, Elastic Load Balancing menyediakan grup keamanan default yang dapat digunakan semua penyeimbang beban. Pada Amazon VPC yang Anda buat, Elastic Beanstalk membuat grup keamanan untuk digunakan penyeimbang beban.

Untuk mendukung kedua skenario, Anda dapat membuat grup keamanan dan memerintahkan Elastic Beanstalk untuk menggunakannya. File konfigurasi berikut membuat grup keamanan dan melampirkannya ke penyeimbang beban.

**`.ebextensions/https-lbsecuritygroup.config`**

```
option_settings:
  # Use the custom security group for the load balancer
  aws:elb:loadbalancer:
    SecurityGroups: '`{ "Ref" : "loadbalancersg" }`'
    ManagedSecurityGroup: '`{ "Ref" : "loadbalancersg" }`'

Resources:
  loadbalancersg:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: load balancer security group
      VpcId: vpc-########
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 443
          ToPort: 443
          CidrIp: 0.0.0.0/0
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
      SecurityGroupEgress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
```

Ganti teks yang disorot dengan ID VPC default atau khusus. Contoh sebelumnya mencakup masuk dan keluar melalui port 80 untuk mengizinkan koneksi HTTP. Anda dapat menghapus properti tersebut jika Anda hanya ingin mengizinkan koneksi aman.

Terakhir, tambahkan aturan masuk dan keluar yang mengizinkan komunikasi melalui port 443 antara grup keamanan penyeimbang beban dan grup keamanan instans.

**`.ebextensions/https-backendsecurity.config`**

```
Resources:
  # Add 443-inbound to instance security group (AWSEBSecurityGroup)
  httpsFromLoadBalancerSG: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      SourceSecurityGroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]}
  # Add 443-outbound to load balancer security group (loadbalancersg)
  httpsToBackendInstances: 
    Type: AWS::EC2::SecurityGroupEgress
    Properties:
      GroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      DestinationSecurityGroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
```

Melakukan hal ini secara terpisah dari pembuatan grup keamanan memungkinkan Anda untuk membatasi grup keamanan sumber dan tujuan tanpa membuat ketergantungan melingkar.

Setelah Anda menyelesaikan semua tugas sebelumnya, penyeimbang beban terhubung ke instans backend Anda dengan aman menggunakan HTTPS. Penyeimbang beban tidak peduli jika sertifikat instans Anda ditandatangani sendiri atau dikeluarkan oleh otoritas sertifikat terpercaya, dan akan menerima sertifikat apa pun yang diberikan padanya.

Anda dapat mengubah perilaku ini dengan menambahkan kebijakan untuk penyeimbang beban yang memerintahkannya untuk hanya mempercayai sertifikat tertentu. File konfigurasi berikut membuat dua kebijakan. Salah satu kebijakan menentukan sertifikat publik, dan yang lain memerintahkan penyeimbang beban untuk hanya percaya sertifikat itu untuk koneksi ke instans port 443.

**`.ebextensions/https-backendauth.config`**

```
option_settings:
  # Backend Encryption Policy
  aws:elb:policies:backendencryption:
    PublicKeyPolicyNames: backendkey
    InstancePorts:  443
  # Public Key Policy
  aws:elb:policies:backendkey:
    PublicKey: |
      -----BEGIN CERTIFICATE-----
      ################################################################
      ################################################################
      ################################################################
      ################################################################
      ################################################
      -----END CERTIFICATE-----
```

Ganti teks yang disorot dengan konten sertifikat publik EC2 instans Anda.

# Mengonfigurasi penyeimbang beban lingkungan Anda untuk TCP Passthrough
<a name="https-tcp-passthrough"></a>

Jika Anda tidak ingin penyeimbang beban di AWS Elastic Beanstalk lingkungan Anda mendekripsi lalu lintas HTTPS, Anda dapat mengonfigurasi pendengar aman untuk menyampaikan permintaan ke instance backend apa adanya.

**penting**  
Mengkonfigurasi penyeimbang beban untuk menyampaikan lalu lintas HTTPS tanpa mendekripsi itu menghadirkan kerugian. Penyeimbang beban tidak dapat melihat permintaan terenkripsi sehingga tidak dapat mengoptimalkan metrik routing atau respons laporan.

Pertama, [konfigurasikan EC2 instance lingkungan Anda untuk menghentikan HTTPS.](https-singleinstance.md) Uji konfigurasi pada lingkungan instans tunggal untuk memastikan semuanya berfungsi sebelum menambahkan penyeimbang beban ke dalam campuran.

Tambahkan [file konfigurasi](ebextensions.md) ke proyek Anda untuk mengonfigurasi pendengar pada port 443 yang melewati paket TCP sebagaimana adanya ke port 443 pada instans backend:

**`.ebextensions/https-lb-passthrough.config`**

```
option_settings:
  aws:elb:listener:443:
    ListenerProtocol: TCP
    InstancePort: 443
    InstanceProtocol: TCP
```

Pada [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) default, Anda juga perlu menambahkan aturan ke grup keamanan instans untuk mengizinkan lalu lintas masuk pada 443 dari penyeimbang beban:

**`.ebextensions/https-instance-securitygroup.config`**

```
Resources:
  443inboundfromloadbalancer:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer", "SourceSecurityGroup.GroupName"] }
```

Pada VPC khusus, Elastic Beanstalk memperbarui konfigurasi grup keamanan untuk Anda.

# Mengonfigurasi HTTP ke pengalihan HTTPS
<a name="configuring-https-httpredirect"></a>

Topik ini menjelaskan cara menangani lalu lintas HTTP ke aplikasi Anda jika pengguna akhir masih memulainya. Anda melakukan ini dengan mengonfigurasi *pengalihan HTTP ke HTTPS*, kadang-kadang disebut sebagai *memaksa HTTPS*.

Untuk mengonfigurasi pengalihan, Anda mengkonfigurasi lingkungan Anda dulu untuk menangani lalu lintas HTTPS. Kemudian Anda mengalihkan lalu lintas HTTP ke HTTPS. Kedua langkah ini dibahas dalam subbagian berikut. 

## Konfigurasikan lingkungan Anda untuk menangani lalu lintas HTTPS
<a name="configuring-https-httpredirect.https"></a>

Bergantung pada konfigurasi penyeimbang beban lingkungan Anda, lakukan salah satu hal berikut:
+ **Lingkungan yang seimbang dengan beban** — [Konfigurasikan penyeimbang beban Anda untuk mengakhiri HTTPS](configuring-https-elb.md).
+ **Lingkungan instans tunggal** — [Konfigurasikan aplikasi Anda untuk mengakhiri koneksi HTTPS pada instans](https-singleinstance.md). Konfigurasi ini tergantung pada platform lingkungan Anda.

## Alihkan lalu lintas HTTP ke HTTPS
<a name="configuring-https-httpredirect.redirect"></a>

Untuk mengarahkan lalu lintas HTTP ke HTTPS untuk aplikasi Anda, Anda dapat mengonfigurasi server web pada instance lingkungan Anda atau Anda dapat mengonfigurasi Application Load Balancer lingkungan.

**Konfigurasikan server web instance**  
Metode ini bekerja pada lingkungan server web apa pun. Konfigurasikan server web di EC2 instans Amazon Anda untuk merespons lalu lintas HTTP dengan status respons pengalihan HTTP.

Konfigurasi ini tergantung pada platform lingkungan Anda. Temukan folder untuk platform Anda di [https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files/aws-provided/security-configuration/https-redirect](https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files/aws-provided/security-configuration/https-redirect)koleksi aktif GitHub, dan gunakan contoh file konfigurasi di folder itu.

Jika lingkungan Anda menggunakan [pemeriksaan kondisi Elastic Load Balancing](using-features.healthstatus.md#using-features.healthstatus.understanding), penyeimbang beban mengharapkan instans yang sehat untuk merespon pesan pemeriksaan kondisi HTTP dengan respon HTTP 200 (OK). Oleh karena itu, server web Anda tidak boleh mengalihkan pesan ini ke HTTPS. Contoh file konfigurasi di [https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files/aws-provided/security-configuration/https-redirect](https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files/aws-provided/security-configuration/https-redirect) menangani persyaratan ini dengan benar.

**Konfigurasikan penyeimbang beban**  
Metode ini berfungsi jika Anda memiliki lingkungan load-balanced yang menggunakan [Application](environments-cfg-alb.md) Load Balancer. Application Load Balancer dapat mengirim respons pengalihan saat lalu lintas HTTP masuk. Dalam hal ini, Anda tidak perlu mengonfigurasi pengalihan instans lingkungan Anda.

Kami memiliki dua contoh file konfigurasi GitHub yang menunjukkan cara mengkonfigurasi Application Load Balancer untuk pengalihan.
+ File konfigurasi [https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/alb-http-to-https-redirection-full.config](https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/alb-http-to-https-redirection-full.config) tersebut membuat pendengar HTTPS pada port 443, dan memodifikasi pendengar port 80 default untuk mengalihkan lalu lintas HTTP masuk ke HTTPS.
+ File [https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/alb-http-to-https-redirection.config](https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/alb-http-to-https-redirection.config)konfigurasi mengharapkan 443 listener didefinisikan. Untuk mendefinisikannya, Anda dapat menggunakan ruang nama konfigurasi Elastic Beanstalk standar, atau konsol Elastic Beanstalk. Kemudian file konfigurasi menangani modifikasi port 80 pendengar untuk pengalihan.