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 , URL yang digunakan aplikasi untuk mengakses proxy API.
{i>Host<i} virtual juga menentukan apakah proxy API diakses menggunakan protokol HTTP, atau oleh protokol HTTPS terenkripsi yang menggunakan TLS. Saat mengonfigurasi {i>host<i} virtual untuk menggunakan HTTPS dan TLS, membuat host virtual di Edge dan mengonfigurasi host virtual agar 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 diperlukan untuk membuat host virtual
Sebelum membuat host virtual, Anda harus memiliki informasi berikut:
- Nama domain dari host virtual yang dapat dilihat secara publik. Misalnya, Anda harus
mengetahui apakah
nama yang dapat dilihat publik adalah
api.myCompany.com
,myapi.myCompany.com
, dll. Informasi itu digunakan saat Anda membuat {i>host<i} virtual dan juga saat Anda membuat catatan DNS untuk {i>host<i} virtual. -
Untuk TLS satu arah, Anda perlu membuat keystore yang berisi keystore
hal berikut:
- Sertifikat TLS - baik sertifikat yang ditandatangani oleh otoritas sertifikat (CA), atau rantai sertifikat di mana sertifikat terakhir ditandatangani oleh CA.
- Kunci pribadi - Edge mendukung ukuran kunci hingga 2048 bit. Frasa sandi bersifat opsional.
- Untuk TLS dua arah, Anda memerlukan keystore dan memerlukan truststore untuk menyimpan sertifikat klien dan, opsional, rantai CA sertifikat. Anda memerlukan truststore meskipun sertifikat tersebut ditandatangani oleh CA.
Lihat Keystore dan Truststore untuk informasi selengkapnya tentang cara membuat keystore dan truststore.
Konfigurasi host virtual untuk TLS
Untuk membuat host virtual, buat objek XML yang mendefinisikan host virtual.
Objek XML berikut menggunakan elemen <SSLInfo>
untuk mendefinisikan
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 menentukan truststore
menggunakan <TrustStore>
. Truststore menyimpan sertifikat klien dan, secara opsional, CA sertifikat
jaringan.
Menentukan cara menentukan keystore dan nama truststore di host virtual
Pada contoh host virtual di atas, Anda menentukan keystore menggunakan referensi. J adalah variabel yang berisi nama keystore, bukan menentukan nama keystore secara langsung.
Keuntungan menggunakan referensi adalah bahwa Anda dapat mengubah nilai referensi untuk mengubah keystore yang digunakan oleh host virtual, biasanya karena sertifikat di keystore saat ini berakhir dalam waktu dekat. Mengubah nilai referensi tidak mengharuskan Anda memulai ulang Router Edge.
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 Router Edge.
Batasan dalam penggunaan 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 Anda menghentikan SSL di Router Apigee.
- Jika Anda memiliki load balancer di depan Router Apigee, dan menghentikan TLS pada Anda tidak dapat menggunakan keystore dan referensi truststore di load balancer virtual {i>host<i}.
Memodifikasi 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 memulai ulang Router Edge.
Jika host virtual Anda saat ini dikonfigurasi untuk menggunakan nama literal untuk keystore atau {i>truststore<i}, Anda dapat mengonversinya untuk menggunakan referensi. Untuk melakukannya, perbarui {i> virtual host<i} untuk menggunakan referensi, lalu mulai ulang Router Edge.
Menyetel penyandian dan protokol TLS untuk Edge 4.15.07 dan versi sebelumnya
Jika menggunakan Edge versi 4.15.07 dan yang lebih lama, Anda perlu menyetel protokol dan cipher TLS
yang digunakan oleh host virtual dengan 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 penyandian Java dan JSSE. Misalnya, untuk Java 8, lihat
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
Menentukan penyandian dan protokol TLS untuk Edge 4.16.01 hingga 4.16.09
Di Edge 4.16.01 hingga 4.16.09, Anda menetapkan cipher dan protokol default untuk host virtual secara global di {i>Router<i}. Setelan default ini kemudian berlaku untuk semua {i>host<i} virtual.
Gunakan token untuk menentukan protokol dan cipher default:
- Untuk menentukan protokol default, gunakan token
conf_load_balancing_load.balancing.driver.server.ssl.protocols
- Guna menentukan cipher 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
Pengaturan ini menetapkan 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
). - Kecualikan cipher tanpa autentikasi (
!aNULL
) - Kecualikan cipher suite menggunakan MD5 (
!MD5
) - Kecualikan cipher suite menggunakan DH (termasuk DH anonim, DH efemeral, dan DH tetap) DAN
tiga DES (
!DH+3DES
) - Kecualikan cipher suite menggunakan pertukaran kunci RSA DAN DES tiga kali lipat (
!RSA+3DES
)
Untuk mengetahui informasi tentang sintaksis dan nilai yang diizinkan oleh token ini, lihat penyandian OpenSSL. Perhatikan, token ini menggunakan nama penyandian OpenSSL, seperti AES128-SHA256, dan bukan Nama cipher Java/JSSE, seperti TLS_RSA_WITH_AES_128_CBC_SHA256.
Untuk menetapkan token untuk Router:
- Edit
/opt/apigee/customer/application/router.properties
. Jika file tersebut tidak ada, buat file tersebut. - Setel
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
sebelumnya yang benar. Misalnya, untuk menentukan TLSv1.2 saja dan mengecualikan rangkaian penyandian menggunakan {i>pre-shared key<i}, 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.properties
dimiliki oleh {i>apigee<i}:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Mulai ulang Router Edge:
/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
Latar (Setting) 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, maka Anda dapat mengatur beberapa properti TLS untuk
host virtual individual, seperti protokol dan cipher TLS, dengan menggunakan tag turunan <Properties>
dari
<VirtualHost>
. Tag ini dijelaskan di bagian 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 penyandian OpenSSL.
Perhatikan, token ini menggunakan nama penyandian OpenSSL, seperti AES128-SHA256, dan bukan
nama penyandian Java/JSSE, seperti
TLS_RSA_WITH_AES_128_CBC_SHA256.
Membuat host virtual yang menggunakan HTTPS
Contoh ini menentukan keystore ke host virtual dengan menggunakan referensi. Menggunakan memungkinkan Anda mengubah keystore tanpa harus memulai ulang Router.
Gunakan prosedur berikut untuk membuat host virtual:
- Buat dan konfigurasi keystore bernama myTestKeystore menggunakan metode prosedur yang dijelaskan di sini: Keystore dan Truststore. Pastikan keystore menggunakan nama alias myKeyAlias untuk sertifikat dan kunci pribadi.
-
Gunakan panggilan POST API 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:password
Referensi menentukan nama keystore dan jenis referensi sebagai
KeyStore
.Gunakan panggilan GET API 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 dengan menggunakan perintah Create a Virtual Host API, dengan
<ms-IP>
sebagai alamat IP atau nama domain dari 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 {i>host<i} virtual yang cocok dengan alias {i>host<i}.
Jika Anda memiliki proxy API yang sudah 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 agar dapat menggunakan host virtual, dan membuat data DNS untuk host alias, Anda dapat mengakses proxy API seperti yang ditampilkan di bawah ini:
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
Secara opsional, Anda dapat mengonfigurasi host virtual untuk menggunakan referensi ke keystore atau truststore. Keuntungan menggunakan referensi adalah Anda dapat memperbarui referensi ke mengarahkan ke keystore atau truststore yang berbeda untuk memperbarui sertifikat TLS tanpa harus memulai ulang {i>Router<i}.
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 POST API 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 GET API 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 di lain waktu agar mengarah ke keystore yang berbeda, pastikan alias memiliki dengan 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