Home | History | Annotate | Download | only in articles
      1 page.title=Konfigurasi Keamanan Jaringan
      2 page.keywords=androidn,keamanan,jaringan
      3 page.image=images/cards/card-nyc_2x.jpg
      4 
      5 @jd:body
      6 
      7 <div id="tb-wrapper">
      8 <div id="tb">
      9 
     10 <h2>Dalam dokumen ini</h2>
     11 <ol>
     12   <li><a href="#manifest">Menambahkan File Konfigurasi Keamanan</a></li>
     13   <li><a href="#CustomTrust">Menyesuaikan CA Tepercaya</a>
     14       <ol>
     15       <li><a href="#ConfigCustom">Mengonfigurasi CA Tepercaya Khusus</a></li>
     16       <li><a href="#LimitingCas">Membatasi Set CA Tepercaya</a></li>
     17       <li><a href="#TrustingAdditionalCas">Mempercayai CA Tambahan</a></li>
     18       </ol>
     19   </li>
     20   <li><a href="#TrustingDebugCa">CA Debug Saja</a></li>
     21   <li><a href="#UsesCleartextTraffic">Berhenti dari Lalu Lintas Cleartext</a></li>
     22   <li><a href="#CertificatePinning">Menyematkan Sertifikat</a></li>
     23   <li><a href="#ConfigInheritance">Perilaku Pewarisan Konfigurasi</a></li>
     24   <li><a href="#FileFormat">Format File Konfigurasi</a></li>
     25 </ol>
     26 </div>
     27 </div>
     28 
     29 
     30 <p>
     31   Android N menyertakan fitur
     32   Network Security Configuration yang memungkinkan aplikasi menyesuaikan setelan keamanan jaringan mereka dalam
     33   file konfigurasi deklaratif yang aman tanpa memodifikasi kode aplikasi. Setelan ini bisa
     34   dikonfigurasi untuk domain dan aplikasi tertentu. Kemampuan
     35   utama fitur ini adalah sebagai berikut:
     36 </p>
     37 
     38 <ul>
     39   <li>
     40     <b>Trust-anchor khusus:</b> Menyesuaikan Certificate Authorities (CA) mana
     41     yang dipercaya untuk koneksi aman aplikasi. Misalnya,
     42     mempercayai sertifikat tertentu yang ditandatangani sendiri atau membatasi
     43     set CA umum yang dipercaya aplikasi.
     44   </li>
     45 
     46   <li>
     47     <b>Penggantian hanya-debug:</b> Men-debug secara aman koneksi aman dalam aplikasi
     48     tanpa menambahkan risiko pada basis yang telah dipasang.
     49   </li>
     50 
     51   <li>
     52     <b>Berhenti dari lalu lintas cleartext:</b> Melindungi aplikasi dari
     53     penggunaan lalu lintas cleartext secara tidak sengaja.
     54   </li>
     55 
     56   <li>
     57     <b>Penyematan sertifikat:</b> Membatasi koneksi aman aplikasi ke
     58     sertifikat tertentu.
     59   </li>
     60 </ul>
     61 
     62 
     63 <h2 id="manifest">Menambahkan File Konfigurasi Keamanan</h2>
     64 
     65 <p>
     66   Fitur Network Security Configuration menggunakan file XML tempat Anda menetapkan
     67   setelan untuk aplikasi. Anda harus menyertakan sebuah entri dalam manifes aplikasi
     68   untuk menunjuk ke file ini. Kutipan kode berikut dari sebuah manifes
     69   yang memperagakan cara membuat entri ini:
     70 </p>
     71 
     72 <pre>
     73 &lt;?xml version="1.0" encoding="utf-8"?&gt;
     74 &lt;manifest ... &gt;
     75   &lt;application ... &gt;
     76     &lt;meta-data android:name="android.security.net.config"
     77                android:resource="@xml/network_security_config" /&gt;
     78     ...
     79   &lt;/application&gt;
     80 &lt;/manifest&gt;
     81 </pre>
     82 
     83 <h2 id="CustomTrust">Menyesuaikan CA Tepercaya</h2>
     84 
     85 <p>
     86   Aplikasi mungkin perlu mempercayai set CA khusus sebagai ganti default
     87   platform. Alasannya yang paling umum adalah:
     88 </p>
     89 
     90 <ul>
     91   <li>Menghubungkan ke host dengan otoritas sertifikat khusus (ditandatangani sendiri,
     92   dikeluarkan oleh CA internal, dll).
     93   </li>
     94 
     95   <li>Membatasi set CA hanya untuk CA yang Anda percaya sebagai ganti setiap CA
     96   yang sudah terpasang.
     97   </li>
     98 
     99   <li>Mempercayai CA tambahan yang tidak disertakan dalam sistem.
    100   </li>
    101 </ul>
    102 
    103 <p>
    104   Secara default koneksi (mis. TLS, HTTPS) aman dari semua aplikasi mempercayai
    105   CA yang telah dipasang oleh sistem, dan aplikasi yang menargetkan API level 23
    106   (Android M) ke bawah, juga mempercayai penyimpanan CA yang ditambahkan pengguna secara default. Aplikasi
    107   bisa menyesuaikan koneksinya menggunakan {@code base-config} (untuk
    108   penyesuaian lebar-aplikasi) atau {@code domain-config} (untuk penyesuaian
    109   per-domain).
    110 </p>
    111 
    112 
    113 <h3 id="ConfigCustom">Mengonfigurasi CA Khusus</h3>
    114 
    115 <p>
    116   Anggaplah Anda ingin menghubungkan ke host Anda yang menggunakan sertifikat
    117   SSL yang ditandatangani sendiri atau ke host yang sertifikat SSL-nya dikeluarkan oleh CA non-publik
    118   yang Anda percaya, seperti CA internal perusahaan Anda.
    119 </p>
    120 
    121 <p>
    122   <code>res/xml/network_security_config.xml</code>:
    123 <pre>
    124 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    125 &lt;network-security-config&gt;
    126     &lt;domain-config&gt;
    127         &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
    128         &lt;trust-anchors&gt;
    129             &lt;certificates src="@raw/my_ca"/&gt;
    130         &lt;/trust-anchors&gt;
    131     &lt;/domain-config&gt;
    132 &lt;/network-security-config&gt;
    133 </pre>
    134 </p>
    135 
    136 <p>
    137   Menambahkan sertifikat CA yang ditandatangani sendiri atau sertifikat CA non-publik, dalam format PEM atau DER, ke
    138   {@code res/raw/my_ca}.
    139 </p>
    140 
    141 
    142 <h3 id="LimitingCas">Membatasi Set CA Tepercaya</h3>
    143 
    144 <p>
    145   Aplikasi yang tidak ingin mempercayai semua CA yang dipercaya oleh sistem
    146   sebagai gantinya bisa menetapkan set CA sendiri yang telah dikurangi untuk dipercaya. Ini akan melindungi
    147   aplikasi dari sertifikat palsu yang dikeluarkan oleh selain CA.
    148 </p>
    149 
    150 <p>
    151   Konfigurasi untuk membatasi set CA tepercaya mirip dengan <a href="#TrustingACustomCa">mempercayai CA khusus</a> untuk domain tertentu selain
    152   beberapa CA disediakan dalam sumber daya.
    153 </p>
    154 
    155 <p>
    156 <code>res/xml/network_security_config.xml</code>:
    157 <pre>
    158 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    159 &lt;network-security-config&gt;
    160     &lt;domain-config&gt;
    161         &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
    162         &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
    163         &lt;trust-anchors&gt;
    164             &lt;certificates src="@raw/trusted_roots"/&gt;
    165         &lt;/trust-anchors&gt;
    166     &lt;/domain-config&gt;
    167 &lt;/network-security-config&gt;
    168 </pre>
    169 </p>
    170 
    171 <p>
    172   Menambahkan CA tepercaya, dalam format PEM atau DER, ke {@code res/raw/trusted_roots}.
    173   Perhatikan, jika menggunakan format PEM, file <em>hanya</em> boleh berisi data PEM
    174   dan tidak ada teks tambahan. Anda juga bisa menyediakan beberapa elemen
    175   <a href="#certificates"><code>&lt;certificates&gt;</code></a>
    176 sebagai ganti satu elemen.
    177 </p>
    178 
    179 
    180 <h3 id="TrustingAdditionalCas">
    181   Mempercayai CA Tambahan
    182 </h3>
    183 
    184 <p>
    185   Sebuah aplikasi mungkin perlu mempercayai CA tambahan yang tidak dipercaya oleh sistem,
    186   hal ini bisa disebabkan karena sistem belum menyertakan CA atau CA tidak
    187   memenuhi persyaratan untuk memasukkan ke dalam sistem Android. Aplikasi
    188   bisa melakukannya dengan menetapkan beberapa sumber sertifikat untuk
    189   konfigurasi.
    190 </p>
    191 <p>
    192 <code>res/xml/network_security_config.xml</code>:
    193 <pre>
    194 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    195 &lt;network-security-config&gt;
    196     &lt;base-config&gt;
    197         &lt;trust-anchors&gt;
    198             &lt;certificates src="@raw/extracas"/&gt;
    199             &lt;certificates src="system"/&gt;
    200         &lt;/trust-anchors&gt;
    201     &lt;/base-config&gt;
    202 &lt;/network-security-config&gt;
    203 </pre>
    204 </p>
    205 
    206 
    207 <h2 id="TrustingDebugCa">Mengonfigurasi CA untuk Debug</h2>
    208 
    209 <p>
    210   Saat men-debug aplikasi yang terhubung melalui HTTPS, Anda mungkin perlu
    211   menghubungkan ke server pengembangan lokal, yang tidak memiliki sertifikat
    212   SSL untuk server produksi Anda. Untuk mendukungnya tanpa
    213   memodifikasi kode aplikasi, Anda bisa menetapkan CA hanya-debug
    214   yang <i>hanya</i> dipercaya bila <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
    215 android:debuggable</a>
    216   adalah {@code true} dengan menggunakan {@code debug-overrides}. Biasanya IDE dan alat
    217   build menyetel flag ini secara otomatis untuk build non-rilis.
    218 </p>
    219 
    220 <p>
    221   Ini lebih aman daripada kode kondisional biasa karena, sebagai tindakan
    222   pencegahan keamanan, toko aplikasi tidak menerima aplikasi yang ditandai
    223   bisa-di-debug.
    224 </p>
    225 
    226 <p>
    227 <code>res/xml/network_security_config.xml</code>:
    228 <pre>
    229 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    230 &lt;network-security-config&gt;
    231     &lt;debug-overrides&gt;
    232         &lt;trust-anchors&gt;
    233             &lt;certificates src="@raw/debug_cas"/&gt;
    234         &lt;/trust-anchors&gt;
    235     &lt;/debug-overrides&gt;
    236 &lt;/network-security-config&gt;
    237 </pre>
    238 </p>
    239 
    240 
    241 <h2 id="UsesCleartextTraffic">Berhenti dari Lalu Lintas Cleartext</h2>
    242 
    243 <p>
    244   Aplikasi bermaksud menyambung ke tujuan hanya menggunakan koneksi
    245  aman dapat memilih keluar dari dukungan cleartext (menggunakan protokol
    246  HTTP yang tidak terenkripsi sebagai ganti HTTPS) ke tujuan tersebut. Opsi ini akan membantu mencegah
    247   regresi tidak disengaja dalam aplikasi karena perubahan dalam URL yang disediakan oleh sumber-sumber
    248   eksternal seperti server backend.
    249   Lihat {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
    250   NetworkSecurityPolicy.isCleartextTrafficPermitted()} untuk detail selengkapnya.
    251 </p>
    252 
    253 <p>
    254   Misalnya, aplikasi mungkin ingin memastikan semua koneksi ke {@code
    255   secure.example.com} selalu dilakukan melalui HTTPS untuk melindungi lalu lintas sensitif
    256   dari jaringan yang berbahaya.
    257 </p>
    258 
    259 <p>
    260 <code>res/xml/network_security_config.xml</code>:
    261 <pre>
    262 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    263 &lt;network-security-config&gt;
    264     &lt;domain-config usesCleartextTraffic="false"&gt;
    265         &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
    266     &lt;/domain-config&gt;
    267 &lt;/network-security-config&gt;
    268 </pre>
    269 </p>
    270 
    271 
    272 <h2 id="CertificatePinning">Menyematkan Sertifikat</h2>
    273 
    274 <p>
    275   Biasanya aplikasi mempercayai semua CA yang telah terpasang. Jika salah satu dari CA ini
    276   mengeluarkan sertifikat palsu, aplikasi akan berisiko terkena serangan
    277   MiTM. Beberapa aplikasi memilih untuk membatasi set sertifikat yang mereka terima
    278   baik dengan membatasi set CA yang mereka percaya atau dengan menyematkan sertifikat.
    279 </p>
    280 
    281 <p>
    282   Penyematan sertifikat dilakukan dengan memberikan seperangkat sertifikat dengan hash
    283   kunci publik (SubjectPublicKeyInfo pada sertifikat X.509). Rantai
    284   sertifikat nanti hanya berlaku jika rantai sertifikat berisi setidaknya salah satu
    285   dari kunci publik yang disematkan.
    286 </p>
    287 
    288 <p>
    289   Perhatikan, saat menggunakan penyematan sertifikat, Anda harus selalu menyertakan kunci
    290   cadangan sehingga jika Anda terpaksa beralih ke kunci baru, atau mengubah CA (saat
    291   menyematkan ke sertifikat CA atau perantara CA tersebut), konektivitas
    292   aplikasi Anda tidak terpengaruh. Jika tidak, Anda harus mendorong
    293   pembaruan ke aplikasi tersebut untuk memulihkan konektivitas.
    294 </p>
    295 
    296 <p>
    297   Selain itu dimungkinkan juga menyetel waktu habis masa berlaku untuk pin setelah
    298   penyematan tidak dilakukan. Hal ini membantu mencegah masalah konektivitas dalam
    299   aplikasi yang belum diperbarui. Akan tetapi, menyetel waktu kedaluwarsa
    300   pada pin mungkin akan membuat penyematan bisa diabaikan.
    301 </p>
    302 
    303 <p>
    304 <code>res/xml/network_security_config.xml</code>:
    305 <pre>
    306 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    307 &lt;network-security-config&gt;
    308     &lt;domain-config&gt;
    309         &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
    310         &lt;pin-set expiration="2018-01-01"&gt;
    311             &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
    312             &lt;!-- backup pin --&gt
    313             &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
    314         &lt;/pin-set&gt;
    315     &lt;/domain-config&gt;
    316 &lt;/network-security-config&gt;
    317 </pre>
    318 </p>
    319 
    320 
    321 <h2 id="ConfigInheritance">Perilaku Pewarisan Konfigurasi</h2>
    322 
    323 <p>
    324   Nilai yang tidak disetel dalam konfigurasi tertentu akan diwariskan. Perilaku ini memungkinkan konfigurasi
    325   yang lebih kompleks sambil menjaga file konfigurasi tetap terbaca.
    326 </p>
    327 
    328 <p>
    329   Jika nilai tidak disetel dalam entri tertentu maka nilai dari entri berikutnya yang lebih
    330   umum akan digunakan. Nilai yang tidak disetel dalam {@code domain-config} akan
    331   diambil dari {@code domain-config} induk, jika tersarang, atau dari {@code
    332   base-config} jika tidak. Nilai yang tidak disetel dalam {@code base-config} akan menggunakan
    333   nilai default platform.
    334 </p>
    335 
    336 <p>
    337   Misalnya pertimbangkan, bila semua koneksi ke subdomain {@code
    338   example.com} harus menggunakan set CA khusus. Selain itu, lalu lintas cleartext ke
    339   domain ini diizinkan <em>kecuali</em> saat menghubungkan ke {@code
    340   secure.example.com}. Dengan menyarangkan konfigurasi untuk {@code
    341   secure.example.com} dalam konfigurasi untuk {@code example.com},
    342   {@code trust-anchors} tidak perlu digandakan.
    343 </p>
    344 
    345 <p>
    346 <code>res/xml/network_security_config.xml</code>:
    347 <pre>
    348 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    349 &lt;network-security-config&gt;
    350     &lt;domain-config&gt;
    351         &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
    352         &lt;trust-anchors&gt;
    353             &lt;certificates src="@raw/my_ca"/&gt;
    354         &lt;/trust-anchors&gt;
    355         &lt;domain-config cleartextTrafficPermitted="false"&gt;
    356             &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
    357         &lt;/domain-config&gt;
    358     &lt;/domain-config&gt;
    359 &lt;/network-security-config&gt;
    360 </pre>
    361 </p>
    362 
    363 
    364 <h2 id="FileFormat">Format File Konfigurasi</h2>
    365 
    366 <p>
    367   Fitur Network Security Configuration menggunakan format file XML.
    368   Struktur keseluruhan file ditampilkan dalam contoh kode berikut:
    369 </p>
    370 
    371 <pre>
    372 &lt;?xml version="1.0" encoding="utf-8"?&gt;
    373 &lt;network-security-config&gt;
    374     &lt;base-config&gt;
    375         &lt;trust-anchors&gt;
    376             &lt;certificates src="..."/&gt;
    377             ...
    378         &lt;/trust-anchors&gt;
    379     &lt;/base-config&gt;
    380 
    381     &lt;domain-config&gt;
    382         &lt;domain&gt;android.com&lt;/domain&gt;
    383         ...
    384         &lt;trust-anchors&gt;
    385             &lt;certificates src="..."/&gt;
    386             ...
    387         &lt;/trust-anchors&gt;
    388         &lt;pin-set&gt;
    389             &lt;pin digest="..."&gt;...&lt;/pin&gt;
    390             ...
    391         &lt;/pin-set&gt;
    392     &lt;/domain-config&gt;
    393     ...
    394     &lt;debug-overrides&gt;
    395         &lt;trust-anchors&gt;
    396             &lt;certificates src="..."/&gt;
    397             ...
    398         &lt;/trust-anchors&gt;
    399     &lt;/debug-overrides&gt;
    400 &lt;/network-security-config&gt;
    401 </pre>
    402 
    403 <p>
    404   Bagian berikut menjelaskan sintaks dan detail lainnya dari format
    405   file.
    406 </p>
    407 
    408 <h3 id="network-security-config">
    409   &lt;network-security-config&gt;
    410 </h3>
    411 
    412 <dl class="xml">
    413   <dt>
    414     bisa berisi:
    415   </dt>
    416 
    417   <dd>
    418     0 atau 1 <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
    419     Sejumlah <code><a href=
    420     "#domain-config">&lt;domain-config&gt;</a></code><br>
    421     0 atau 1 <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
    422   </dd>
    423 </dl>
    424 
    425 <h3 id="base-config">
    426   &lt;base-config&gt;
    427 </h3>
    428 
    429 <dl class="xml">
    430   <dt>
    431     sintaks:
    432   </dt>
    433 </dl>
    434 
    435 <pre class="stx">
    436 &lt;base-config <a href=
    437 "#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
    438     ...
    439 &lt;/base-config&gt;
    440 </pre>
    441 <dl class="xml">
    442   <dt>
    443     bisa berisi:
    444   </dt>
    445 
    446   <dd>
    447     <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
    448   </dd>
    449 
    450   <dt>
    451     keterangan:
    452   </dt>
    453 
    454   <dd>
    455     Konfigurasi default yang digunakan oleh semua koneksi yang tujuannya tidak
    456     tercakup oleh <a href="#domain-config"><code>domain-config</code></a>.
    457 
    458 <p>
    459   Nilai yang tidak disetel akan menggunakan nilai default platform. Konfigurasi
    460   default untuk aplikasi yang menargetkan API level 24 ke atas:
    461 </p>
    462 
    463 <pre>
    464 &lt;base-config usesCleartextTraffic="true"&gt;
    465     &lt;trust-anchors&gt;
    466         &lt;certificates src="system" /&gt;
    467     &lt;/trust-anchors&gt;
    468 &lt;/base-config&gt;
    469 </pre>
    470 Konfigurasi default untuk aplikasi yang menargetkan API level 23 ke bawah:
    471 <pre>
    472 &lt;base-config usesCleartextTraffic="true"&gt;
    473     &lt;trust-anchors&gt;
    474         &lt;certificates src="system" /&gt;
    475         &lt;certificates src="user" /&gt;
    476     &lt;/trust-anchors&gt;
    477 &lt;/base-config&gt;
    478 </pre>
    479 
    480   </dd>
    481 </dl>
    482 
    483 <h3 id="domain-config">&lt;domain-config&gt;</h3>
    484 <dl class="xml">
    485 <dt>sintaks:</dt>
    486 <dd>
    487 <pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
    488     ...
    489 &lt;/domain-config&gt;</pre>
    490 </dd>
    491 
    492 <dt>Bisa Berisi:</dt>
    493 
    494 <dd>
    495 1 atau beberapa <code><a href="#domain">&lt;domain&gt;</a></code>
    496 <br/>0 atau 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
    497 <br/>0 atau 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
    498 <br/>Sejumlah <code>&lt;domain-config&gt;</code> tersarang</dd>
    499 
    500 <dt>Keterangan</dt>
    501 <dd>Konfigurasi yang digunakan untuk koneksi ke tujuan tertentu seperti didefinisikan oleh elemen {@code domain}.
    502 
    503 <p>Perhatikan, jika beberapa elemen {@code domain-config} mencakup suatu tujuan, konfigurasi dengan aturan domain paling spesifik (terpanjang) yang cocok
    504 akan digunakan.</p></dd>
    505 </dl>
    506 
    507 
    508 <h3 id="domain">&lt;domain&gt;</h3>
    509 
    510 <dl class="xml">
    511   <dt>
    512     sintaks:
    513   </dt>
    514 
    515   <dd>
    516     <pre class="stx">
    517 &lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
    518 </pre>
    519   </dd>
    520 
    521   <dt>
    522     Atribut:
    523   </dt>
    524 
    525   <dd>
    526     <dl class="attr">
    527       <dt>
    528         {@code includeSubdomains}
    529       </dt>
    530 
    531       <dd>
    532         Jika {@code "true"} maka aturan domain ini akan dicocokkan dengan domain dan semua
    533         subdomain, termasuk subdomain dari subdomain, jika tidak peraturan hanya
    534         diterapkan pada kecocokan yang persis tepat.
    535       </dd>
    536     </dl>
    537   </dd>
    538 
    539   <dt>
    540     Keterangan:
    541   </dt>
    542 </dl>
    543 
    544 <h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
    545 
    546 <dl class="xml">
    547   <dt>
    548     sintaks:
    549   </dt>
    550 
    551   <dd>
    552     <pre class="stx">
    553 &lt;debug-overrides&gt;
    554     ...
    555 &lt;/debug-overrides&gt;
    556 </pre>
    557   </dd>
    558 
    559   <dt>
    560     Bisa Berisi:
    561   </dt>
    562 
    563   <dd>
    564     0 atau 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
    565   </dd>
    566 
    567   <dt>
    568     Keterangan:
    569   </dt>
    570 
    571   <dd>
    572     Pengesampingan yang akan diterapkan bila <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
    573     adalah {@code "true"} yang biasanya terjadi untuk build non-rilis
    574     yang dihasilkan oleh alat IDE dan build. Trust-anchor yang ditetapkan dalam {@code
    575     debug-overrides} akan ditambahkan ke semua konfigurasi lainnya dan penyematan
    576     sertifikat tidak dilakukan bila rantai sertifikat server menggunakan satu dari
    577     trust-anchor hanya-debug ini. Jika <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
    578     adalah {@code "false"} maka bagian ini akan diabaikan sepenuhnya.
    579   </dd>
    580 </dl>
    581 
    582 <h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
    583 <dl class="xml">
    584   <dt>
    585     sintaks:
    586   </dt>
    587 
    588   <dd>
    589     <pre class="stx">
    590 &lt;trust-anchors&gt;
    591 ...
    592 &lt;/trust-anchors&gt;
    593 </pre>
    594   </dd>
    595 
    596   <dt>
    597     Bisa Berisi:
    598   </dt>
    599 
    600   <dd>
    601     Sejumlah <code><a href="#certificates">&lt;certificates&gt;</a></code>
    602   </dd>
    603 
    604   <dt>
    605     Keterangan:
    606   </dt>
    607 
    608   <dd>
    609     Set trust-anchor untuk koneksi aman.
    610   </dd>
    611 </dl>
    612 
    613 
    614 <h3 id="certificates">&lt;certificates&gt;</h3>
    615 <dl class="xml">
    616 <dt>sintaks:</dt>
    617 <dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
    618               overridePins=["true" | "false"] /&gt;
    619 </pre></dd>
    620 <dt>keterangan:</dt>
    621 <dd>Set sertifikat X.509 untuk elemen {@code trust-anchors}.</dd>
    622 
    623 <dt>atribut:</dt>
    624 <dd><dl class="attr">
    625 <dt>{@code src}</dt>
    626 <dd>
    627 Sumber sertifikat CA, bisa salah satu dari
    628 <ul>
    629   <li>ID sumber daya mentah yang menunjuk ke file berisi sertifikat X.509.
    630   Sertifikat harus dikodekan dalam format DER atau PEM. Dalam hal sertifikat
    631   PEM, file <em>tidak boleh</em> berisi data tambahan non-PEM seperti
    632   komentar.
    633   </li>
    634 
    635   <li>{@code "system"} untuk sertifikat CA sistem yang telah terpasang.
    636   </li>
    637 
    638   <li>{@code "user"} untuk sertifikat CA yang ditambahkan pengguna.
    639   </li>
    640 </ul>
    641 </dd>
    642 
    643 <dt>{@code overridePins}</dt>
    644 <dd>
    645   <p>
    646     Menetapkan apakah CA dari sumber akan mengabaikan penyematan sertifikat. Jika {@code
    647     "true"} kemudian rangkaian sertifikat melalui salah satu CA dari
    648     sumber ini maka tidak dilakukan penyematan. Hal ini bisa berguna untuk debug CA
    649     atau untuk mendukung dengan memungkinkan pengguna melakukan MiTM atas lalu lintas aman aplikasi Anda.
    650   </p>
    651 
    652   <p>
    653     Default-nya adalah {@code "false"} kecuali jika ditetapkan dalam elemen {@code debug-overrides},
    654     dalam hal demikian default-nya adalah {@code "true"}.
    655   </p>
    656 </dd>
    657 </dl>
    658 </dd>
    659 
    660 
    661 <h3 id="pin-set">&lt;pin-set&gt;</h3>
    662 
    663 <dl class="xml">
    664   <dt>
    665     sintaks:
    666   </dt>
    667 
    668   <dd>
    669 <pre class="stx">
    670 &lt;pin-set expiration="date"&gt;
    671 ...
    672 &lt;/pin-set&gt;
    673 </pre>
    674   </dd>
    675 
    676   <dt>
    677     Bisa Berisi:
    678   </dt>
    679 
    680   <dd>
    681     Sejumlah <code><a href="#pin">&lt;pin&gt;</a></code>
    682   </dd>
    683 
    684   <dt>
    685     Keterangan:
    686   </dt>
    687 
    688   <dd>
    689     Satu set pin kunci publik. Agar koneksi aman bisa dipercaya, salah satu
    690     kunci publik dalam rantai kepercayaan harus berada dalam set pin. Lihat
    691     <code><a href="#pin">&lt;pin&gt;</a></code> untuk mengetahui format pin.
    692   </dd>
    693 
    694   <dt>
    695     Atribut:
    696   </dt>
    697 
    698   <dd>
    699     <dl class="attr">
    700       <dt>
    701         {@code expiration}
    702       </dt>
    703 
    704       <dd>
    705         Tanggal, dalam format {@code yyyy-MM-dd}, pada saat dan setelah pin
    706         kedaluwarsa, sehingga menonaktifkan penyematan. Jika atribut tidak disetel maka
    707         pin tidak kedaluwarsa.
    708         <p>
    709           Tanggal kedaluwarsa membantu mencegah masalah konektivitas di aplikasi yang
    710           tidak mengambil pembaruan untuk set pin mereka, misalnya karena pengguna
    711           menonaktifkan pembaruan aplikasi.
    712         </p>
    713       </dd>
    714     </dl>
    715   </dd>
    716 </dl>
    717 
    718 <h3 id="pin">&lt;pin&gt;</h3>
    719 <dl class="xml">
    720   <dt>
    721     sintaks:
    722   </dt>
    723 
    724   <dd>
    725 <pre class="stx">
    726 &lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
    727     SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
    728 </pre>
    729   </dd>
    730 
    731   <dt>
    732     Atribut:
    733   </dt>
    734 
    735   <dd>
    736     <dl class="attr">
    737       <dt>
    738         {@code digest}
    739       </dt>
    740 
    741       <dd>
    742         Algoritme intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya
    743         {@code "SHA-256"} yang didukung.
    744       </dd>
    745     </dl>
    746   </dd>
    747 </dl>
    748