Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Host virtual di Edge menentukan domain dan port tempat proxy API diekspos, dan, dengan ekstensi, URL yang digunakan aplikasi untuk mengakses proxy API.
Host virtual juga menentukan apakah proxy API diakses menggunakan protokol HTTP, atau menggunakan protokol HTTPS terenkripsi yang menggunakan TLS. Saat mengonfigurasi host virtual untuk menggunakan HTTPS dan TLS, Anda membuat host virtual di Edge dan mengonfigurasi host virtual untuk menggunakan keystore dan truststore.
Pelajari lebih lanjut:
- Tentang TLS/SSL
- Menggunakan TLS dengan Edge
- Tentang host virtual
- Mengonfigurasi host virtual untuk Private Cloud
- Referensi properti host virtual
- Keystore dan Truststore
Yang Anda butuhkan untuk membuat host virtual
Sebelum membuat host virtual, Anda harus memiliki informasi berikut:
- Nama domain yang menghadap publik dari host virtual. Misalnya, Anda harus mengetahui apakah
nama yang menghadap publik adalah
api.myCompany.com,myapi.myCompany.com, dll. Informasi tersebut digunakan saat Anda membuat host virtual dan juga saat Anda membuat data DNS untuk host virtual. -
Untuk TLS satu arah, Anda perlu membuat keystore yang berisi
berikut ini:
- Sertifikat TLS - baik sertifikat yang ditandatangani oleh otoritas sertifikat (CA), atau rantai sertifikat yang sertifikat terakhirnya ditandatangani oleh CA.
- Kunci pribadi - Edge mendukung ukuran kunci hingga 2048 bit. Frasa sandi bersifat opsional.
- Untuk TLS dua arah, Anda memerlukan keystore dan truststore untuk menyimpan sertifikat klien dan, secara opsional, rantai CA sertifikat. Anda memerlukan truststore meskipun sertifikat ditandatangani oleh CA.
Lihat Keystore dan Truststore untuk mengetahui informasi selengkapnya tentang cara membuat keystore dan truststore.
Konfigurasi host virtual untuk TLS
Untuk membuat host virtual, buat objek XML yang menentukan host virtual.
Objek XML berikut menggunakan elemen <SSLInfo> untuk menentukan host virtual
untuk konfigurasi TLS satu arah melalui HTTPS:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<OCSPStapling>off</OCSPStapling>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>Dalam contoh ini, elemen <Enabled> disetel ke benar (true) untuk
mengaktifkan TLS satu arah, dan elemen <KeyStore> serta <KeyAlias> menentukan keystore
dan kunci yang digunakan oleh koneksi TLS.
Untuk mengaktifkan TLS dua arah, tetapkan elemen <ClientAuthEnabled> ke
true, dan tentukan truststore
menggunakan elemen <TrustStore>. Truststore menyimpan sertifikat klien dan, secara opsional, rantai CA sertifikat.
Memutuskan cara menentukan nama keystore dan truststore di host virtual
Dalam contoh host virtual di atas, Anda menentukan keystore menggunakan referensi. Referensi adalah variabel yang berisi nama keystore, bukan menentukan nama keystore secara langsung.
Keuntungan menggunakan referensi adalah Anda dapat mengubah nilai referensi untuk mengubah keystore yang digunakan oleh host virtual, biasanya karena sertifikat di keystore saat ini akan segera berakhir. Mengubah nilai referensi tidak mengharuskan Anda memulai ulang Edge Router.
Atau, Anda dapat menggunakan nama keystore literal di host virtual. Namun, jika Anda pernah memodifikasi host virtual untuk mengubah nama keystore, Anda harus memulai ulang Edge Router.
Batasan dalam menggunakan referensi ke keystore dan truststore
Anda harus mempertimbangkan batasan berikut saat menggunakan referensi ke keystore dan truststore:
- Anda hanya dapat menggunakan referensi keystore dan truststore di host virtual jika Anda mendukung SNI dan menghentikan SSL di Router Apigee.
- Jika Anda memiliki load balancer di depan Router Apigee, dan Anda menghentikan TLS di load balancer, Anda tidak dapat menggunakan referensi keystore dan truststore di host virtual.
Mengubah host virtual yang ada untuk menggunakan referensi ke keystore dan truststore
Apigee sangat merekomendasikan agar host virtual menggunakan referensi ke keystore dan truststore. Referensi memungkinkan Anda mengubah keystore dan truststore yang digunakan oleh host virtual tanpa harus memulai ulang Edge Router.
Jika host virtual Anda saat ini dikonfigurasi untuk menggunakan nama literal keystore atau truststore, Anda dapat mengonversinya untuk menggunakan referensi. Untuk melakukannya, perbarui host virtual untuk menggunakan referensi, lalu mulai ulang Edge Router.
Menetapkan cipher dan protokol TLS untuk Edge 4.15.07 dan yang lebih lama
Jika Anda menggunakan Edge versi 4.15.07 dan yang lebih lama, Anda dapat menyetel protokol TLS dan cipher yang digunakan oleh host virtual menggunakan tag turunan <Ciphers> dan <Protocols> dari tag <SSLInfo>. Tag ini dijelaskan dalam tabel di bawah.
Contoh:
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>myTestKeystore</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>myTestKeystore</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<Ciphers>
<Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
<Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
</Ciphers>
<Protocols>
<Protocol>TLSv1.2</Protocol>
</Protocols>
</SSLInfo>
</SSLInfo>Tag <Cipher> menggunakan
nama cipher Java dan JSSE. Misalnya, untuk Java 8, lihat
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
Menentukan cipher dan protokol TLS untuk Edge 4.16.01 hingga 4.16.09
Di Edge 4.16.01 hingga 4.16.09, Anda menetapkan sandi dan protokol default untuk host virtual secara global di Router. Setelan default ini kemudian berlaku untuk semua host virtual.
Gunakan token untuk menentukan protokol dan cipher default:
- Untuk menentukan protokol default, gunakan token
conf_load_balancing_load.balancing.driver.server.ssl.protocols - Untuk menentukan sandi default untuk Router, gunakan token
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
Nilai default token conf_load_balancing_load.balancing.driver.server.ssl.protocols adalah:
conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
Setelan ini menentukan bahwa Router mendukung TLS versi 1.0, 1.1, dan 1.2. Tentukan daftar nilai yang dipisahkan spasi ke token.
Nilai default token conf_load_balancing_load.balancing.driver.server.ssl.ciphers
adalah:
conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES
Setelan ini menentukan:
- Diperlukan panjang kunci 128 bit atau lebih (
HIGH). - Mengecualikan sandi tanpa autentikasi (
!aNULL) - Mengecualikan cipher suite yang menggunakan MD5 (
!MD5) - Mengecualikan cipher suite menggunakan DH (termasuk DH anonim, DH sementara, dan DH tetap) DAN
triple DES (
!DH+3DES) - Mengecualikan cipher suite yang menggunakan pertukaran kunci RSA DAN triple DES (
!RSA+3DES)
Untuk mengetahui informasi tentang sintaksis dan nilai yang diizinkan oleh token ini, lihat cipher OpenSSL. Perhatikan bahwa token ini menggunakan nama cipher OpenSSL, seperti AES128-SHA256, dan bukan nama cipher Java/JSSE, seperti TLS_RSA_WITH_AES_128_CBC_SHA256.
Untuk menyetel token untuk Router:
- Edit file
/opt/apigee/customer/application/router.properties. Jika file tersebut tidak ada, buat file tersebut. - Tetapkan token
conf_load_balancing_load.balancing.driver.server.ssl.ciphers. Misalnya, untuk menentukan TLSv1.2 saja dan mengecualikan cipher suite menggunakan kunci pra-bagi, tambahkan!PSK:conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2 conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
- Pastikan file
router.propertiesdimiliki oleh apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Mulai ulang Edge Router:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Periksa nilai token:
/opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
Menetapkan parameter host virtual TLS untuk Edge versi 4.17.01 dan yang lebih baru
Jika Anda menggunakan Edge versi 4.17.01 dan yang lebih baru, Anda dapat menetapkan beberapa properti TLS untuk
host virtual individual, seperti protokol dan cipher TLS, dengan menggunakan tag turunan <Properties> dari
tag <VirtualHost>. Tag ini dijelaskan di Referensi properti host virtual.
Contoh:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<OCSPStapling>off</OCSPStapling>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
<Properties>
<Property name="proxy_read_timeout">50</Property>
<Property name="keepalive_timeout">300</Property>
<Property name="proxy_request_buffering">off</Property>
<Property name="proxy_buffering">off</Property>
<Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
<Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
</Properties>
</VirtualHost>Untuk mengetahui informasi tentang sintaksis dan nilai yang diizinkan oleh token ssl_ciphers, lihat cipher OpenSSL.
Perhatikan bahwa token ini menggunakan nama cipher OpenSSL, seperti AES128-SHA256, dan bukan
nama cipher Java/JSSE, seperti TLS_RSA_WITH_AES_128_CBC_SHA256.
Membuat host virtual yang menggunakan HTTPS
Contoh ini menentukan keystore ke host virtual menggunakan referensi. Menggunakan referensi memungkinkan Anda mengubah keystore tanpa harus memulai ulang Router.
Gunakan prosedur berikut untuk membuat host virtual:
- Buat dan konfigurasi keystore bernama myTestKeystore menggunakan prosedur yang dijelaskan di sini: Keystore dan Truststore. Pastikan keystore menggunakan nama alias myKeyAlias untuk sertifikat dan kunci pribadi.
-
Gunakan panggilan API POST berikut untuk membuat referensi bernama keystoreref ke keystore yang Anda buat di atas:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:passwordReferensi menentukan nama keystore dan jenis referensi sebagai
KeyStore.Gunakan panggilan API GET berikut untuk melihat referensi:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password Buat host virtual menggunakan API Create a Virtual Host, dengan
<ms-IP>adalah alamat IP atau nama domain node Server Pengelolaan.Pastikan untuk menentukan referensi keystore dan alias kunci yang benar:
curl -X POST -H "Content-Type:application/xml" \ http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \ -d '<VirtualHost name="newTLSTrustStore2"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>' \ -u email:password- Buat data DNS untuk host virtual yang cocok dengan alias host.
Jika Anda memiliki proxy API yang ada, tambahkan host virtual ke elemen
<HTTPConnection>di ProxyEndpoint. Host virtual ditambahkan secara otomatis ke semua proxy API baru.Lihat Memperbarui proxy API setelah membuat host virtual di Tentang host virtual.
Setelah memperbarui proxy API untuk menggunakan host virtual, dan membuat data DNS untuk alias host, Anda dapat mengakses proxy API seperti yang ditunjukkan di bawah:
https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}Contoh:
https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282
Membuat dan mengubah referensi ke keystore atau truststore
Anda dapat secara opsional mengonfigurasi host virtual untuk menggunakan referensi ke keystore atau truststore. Keuntungan menggunakan referensi adalah Anda dapat memperbarui referensi untuk menunjuk ke keystore atau truststore yang berbeda untuk memperbarui sertifikat TLS tanpa harus memulai ulang Router.
Misalnya, di bawah ini adalah host virtual yang menggunakan referensi ke keystore:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://keystoreref</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>Gunakan panggilan API POST berikut untuk membuat referensi bernama keystoreref:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
<Refers>myTestKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>'
-u email:password
Referensi menentukan nama keystore dan jenisnya.
Gunakan panggilan API GET berikut untuk melihat referensi:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Untuk mengubah referensi agar mengarah ke keystore yang berbeda di lain waktu, pastikan alias memiliki nama yang sama, gunakan panggilan PUT berikut:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
<Refers>myNewKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>'
-u email:password