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 <?xml version="1.0" encoding="utf-8"?> 74 <manifest ... > 75 <application ... > 76 <meta-data android:name="android.security.net.config" 77 android:resource="@xml/network_security_config" /> 78 ... 79 </application> 80 </manifest> 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 <?xml version="1.0" encoding="utf-8"?> 125 <network-security-config> 126 <domain-config> 127 <domain includeSubdomains="true">example.com</domain> 128 <trust-anchors> 129 <certificates src="@raw/my_ca"/> 130 </trust-anchors> 131 </domain-config> 132 </network-security-config> 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 <?xml version="1.0" encoding="utf-8"?> 159 <network-security-config> 160 <domain-config> 161 <domain includeSubdomains="true">secure.example.com</domain> 162 <domain includeSubdomains="true">cdn.example.com</domain> 163 <trust-anchors> 164 <certificates src="@raw/trusted_roots"/> 165 </trust-anchors> 166 </domain-config> 167 </network-security-config> 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><certificates></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 <?xml version="1.0" encoding="utf-8"?> 195 <network-security-config> 196 <base-config> 197 <trust-anchors> 198 <certificates src="@raw/extracas"/> 199 <certificates src="system"/> 200 </trust-anchors> 201 </base-config> 202 </network-security-config> 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 <?xml version="1.0" encoding="utf-8"?> 230 <network-security-config> 231 <debug-overrides> 232 <trust-anchors> 233 <certificates src="@raw/debug_cas"/> 234 </trust-anchors> 235 </debug-overrides> 236 </network-security-config> 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 <?xml version="1.0" encoding="utf-8"?> 263 <network-security-config> 264 <domain-config usesCleartextTraffic="false"> 265 <domain includeSubdomains="true">secure.example.com</domain> 266 </domain-config> 267 </network-security-config> 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 <?xml version="1.0" encoding="utf-8"?> 307 <network-security-config> 308 <domain-config> 309 <domain includeSubdomains="true">example.com</domain> 310 <pin-set expiration="2018-01-01"> 311 <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin> 312 <!-- backup pin --> 313 <pin digest="SHA-256">fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=</pin> 314 </pin-set> 315 </domain-config> 316 </network-security-config> 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 <?xml version="1.0" encoding="utf-8"?> 349 <network-security-config> 350 <domain-config> 351 <domain includeSubdomains="true">example.com</domain> 352 <trust-anchors> 353 <certificates src="@raw/my_ca"/> 354 </trust-anchors> 355 <domain-config cleartextTrafficPermitted="false"> 356 <domain includeSubdomains="true">secure.example.com</domain> 357 </domain-config> 358 </domain-config> 359 </network-security-config> 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 <?xml version="1.0" encoding="utf-8"?> 373 <network-security-config> 374 <base-config> 375 <trust-anchors> 376 <certificates src="..."/> 377 ... 378 </trust-anchors> 379 </base-config> 380 381 <domain-config> 382 <domain>android.com</domain> 383 ... 384 <trust-anchors> 385 <certificates src="..."/> 386 ... 387 </trust-anchors> 388 <pin-set> 389 <pin digest="...">...</pin> 390 ... 391 </pin-set> 392 </domain-config> 393 ... 394 <debug-overrides> 395 <trust-anchors> 396 <certificates src="..."/> 397 ... 398 </trust-anchors> 399 </debug-overrides> 400 </network-security-config> 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 <network-security-config> 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"><base-config></a></code><br> 419 Sejumlah <code><a href= 420 "#domain-config"><domain-config></a></code><br> 421 0 atau 1 <code><a href="#debug-overrides"><debug-overrides></a></code> 422 </dd> 423 </dl> 424 425 <h3 id="base-config"> 426 <base-config> 427 </h3> 428 429 <dl class="xml"> 430 <dt> 431 sintaks: 432 </dt> 433 </dl> 434 435 <pre class="stx"> 436 <base-config <a href= 437 "#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]> 438 ... 439 </base-config> 440 </pre> 441 <dl class="xml"> 442 <dt> 443 bisa berisi: 444 </dt> 445 446 <dd> 447 <code><a href="#trust-anchors"><trust-anchors></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 <base-config usesCleartextTraffic="true"> 465 <trust-anchors> 466 <certificates src="system" /> 467 </trust-anchors> 468 </base-config> 469 </pre> 470 Konfigurasi default untuk aplikasi yang menargetkan API level 23 ke bawah: 471 <pre> 472 <base-config usesCleartextTraffic="true"> 473 <trust-anchors> 474 <certificates src="system" /> 475 <certificates src="user" /> 476 </trust-anchors> 477 </base-config> 478 </pre> 479 480 </dd> 481 </dl> 482 483 <h3 id="domain-config"><domain-config></h3> 484 <dl class="xml"> 485 <dt>sintaks:</dt> 486 <dd> 487 <pre class="stx"><domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]> 488 ... 489 </domain-config></pre> 490 </dd> 491 492 <dt>Bisa Berisi:</dt> 493 494 <dd> 495 1 atau beberapa <code><a href="#domain"><domain></a></code> 496 <br/>0 atau 1 <code><a href="#trust-anchors"><trust-anchors></a></code> 497 <br/>0 atau 1 <code><a href="#pin-set"><pin-set></code></a> 498 <br/>Sejumlah <code><domain-config></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"><domain></h3> 509 510 <dl class="xml"> 511 <dt> 512 sintaks: 513 </dt> 514 515 <dd> 516 <pre class="stx"> 517 <domain includeSubdomains=["true" | "false"]>example.com</domain> 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"><debug-overrides></h3> 545 546 <dl class="xml"> 547 <dt> 548 sintaks: 549 </dt> 550 551 <dd> 552 <pre class="stx"> 553 <debug-overrides> 554 ... 555 </debug-overrides> 556 </pre> 557 </dd> 558 559 <dt> 560 Bisa Berisi: 561 </dt> 562 563 <dd> 564 0 atau 1 <code><a href="#trust-anchors"><trust-anchors></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"><trust-anchors></h3> 583 <dl class="xml"> 584 <dt> 585 sintaks: 586 </dt> 587 588 <dd> 589 <pre class="stx"> 590 <trust-anchors> 591 ... 592 </trust-anchors> 593 </pre> 594 </dd> 595 596 <dt> 597 Bisa Berisi: 598 </dt> 599 600 <dd> 601 Sejumlah <code><a href="#certificates"><certificates></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"><certificates></h3> 615 <dl class="xml"> 616 <dt>sintaks:</dt> 617 <dd><pre class="stx"><certificates src=["system" | "user" | "<i>raw resource</i>"] 618 overridePins=["true" | "false"] /> 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"><pin-set></h3> 662 663 <dl class="xml"> 664 <dt> 665 sintaks: 666 </dt> 667 668 <dd> 669 <pre class="stx"> 670 <pin-set expiration="date"> 671 ... 672 </pin-set> 673 </pre> 674 </dd> 675 676 <dt> 677 Bisa Berisi: 678 </dt> 679 680 <dd> 681 Sejumlah <code><a href="#pin"><pin></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"><pin></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"><pin></h3> 719 <dl class="xml"> 720 <dt> 721 sintaks: 722 </dt> 723 724 <dd> 725 <pre class="stx"> 726 <pin digest=["SHA-256"]>base64 encoded digest of X.509 727 SubjectPublicKeyInfo (SPKI)</pin> 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