Home | History | Annotate | Download | only in articles
      1 page.title=Configurao de segurana de rede
      2 page.keywords=androidn,security,network
      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>Neste documento</h2>
     11 <ol>
     12   <li><a href="#manifest">Adicionar um arquivo de configuraes de segurana</a></li>
     13   <li><a href="#CustomTrust">Personalizar CAs confiveis</a>
     14       <ol>
     15       <li><a href="#ConfigCustom">Configurar uma CA personalizada confivel</a></li>
     16       <li><a href="#LimitingCas">Limitar o conjunto de CAs confiveis</a></li>
     17       <li><a href="#TrustingAdditionalCas">Confiar em CAs adicionais</a></li>
     18       </ol>
     19   </li>
     20   <li><a href="#TrustingDebugCa">CAs somente de depurao</a></li>
     21   <li><a href="#UsesCleartextTraffic">Cancelar uso de trfego de texto simples</a></li>
     22   <li><a href="#CertificatePinning">Fixar certificados</a></li>
     23   <li><a href="#ConfigInheritance">Comportamento de herana de configurao</a></li>
     24   <li><a href="#FileFormat">Formato do arquivo de configuraes</a></li>
     25 </ol>
     26 </div>
     27 </div>
     28 
     29 
     30 <p>
     31   O Android N inclui um recurso de configuraes de segurana de rede
     32  que permite que os aplicativos personalizem as configuraes de segurana de rede em um arquivo de configuraes declarativo e seguro
     33  sem modificar o cdigo do aplicativo. Essas configuraes podem
     34  ser definidas para domnios especficos e para um aplicativo especfico. Os principais
     35  recursos so:
     36 </p>
     37 
     38 <ul>
     39   <li>
     40     <b>ncoras de confiana personalizadas:</b> personalize quais autoridades de certificado (CA)
     41  so confiveis para as conexes seguras de um aplicativo. Por
     42  exemplo, confiar em certificados autoassinados privados ou restringir
     43  o conjunto de CAs pblicas nas quais o aplicativo confia.
     44   </li>
     45 
     46   <li>
     47     <b>Substituies somente de depurao:</b> depure conexes seguras do aplicativo com segurana,
     48  sem adicionar riscos  base instalada.
     49   </li>
     50 
     51   <li>
     52     <b>Cancelar uso de trfego de texto simples:</b> proteja aplicativos contra
     53  o uso acidental de trfego de texto simples.
     54   </li>
     55 
     56   <li>
     57     <b>Fixar certificados:</b> restrinja a conexo segura de um aplicativo
     58  a certificados especficos.
     59   </li>
     60 </ul>
     61 
     62 
     63 <h2 id="manifest">Adicionar um arquivo de configuraes de segurana</h2>
     64 
     65 <p>
     66   O recurso de configuraes de segurana de rede usa um arquivo XML no qual voc especifica
     67  as configuraes do seu aplicativo. Inclua uma entrada no manifesto do seu
     68  aplicativo para apontar para esse arquivo. Este trecho de cdigo de um manifesto
     69  demonstra como criar essa entrada:
     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">Personalizar CAs confiveis</h2>
     84 
     85 <p>
     86   Um aplicativo pode querer confiar em um conjunto personalizado de CAs em vez de no padro
     87  da plataforma. Os motivos mais comuns para isso so:
     88 </p>
     89 
     90 <ul>
     91   <li>Conectar-se a um host com uma autoridade de certificado personalizada (autoassinada,
     92  emitida por uma CA corporativa interna etc.).
     93   </li>
     94 
     95   <li>Limitar o conjunto de CAs para apenas aquelas nas quais voc confia em vez de todas
     96  as CAs pr-instaladas.
     97   </li>
     98 
     99   <li>Confiar em CAs adicionais no includas no sistema.
    100   </li>
    101 </ul>
    102 
    103 <p>
    104   Por padro, conexes seguras (por exemplo, TLS, HTTPS) de todos os aplicativos confiam
    105  nas CAs pr-instaladas do sistema e os aplicativos direcionados ao nvel da API 23
    106  (Android M) e inferior tambm confiam no repositrio de CAs adicionadas pelo usurio por padro. Um
    107  aplicativo pode personalizar as prprias conexes usando {@code base-config} (para
    108  personalizao em todo o aplicativo) ou {@code domain-config} (para personalizao
    109  por domnio).
    110 </p>
    111 
    112 
    113 <h3 id="ConfigCustom">Configurar uma CA personalizada</h3>
    114 
    115 <p>
    116   Suponhamos que voc queira se conectar a um host que use um certificado SSL autoassinado
    117  ou a um host cujo certificado SSL foi emitido por uma CA no pblica
    118  na qual confia, como a CA interna da sua empresa.
    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   Adicione o certificado da CA autoassinada ou no pblica em formato PEM ou DER em
    138  {@code res/raw/my_ca}.
    139 </p>
    140 
    141 
    142 <h3 id="LimitingCas">Limitar o conjunto de CAs confiveis</h3>
    143 
    144 <p>
    145   Um aplicativo que no queira confiar em todas as CAs nas quais o sistema confia
    146  pode especificar o prprio conjunto limitado de CAs confiveis. Isso protege o
    147  aplicativo contra certificados fraudulentos emitidos por qualquer outra CA.
    148 </p>
    149 
    150 <p>
    151   A configurao para limitar o conjunto de CAs confiveis  semelhante a <a href="#TrustingACustomCa">confiar em uma CA personalizada</a> para um domnio especfico, mas
    152  fornecendo vrias CAs no recurso.
    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   Adicione as CAs confiveis em formato PEM ou DER em {@code res/raw/trusted_roots}.
    173   Observe que, ao usar o formato PEM, o arquivo deve conter <em>somente</em> dados PEM,
    174  sem texto adicional. Voc tambm pode fornecer vrios elementos
    175  <a href="#certificates"><code>&lt;certificates&gt;</code></a>
    176 em vez de um.
    177 </p>
    178 
    179 
    180 <h3 id="TrustingAdditionalCas">
    181   Confiar em CAs adicionais
    182 </h3>
    183 
    184 <p>
    185   Um aplicativo pode querer confiar em CAs adicionais nas quais o sistema no confia.
    186  Isso pode ocorrer se o sistema ainda no incluiu a CA ou se a CA
    187  no atender aos requisitos de incluso no sistema Android. O
    188  aplicativo pode fazer isso ao especificar vrias fontes de certificados para uma
    189  configurao.
    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">Configurar CAs para depurao</h2>
    208 
    209 <p>
    210   Ao depurar um aplicativo conectado por HTTPS, voc pode querer
    211  se conectar a um servidor de desenvolvimento local que no tenha o certificado SSL
    212  do seu servidor de produo. Para fazer isso sem
    213  modificar o cdigo do aplicativo, voc pode especificar CAs somente de depurao que
    214  sejam confiveis <i>apenas</i> quando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
    215 android:debuggable</a>
    216  for {@code true} ao usar {@code debug-overrides}. Normalmente, IDEs e ferramentas de compilao
    217  definem esse sinalizador automaticamente para compilaes de no lanamento.
    218 </p>
    219 
    220 <p>
    221   Isso  mais seguro do que o cdigo condicional normal, pois, como medida
    222  de segurana, os repositrios do aplicativo no aceitam aplicativos marcados como
    223  depurveis.
    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">Cancelar uso de trfego de texto simples</h2>
    242 
    243 <p>
    244   Aplicativos que pretendem se conectar a destinos usando apenas conexes
    245  seguras podem cancelar o uso de texto simples de suporte (usando o protocolo HTTP no criptografado
    246  em vez de HTTPS) para esses destinos. Essa opo ajuda a evitar
    247  regresses acidentais em aplicativos devido a alteraes nos URLs fornecidos por fontes externas,
    248  como servidores de back-end.
    249   Consulte {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
    250   NetworkSecurityPolicy.isCleartextTrafficPermitted()} para saber mais.
    251 </p>
    252 
    253 <p>
    254   Por exemplo, um aplicativo pode querer garantir que todas as conexes com {@code
    255   secure.example.com} sejam sempre realizadas por HTTPS para proteger o trfego confidencial
    256  de redes hostis.
    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">Fixar certificados</h2>
    273 
    274 <p>
    275   Normalmente, um aplicativo confia em todas as CAs pr-instaladas. Se qualquer uma dessas CAs
    276  emitir um certificado fraudulento, o aplicativo estar em risco de ataques
    277  MiTM. Alguns aplicativos optam por limitar o conjunto de certificados que aceitam
    278  restringindo o conjunto de CAs ou fixando certificados.
    279 </p>
    280 
    281 <p>
    282   A fixao de certificados  realizada ao fornecer um conjunto de certificados pelo hash da
    283  chave pblica (SubjectPublicKeyInfo do certificado X.509). Uma cadeia de certificados
    284   vlida somente se contiver pelo menos uma
    285  das chaves pblicas fixadas.
    286 </p>
    287 
    288 <p>
    289   Observe que, ao usar a fixao de certificados, voc deve sempre incluir uma chave de backup
    290  para que, se voc for forado a alternar para novas chaves ou alterar as CAs (ao
    291  fixar um certificado de CA ou um intermedirio dessa CA), a
    292  conectividade do seu aplicativo no seja afetada. Caso contrrio, voc precisar enviar
    293  uma atualizao ao aplicativo para restaurar a conectividade.
    294 </p>
    295 
    296 <p>
    297   Alm disso,  possvel definir um tempo de expirao para as fixaes, aps o qual
    298  elas no sejam mais realizadas. Isso ajuda a evitar problemas de conectividade
    299  em aplicativos que no foram atualizados. No entanto, definir um tempo de expirao
    300  para fixaes pode permitir que as fixaes sejam ignoradas.
    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">Comportamento de herana de configurao</h2>
    322 
    323 <p>
    324   Valores no definidos em uma configurao especfica so herdados. Esse comportamento permite
    325  configuraes mais complexas, mantendo o arquivo de configurao legvel.
    326 </p>
    327 
    328 <p>
    329   Se um valor no for definido em uma entrada especfica, o valor da prxima entrada
    330  mais genrica ser usado. Valores no definidos em um {@code domain-config} so
    331  obtidos pelo {@code domain-config} pai, se aninhados, ou, caso contrrio, pelo {@code
    332   base-config}. Valores no definidos no {@code base-config} usam os
    333  valores padro da plataforma.
    334 </p>
    335 
    336 <p>
    337   Por exemplo, considere um caso no qual todas as conexes para subdomnios de {@code
    338   example.com} devem usar um conjunto personalizado de CAs. Alm disso, o trfego de texto simples para esses
    339  domnios  permitido <em>exceto</em> ao se conectar com {@code
    340   secure.example.com}. Ao aninhar a configurao para {@code
    341   secure.example.com} dentro da configurao para {@code example.com}, o
    342  {@code trust-anchors} no precisa ser duplicado.
    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">Formato do arquivo de configuraes</h2>
    365 
    366 <p>
    367   O recurso de configuraes de segurana de rede usa um formato do arquivo XML.
    368   A estrutura geral desse arquivo  mostrada no seguinte exemplo de cdigo:
    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   As sees a seguir descrevem a sintaxe e outros detalhes do formato do
    405  arquivo.
    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     pode conter:
    415   </dt>
    416 
    417   <dd>
    418     0 ou 1 de <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
    419     Qualquer nmero de <code><a href=
    420     "#domain-config">&lt;domain-config&gt;</a></code><br>
    421     0 ou 1 de <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     sintaxe:
    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     pode conter:
    444   </dt>
    445 
    446   <dd>
    447     <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
    448   </dd>
    449 
    450   <dt>
    451     descrio:
    452   </dt>
    453 
    454   <dd>
    455     A configurao padro usada por todas as conexes cujo destino no 
    456  coberto por um <a href="#domain-config"><code>domain-config</code></a>.
    457 
    458 <p>
    459   Qualquer valor no definido usa os valores padro da plataforma. A configurao padro
    460  para aplicativos direcionados a nveis de API acima do 24:
    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 A configurao padro para aplicativos direcionados a nveis de API 23 e inferiores:
    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>sintaxe:</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>Pode conter:</dt>
    493 
    494 <dd>
    495 1 ou mais <code><a href="#domain">&lt;domain&gt;</a></code>
    496 <br/>0 ou 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
    497 <br/>0 ou 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
    498 <br/>Qualquer nmero de <code>&lt;domain-config&gt;</code> aninhados</dd>
    499 
    500 <dt>Descrio</dt>
    501 <dd>A configurao usada para conexes com destinos especficos, conforme  definido pelos elementos {@code domain}.
    502 
    503 <p>Observe que, se vrios elementos {@code domain-config} cobrirem um destino, a configurao com a regra de domnio correspondente
    504 mais especfica (mais longa) ser usada.</p></dd>
    505 </dl>
    506 
    507 
    508 <h3 id="domain">&lt;domain&gt;</h3>
    509 
    510 <dl class="xml">
    511   <dt>
    512     sintaxe:
    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     Atributos:
    523   </dt>
    524 
    525   <dd>
    526     <dl class="attr">
    527       <dt>
    528         {@code includeSubdomains}
    529       </dt>
    530 
    531       <dd>
    532         Se {@code "true"}, a regra de domnio corresponder ao domnio e a todos os
    533  subdomnios, incluindo subdomnios de subdomnios. Caso contrrio, a regra
    534  se aplica apenas a correspondncias exatas.
    535       </dd>
    536     </dl>
    537   </dd>
    538 
    539   <dt>
    540     Descrio:
    541   </dt>
    542 </dl>
    543 
    544 <h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
    545 
    546 <dl class="xml">
    547   <dt>
    548     sintaxe:
    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     Pode conter:
    561   </dt>
    562 
    563   <dd>
    564     0 ou 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
    565   </dd>
    566 
    567   <dt>
    568     Descrio:
    569   </dt>
    570 
    571   <dd>
    572     Substituies a serem aplicadas quando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
    573  for {@code "true"}, o que normalmente ocorre em compilaes de no lanamento
    574  geradas por IDEs e ferramentas de compilao. ncoras de confiana especificadas em {@code
    575     debug-overrides} so adicionadas a todas as demais configuraes e a fixao
    576  de certificados no  realizada quando a cadeia de certificados do servidor usa uma
    577  dessas ncoras de confiana somente de depurao. Se <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
    578  for {@code "false"}, esta seo ser ignorada por completo.
    579   </dd>
    580 </dl>
    581 
    582 <h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
    583 <dl class="xml">
    584   <dt>
    585     sintaxe:
    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     Pode conter:
    598   </dt>
    599 
    600   <dd>
    601     Qualquer nmero de <code><a href="#certificates">&lt;certificates&gt;</a></code>
    602   </dd>
    603 
    604   <dt>
    605     Descrio:
    606   </dt>
    607 
    608   <dd>
    609     Conjunto de ncoras de confiana para conexes seguras.
    610   </dd>
    611 </dl>
    612 
    613 
    614 <h3 id="certificates">&lt;certificates&gt;</h3>
    615 <dl class="xml">
    616 <dt>sintaxe:</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>descrio:</dt>
    621 <dd>Conjunto de certificados X.509 para elementos {@code trust-anchors}.</dd>
    622 
    623 <dt>atributos:</dt>
    624 <dd><dl class="attr">
    625 <dt>{@code src}</dt>
    626 <dd>
    627 A fonte de certificados de CA, que pode ser um dos
    628 <ul>
    629   <li>IDs de recursos brutos que apontam para um arquivo que contm certificados X.509.
    630   Os certificados devem ser codificados em formato DER ou PEM. No caso de certificados PEM,
    631  o arquivo <em>no deve</em> conter dados no PEM adicionais, como
    632  comentrios.
    633   </li>
    634 
    635   <li>{@code "system"} para os certificados de CA pr-instalados do sistema
    636   </li>
    637 
    638   <li>{@code "user"} para certificados de CA adicionados pelo usurio
    639   </li>
    640 </ul>
    641 </dd>
    642 
    643 <dt>{@code overridePins}</dt>
    644 <dd>
    645   <p>
    646     Especifica se as CAs dessa fonte ignoram a fixao de certificados. Se {@code
    647     true} e forem certificadas cadeias de certificados que incluam uma das CAs dessa
    648  fonte, a fixao no ser realizada. Isso pode ser til para depurar CAs
    649  ou permitir que o usurio execute ataques MiTM no trfego seguro do seu aplicativo.
    650   </p>
    651 
    652   <p>
    653     O padro  {@code "false"} a no ser que seja especificado em um elemento {@code debug-overrides}
    654 . Nesse caso, o padro ser {@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     sintaxe:
    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     Pode conter:
    678   </dt>
    679 
    680   <dd>
    681     Qualquer nmero de <code><a href="#pin">&lt;pin&gt;</a></code>
    682   </dd>
    683 
    684   <dt>
    685     Descrio:
    686   </dt>
    687 
    688   <dd>
    689     Um conjunto de fixaes de chave pblica. Para que uma conexo segura seja confivel, uma das
    690  chaves pblicas na cadeia de confiana deve estar presente no conjunto de fixaes. Consulte
    691  <code><a href="#pin">&lt;pin&gt;</a></code> para saber mais sobre o formato das fixaes.
    692   </dd>
    693 
    694   <dt>
    695     Atributos:
    696   </dt>
    697 
    698   <dd>
    699     <dl class="attr">
    700       <dt>
    701         {@code expiration}
    702       </dt>
    703 
    704       <dd>
    705         A data, no formato {@code yyyy-MM-dd}, aps a qual as fixaes
    706  expiram e so desativadas. Se o atributo no for definido, as fixaes
    707  no expiraro.
    708         <p>
    709           A expirao ajuda a evitar problemas de conectividade em aplicativos que no
    710  recebem atualizaes para o conjunto de fixaes, por exemplo, porque o usurio
    711  desativou as atualizaes do aplicativo.
    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     sintaxe:
    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     Atributos:
    733   </dt>
    734 
    735   <dd>
    736     <dl class="attr">
    737       <dt>
    738         {@code digest}
    739       </dt>
    740 
    741       <dd>
    742         O algoritmo de resumo usado para gerar a fixao. No momento, apenas
    743  {@code "SHA-256"}  permitido.
    744       </dd>
    745     </dl>
    746   </dd>
    747 </dl>
    748