

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

# 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.