| page.title=Cấu hình Bảo mật mạng |
| page.keywords=androidn,security,network |
| page.image=images/cards/card-nyc_2x.jpg |
| |
| @jd:body |
| |
| <div id="tb-wrapper"> |
| <div id="tb"> |
| |
| <h2>Trong tài liệu này</h2> |
| <ol> |
| <li><a href="#manifest">Thêm một tệp Cấu hình Bảo mật mạng</a></li> |
| <li><a href="#CustomTrust">Tùy chỉnh các CA đáng tin cậy</a> |
| <ol> |
| <li><a href="#ConfigCustom">Cấu hình một CA tùy chỉnh đáng tin cậy</a></li> |
| <li><a href="#LimitingCas">Giới hạn bộ CA đáng tin cậy</a></li> |
| <li><a href="#TrustingAdditionalCas">Tin cậy các CA bổ sung</a></li> |
| </ol> |
| </li> |
| <li><a href="#TrustingDebugCa">Các CA chỉ trong chế độ gỡ lỗi</a></li> |
| <li><a href="#UsesCleartextTraffic">Không sử dụng truyền gửi văn bản chưa mã hóa</a></li> |
| <li><a href="#CertificatePinning">Ghim chứng chỉ</a></li> |
| <li><a href="#ConfigInheritance">Hành vi Kế thừa cấu hình</a></li> |
| <li><a href="#FileFormat">Định dạng Tệp cấu hình</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| |
| <p> |
| Android N có tính năng Cấu hình Bảo mật mạng |
| cho phép ứng dụng tùy chỉnh các cài đặt bảo mật mạng trong một tệp |
| cấu hình khai báo an toàn mà không cần sửa đổi mã nguồn ứng dụng. Các cài đặt này có thể |
| được cấu hình cho các miền cụ thể và cho một ứng dụng cụ thể. Các khả năng |
| chính của tính năng này như sau: |
| </p> |
| |
| <ul> |
| <li> |
| <b>Nguồn tin cậy tùy chỉnh:</b> Tùy chính các Nhà cung cấp chứng chỉ (CA) |
| nào được tin cậy cho các kết nối bảo mật của một ứng dụng. Ví |
| dụ, tin cậy các chứng chỉ tự ký đặc biệt hoặc hạn chế |
| bộ CA công khai mà ứng dụng tin cậy. |
| </li> |
| |
| <li> |
| <b>Chỉ khống chế khi gỡ lỗi:</b> Gỡ lỗi các kết nối bảo mật một cách an toàn trong một ứng dụng |
| mà không thêm rủi ro cho cơ sở cài đặt. |
| </li> |
| |
| <li> |
| <b>Không sử dụng truyền gửi văn bản chưa mã hóa:</b> Bảo vệ các ứng dụng khỏi việc |
| vô tình sử dụng truyền gửi văn bản chưa mã hóa. |
| </li> |
| |
| <li> |
| <b>Ghim chứng chỉ:</b> Giới hạn kết nối bảo mật của ứng dụng |
| trong các chứng chỉ đặc biệt. |
| </li> |
| </ul> |
| |
| |
| <h2 id="manifest">Thêm một Tệp Cấu hình Bảo mật mạng</h2> |
| |
| <p> |
| Tính năng Cấu hình Bảo mật mạng sử dụng một tệp XML làm nơi bạn sẽ chỉ định |
| các cài đặt cho ứng dụng của mình. Bạn phải bổ sung một mục nhập trong bản kê khai của |
| ứng dụng để trỏ đến tệp này. Đoạn mã sau của một bản kê khai |
| minh họa cách tạo mục nhập này: |
| </p> |
| |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| ... |
| <app ...> |
| <meta-data android:name="android.security.net.config" |
| android:resource="@xml/network_security_config" /> |
| ... |
| </app> |
| </pre> |
| |
| <h2 id="CustomTrust">Tùy chỉnh các CA đáng tin cậy</h2> |
| |
| <p> |
| Một ứng dụng có thể muốn tin cậy một bộ các CA tùy chỉnh thay vì mặc định |
| của nền tảng. Những lý do phổ biến nhất cho điều này là: |
| </p> |
| |
| <ul> |
| <li>Kết nối tới một máy chủ có nhà cung cấp chứng chỉ riêng (tự ký, |
| được cấp bởi một CA nội bộ của công ty, v.v.). |
| </li> |
| |
| <li>Giới hạn bộ CA chỉ trong các CA mà bạn tin cậy thay vì mọi |
| CA được cài đặt trước. |
| </li> |
| |
| <li>Tin cậy các CA bổ sung không được kèm theo trong hệ thống. |
| </li> |
| </ul> |
| |
| <p> |
| Theo mặc định, các kết nối bảo mật (vd: TLS, HTTPS) từ mọi ứng dụng sẽ tin cậy |
| các CA của hệ thống được cài đặt trước và các ứng dụng nhắm mục tiêu mức API 23 |
| (Android M) và thấp hơn theo mặc định cũng tin cậy kho lưu trữ CA được người dùng bổ sung. Một |
| ứng dụng có thể tùy chỉnh các kết nối của riêng nó bằng cách sử dụng {@code base-config} (dành cho |
| tùy chỉnh trên phạm vi ứng dụng) hoặc {@code domain-config} (tùy chỉnh |
| cho mỗi miền). |
| </p> |
| |
| |
| <h3 id="ConfigCustom">Cấu hình một CA tùy chỉnh</h3> |
| |
| <p> |
| Giả sử bạn muốn kết nối tới máy chủ của mình có sử dụng các chứng chỉ |
| SSL tự ký hoặc tới một máy chủ có chứng chỉ SSL được cấp bởi một CA không công khai |
| mà bạn tin cậy, chẳng hạn như CA nội bộ của công ty. |
| </p> |
| |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <domain-config> |
| <domain includeSubdomains="true">example.com</domain> |
| <trust-anchors> |
| <certificates src="@raw/my_ca"/> |
| </trust-anchors> |
| </domain-config> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| <p> |
| Thêm chứng chỉ CA tự ký hoặc không công khai theo định dạng PEM hoặc DER vào |
| {@code res/raw/my_ca}. |
| </p> |
| |
| |
| <h3 id="LimitingCas">Giới hạn bộ CA đáng tin cậy</h3> |
| |
| <p> |
| Một ứng dụng không muốn tin cậy mọi CA được hệ thống tin cậy có thể |
| chỉ định bộ CA hạn chế của riêng nó để tin cậy. Điều này sẽ bảo vệ |
| ứng dụng khỏi các chứng chỉ lừa đảo được cấp bởi bất kỳ CA nào khác. |
| </p> |
| |
| <p> |
| Cấu hình để giới hạn bộ CA đáng tin cậy cũng giống như <a href="#TrustingACustomCa">Tin cậy một CA tùy chỉnh</a> cho một miền cụ thể ngoại trừ |
| việc nhiều CA được cung cấp trong tài nguyên. |
| </p> |
| |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <domain-config> |
| <domain includeSubdomains="true">secure.example.com</domain> |
| <domain includeSubdomains="true">cdn.example.com</domain> |
| <trust-anchors> |
| <certificates src="@raw/trusted_roots"/> |
| </trust-anchors> |
| </domain-config> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| <p> |
| Thêm các CA đáng tin cậy theo định dạng PEM hoặc DER vào {@code res/raw/trusted_roots}. |
| Lưu ý rằng nếu sử dụng định dạng PEM thì tệp <em>chỉ</em> được chứa dữ liệu PEM |
| và không có thêm dữ liệu văn bản. Bạn cũng có thể cung cấp nhiều |
| phần tử <a href="#certificates"><code><certificates></code></a> |
| thay vì một phần tử. |
| </p> |
| |
| |
| <h3 id="TrustingAdditionalCas"> |
| Tin cậy các CA bổ sung |
| </h3> |
| |
| <p> |
| Một ứng dụng có thể muốn tin cậy các CA bổ sung không được hệ thống tin cậy, |
| điều này có thể do hệ thống chưa thêm CA đó hoặc một CA không |
| đáp ứng các yêu cầu để đưa vào hệ thống Android. Một |
| ứng dụng có thể thực hiện điều này bằng cách chỉ định nhiều nguồn chứng chỉ cho một |
| cấu hình. |
| </p> |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <base-config> |
| <trust-anchors> |
| <certificates src="@raw/extracas"/> |
| <certificates src="system"/> |
| </trust-anchors> |
| </base-config> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| |
| <h2 id="TrustingDebugCa">Cấu hình các CA để gỡ lỗi</h2> |
| |
| <p> |
| Khi gỡ lỗi một ứng dụng kết nối qua HTTPS thì bạn có thể muốn |
| kết nối tới một máy chủ phát triển cục bộ không có chứng chỉ |
| SSL dành cho máy chủ thương mại của bạn. Để hỗ trợ cho trường hợp này mà không cần |
| chỉnh sửa mã nguồn ứng dụng của bạn thì bạn có thể chỉ định các CA chỉ dùng cho gỡ lỗi |
| mà <i>chỉ</i> được tin cậy khi <a href="{@docRoot}guide/topics/manifest/application-element.html#debug"> |
| android:debuggable</a> |
| là {@code true} bằng cách sử dụng {@code debug-overrides}. Thông thường các IDE và công cụ |
| dựng sẽ đặt cờ này tự động đối với các bản dựng không dùng để phát hành. |
| </p> |
| |
| <p> |
| Làm như vậy an toàn hơn so với mã điều kiện thông thường bởi, là điều kiện |
| bảo mật tiên quyết, các cửa hàng ứng dụng không chấp nhận các ứng dụng được đánh dấu |
| là hỗ trợ gỡ lỗi. |
| </p> |
| |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <debug-overrides> |
| <trust-anchors> |
| <certificates src="@raw/debug_cas"/> |
| </trust-anchors> |
| </debug-overrides> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| |
| <h2 id="UsesCleartextTraffic">Không sử dụng truyền gửi văn bản chưa mã hóa</h2> |
| |
| <p> |
| Các ứng dụng có ý định kết nối tới các điểm đích chỉ sử dụng các kết nối |
| bảo mật có thể bỏ hỗ trợ truyền gửi văn bản không mã hóa (bằng giao thức |
| HTTP không mã hóa thay vì HTTPS) tới các đích đó. Tùy chọn này giúp ngăn |
| các hồi quy tiềm tàng trong ứng dụng do thay đổi trong các URL được cung cấp bởi các nguồn |
| bên ngoài như các máy chủ phụ trợ. |
| Hãy xem {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted |
| NetworkSecurityPolicy.isCleartextTrafficPermitted()} để biết thêm chi tiết. |
| </p> |
| |
| <p> |
| Ví dụ, một ứng dụng có thể đảm bảo rằng mọi kết nối tới {@code |
| secure.example.com} luôn được thực hiện qua HTTPS để bảo vệ việc truyền gửi dữ liệu nhạy cảm |
| khỏi các mạng có hại. |
| </p> |
| |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <domain-config usesCleartextTraffic="false"> |
| <domain includeSubdomains="true">secure.example.com</domain> |
| </domain-config> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| |
| <h2 id="CertificatePinning">Ghim chứng chỉ</h2> |
| |
| <p> |
| Thông thường thì một ứng dụng sẽ tin cậy mọi CA được cài đặt sẵn. Nếu bất kỳ CA nào trong số này sẽ |
| phát hành một chứng chỉ lừa đảo thì ứng dụng sẽ gặp phải rủi ro từ một cuộc tấn công |
| MiTM. Một số ứng dụng chọn cách giới hạn bộ chứng chỉ được chúng chấp nhận |
| bằng cách giới hạn bộ CA được ứng dụng tin cậy hoặc bằng cách ghim chứng chỉ. |
| </p> |
| |
| <p> |
| Ghim chứng chỉ được thực hiện bằng cách cung cấp một bộ chứng chỉ theo mã hash của |
| khóa công khai (SubjectPublicKeyInfo của chứng chỉ X.509). Một chuỗi |
| chứng chỉ khi đó chỉ hợp lệ nếu như chuỗi chứng chỉ có chứa ít nhất một trong |
| các khóa công khai được ghim. |
| </p> |
| |
| <p> |
| Lưu ý rằng khi sử dụng ghim chứng chỉ bạn phải luôn kèm thêm một khóa |
| dự phòng để nếu bạn bị buộc phải chuyển sang các khóa mới hoặc thay đổi các CA (khi |
| ghim vào một chứng chỉ CA hoặc một chứng chỉ trung gian của CA đó) thì |
| kết nối của ứng dụng sẽ không bị ảnh hưởng. Nếu không bạn phải đưa ra một |
| bản cập nhật cho ứng dụng để khôi phục khả năng kết nối. |
| </p> |
| |
| <p> |
| Ngoài ra, có thể đặt thời gian hết hạn cho các ghim, sau thời gian đó |
| sẽ không tiến hành ghim được. Điều này giúp phòng ngừa các vấn đề về kết nối trong |
| ứng dụng chưa được cập nhật. Tuy nhiên, việc đặt thời gian hết hạn |
| trên các ghim này có thể khiến ghim bị bỏ qua. |
| </p> |
| |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <domain-config> |
| <domain includeSubdomains="true">example.com</domain> |
| <pin-set expiration="2018-01-01"> |
| <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin> |
| <!-- backup pin --> |
| <pin digest="SHA-256">fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=</pin> |
| </domain-config> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| |
| <h2 id="ConfigInheritance">Hành vi Kế thừa cấu hình</h2> |
| |
| <p> |
| Các giá trị chưa được đặt trong một cấu hình cụ thể sẽ được kế thừa. Hành vi này cho phép tạo ra các cấu hình phức tạp |
| hơn trong khi vẫn giữ cho tệp cấu hình có thể đọc được. |
| </p> |
| |
| <p> |
| Nếu một giá trị không được đặt trong một mục nhập cụ thể thì giá trị thuộc mục nhập |
| bao quát hơn tiếp theo sẽ được sử dụng. Các giá trị chưa được đặt trong {@code domain-config} sẽ được |
| lấy từ phần tử cha {@code domain-config} nếu như được lồng, hoặc từ {@code |
| base-config} nếu không được lồng. Các giá trị chưa được đặt trong {@code base-config} sẽ sử dụng |
| các giá trị mặc định của nền tảng. |
| </p> |
| |
| <p> |
| Ví dụ: hãy xem xét trường hợp tất cả các kết nối tới miền con của {@code |
| example.com} phải sử dụng một bộ CA tùy chỉnh. Ngoài ra, truyền gửi văn bản không mã hóa tới |
| các miền này được cho phép <em>trừ khi</em> kết nối tới {@code |
| secure.example.com}. Bằng cách lồng cấu hình cho {@code |
| secure.example.com} bên trong cấu hình cho {@code example.com} thì |
| {@code trust-anchors} không cần phải được sao lặp. |
| </p> |
| |
| <p> |
| <code>res/xml/network_security_config.xml</code>: |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <domain-config> |
| <domain includeSubdomains="true">example.com</domain> |
| <trust-anchors> |
| <certificates src="@raw/my_ca"/> |
| </trust-anchors> |
| <domain-config cleartextTrafficPermitted="false"> |
| <domain includeSubdomains="true">secure.example.com</domain> |
| </domain-config> |
| </domain-config> |
| </network-security-config> |
| </pre> |
| </p> |
| |
| |
| <h2 id="FileFormat">Định dạng Tệp cấu hình</h2> |
| |
| <p> |
| Tính năng Cấu hình Bảo mật mạng sử dụng một định dạng tệp XML. |
| Cấu trúc chung của tệp này được thể hiện trong đoạn mẫu mã nguồn sau: |
| </p> |
| |
| <pre> |
| <?xml version="1.0" encoding="utf-8"?> |
| <network-security-config> |
| <base-config> |
| <trust-anchors> |
| <certificates src="..."/> |
| ... |
| </trust-anchors> |
| </base-config> |
| |
| <domain-config> |
| <domain>android.com</domain> |
| ... |
| <trust-anchors> |
| <certificates src="..."/> |
| ... |
| </trust-anchors> |
| <pin-set> |
| <pin digest="...">...</pin> |
| ... |
| </pin-set> |
| </domain-config> |
| ... |
| <debug-overrides> |
| <trust-anchors> |
| <certificates src="..."/> |
| ... |
| </trust-anchors> |
| </debug-overrides> |
| </network-security-config> |
| </pre> |
| |
| <p> |
| Các phần sau sẽ mô tả cú pháp và các chi tiết khác của định dạng |
| tệp này. |
| </p> |
| |
| <h3 id="network-security-config"> |
| <network-security-config> |
| </h3> |
| |
| <dl class="xml"> |
| <dt> |
| có thể chứa: |
| </dt> |
| |
| <dd> |
| 0 hoặc 1 của <code><a href="#base-config"><base-config></a></code><br> |
| Bất kỳ số nào của <code><a href= |
| "#domain-config"><domain-config></a></code><br> |
| 0 hoặc 1 của <code><a href="#debug-overrides"><debug-overrides></a></code> |
| </dd> |
| </dl> |
| |
| <h3 id="base-config"> |
| <base-config> |
| </h3> |
| |
| <dl class="xml"> |
| <dt> |
| cú pháp: |
| </dt> |
| </dl> |
| |
| <pre class="stx"> |
| <base-config <a href= |
| "#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]> |
| ... |
| </base-config> |
| </pre> |
| <dl class="xml"> |
| <dt> |
| có thể chứa: |
| </dt> |
| |
| <dd> |
| <code><a href="#trust-anchors"><trust-anchors></a></code> |
| </dd> |
| |
| <dt> |
| mô tả: |
| </dt> |
| |
| <dd> |
| Cấu hình mặc định được sử dụng bởi mọi kết nối có đích đến không được |
| bao gồm bởi một <a href="#domain-config"><code>domain-config</code></a>. |
| |
| <p> |
| Bất kỳ giá trị nào chưa được đặt sẽ sử dụng các giá trị mặc định của nền tảng. Cấu hình |
| mặc định cho các ứng dụng nhắm mục tiêu API mức 24 trở lên: |
| </p> |
| |
| <pre> |
| <base-config usesCleartextTraffic="true"> |
| <trust-anchors> |
| <certificates src="system" /> |
| </trust-anchors> |
| </base-config> |
| </pre> |
| Cấu hình mặc định cho các ứng dụng nhắm mục tiêu API mức 23 trở xuống: |
| <pre> |
| <base-config usesCleartextTraffic="true"> |
| <trust-anchors> |
| <certificates src="system" /> |
| <certificates src="user" /> |
| </trust-anchors> |
| </base-config> |
| </pre> |
| |
| </dd> |
| </dl> |
| |
| <h3 id="domain-config"><domain-config></h3> |
| <dl class="xml"> |
| <dt>cú pháp:</dt> |
| <dd> |
| <pre class="stx"><domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]> |
| ... |
| </domain-config></pre> |
| </dd> |
| |
| <dt>Có thể chứa:</dt> |
| |
| <dd> |
| 1 hoặc nhiều <code><a href="#domain"><domain></a></code> |
| <br/>0 hoặc 1 <code><a href="#trust-anchors"><trust-anchors></a></code> |
| <br/>0 hoặc 1 <code><a href="#pin-set"><pin-set></code></a> |
| <br/>Bất kỳ số nào của <code><domain-config></code> được lồng</dd> |
| |
| <dt>Mô tả</dt> |
| <dd>Cấu hình được sử dụng cho các kết nối tới các điểm đích cụ thể theo như định nghĩa bởi các phần tử {@code domain}. |
| |
| <p>Lưu ý rằng nếu nhiều phần tử {@code domain-config} chứa một điểm đích thì cấu hình có quy tắc miền trùng khớp |
| cụ thể nhất (dài nhất) sẽ được sử dụng.</p></dd> |
| </dl> |
| |
| |
| <h3 id="domain"><domain></h3> |
| |
| <dl class="xml"> |
| <dt> |
| cú pháp: |
| </dt> |
| |
| <dd> |
| <pre class="stx"> |
| <domain includeSubdomains=["true" | "false"]>example.com</domain> |
| </pre> |
| </dd> |
| |
| <dt> |
| Thuộc tính: |
| </dt> |
| |
| <dd> |
| <dl class="attr"> |
| <dt> |
| {@code includeSubdomains} |
| </dt> |
| |
| <dd> |
| Nếu {@code "true"} thì quy tắc miền này sẽ trùng với miền đó và tất cả |
| các miền con, bao gồm các miền con của miền con, nếu không quy tắc đó chỉ |
| áp dụng cho các trùng khớp tuyệt đối. |
| </dd> |
| </dl> |
| </dd> |
| |
| <dt> |
| Mô tả: |
| </dt> |
| </dl> |
| |
| <h3 id="debug-overrides"><debug-overrides></h3> |
| |
| <dl class="xml"> |
| <dt> |
| cú pháp: |
| </dt> |
| |
| <dd> |
| <pre class="stx"> |
| <debug-overrides> |
| ... |
| </debug-overrides> |
| </pre> |
| </dd> |
| |
| <dt> |
| Có thể chứa: |
| </dt> |
| |
| <dd> |
| 0 hoặc 1 <code><a href="#trust-anchors"><trust-anchors></a></code> |
| </dd> |
| |
| <dt> |
| Mô tả: |
| </dt> |
| |
| <dd> |
| Ghi đè được thực hiện khi <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a> |
| là {@code "true"} thì thường là trường hợp dành cho các bản dựng không phát hành |
| được tạo ra bởi các IDE hoặc công cụ dựng. Các nguồn tin cậy được chỉ định trong {@code |
| debug-overrides} được thêm vào tất cả các cấu hình khác và ghim |
| chứng chỉ không được thực hiện khi chuỗi chứng chỉ của máy chủ sử dụng một trong |
| các nguồn tin cậy chỉ dành cho gỡ lỗi này. Nếu <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a> |
| là {@code "false"} thì phần này bị bỏ qua hoàn toàn. |
| </dd> |
| </dl> |
| |
| <h3 id="trust-anchors"><trust-anchors></h3> |
| <dl class="xml"> |
| <dt> |
| cú pháp: |
| </dt> |
| |
| <dd> |
| <pre class="stx"> |
| <trust-anchors> |
| ... |
| </trust-anchors> |
| </pre> |
| </dd> |
| |
| <dt> |
| Có thể chứa: |
| </dt> |
| |
| <dd> |
| Bất kỳ số nào của <code><a href="#certificates"><certificates></a></code> |
| </dd> |
| |
| <dt> |
| Mô tả: |
| </dt> |
| |
| <dd> |
| Đặt nguồn tin cậy cho các kết nối bảo mật: |
| </dd> |
| </dl> |
| |
| |
| <h3 id="certificates"><certificates></h3> |
| <dl class="xml"> |
| <dt>cú pháp:</dt> |
| <dd><pre class="stx"><certificates src=["system" | "user" | "<i>raw resource</i>"] |
| overridePins=["true" | "false"] /> |
| </pre></dd> |
| <dt>mô tả:</dt> |
| <dd>Bộ các chứng chỉ X.509 cho các phần tử {@code trust-anchors}.</dd> |
| |
| <dt>thuộc tính:</dt> |
| <dd><dl class="attr"> |
| <dt>{@code src}</dt> |
| <dd> |
| Nguồn của các chứng chỉ CA, có thể là một |
| <ul> |
| <li>id nguồn thô trỏ tới một tệp có chứa các chứng chỉ X.509. |
| Các chứng chỉ phải được mã hóa theo định dạng DER hoặc PEM. Trong trường hợp của các chứng chỉ |
| PEM thì tệp đó <em>không được</em> chứa dữ liệu không phải PEM khác như |
| các chú thích. |
| </li> |
| |
| <li>{@code "system"} cho các chứng chỉ CA hệ thống được cài đặt sẵn |
| </li> |
| |
| <li>{@code "user"} cho các chứng chỉ CA do người dùng thêm vào |
| </li> |
| </ul> |
| </dd> |
| |
| <dt>{@code overridePins}</dt> |
| <dd> |
| <p> |
| Xác định xem liệu các CA từ nguồn này có bỏ qua việc ghim chứng chỉ hay không. Nếu {@code |
| "true"} thì các chuỗi chứng chỉ mà xâu qua một trong các CA từ nguồn |
| này thì khi đó ghim sẽ không được thực hiện. Đây có thể là điều có ích cho các CA gỡ lỗi |
| hoặc để hỗ trợ cho người dùng tấn công MiTM hoạt động truyền gửi bảo mật của ứng dụng. |
| </p> |
| |
| <p> |
| Mặc định là {@code "false"} trừ khi được chỉ định trong một phần tử {@code debug-overrides} |
| , khi đó mặc định là {@code "true"}. |
| </p> |
| </dd> |
| </dl> |
| </dd> |
| |
| |
| <h3 id="pin-set"><pin-set></h3> |
| |
| <dl class="xml"> |
| <dt> |
| cú pháp: |
| </dt> |
| |
| <dd> |
| <pre class="stx"> |
| <pin-set expiration="date"> |
| ... |
| </pin-set> |
| </pre> |
| </dd> |
| |
| <dt> |
| Có thể chứa: |
| </dt> |
| |
| <dd> |
| Bất kỳ số nào của <code><a href="#pin"><pin></a></code> |
| </dd> |
| |
| <dt> |
| Mô tả: |
| </dt> |
| |
| <dd> |
| Một bộ các ghim khóa công khai. Để một kết nối bảo mật được tin cậy, một trong các |
| khóa công khai trong chuỗi tin cậy phải nằm trong bộ các ghim này. Xem |
| <code><a href="#pin"><pin></a></code> để biết định dạng của các ghim. |
| </dd> |
| |
| <dt> |
| Thuộc tính: |
| </dt> |
| |
| <dd> |
| <dl class="attr"> |
| <dt> |
| {@code expiration} |
| </dt> |
| |
| <dd> |
| Ngày tháng, theo định dạng {@code yyyy-MM-dd}, vào và sau thời điểm các ghim |
| hết hạn và do đó vô hiệu hóa ghim. Nếu thuộc tính này chưa được đặt thì khi đó các |
| ghim không hết hạn. |
| <p> |
| Việc hết hạn giúp phòng ngừa các vấn đề về khả năng kết nối trong ứng dụng làm cho không |
| nhận được các bản cập nhật cho bộ ghim, chẳng hạn như do người dùng |
| vô hiệu hóa các bản cập nhật ứng dụng. |
| </p> |
| </dd> |
| </dl> |
| </dd> |
| </dl> |
| |
| <h3 id="pin"><pin></h3> |
| <dl class="xml"> |
| <dt> |
| cú pháp: |
| </dt> |
| |
| <dd> |
| <pre class="stx"> |
| <pin digest=["SHA-256"]>base64 encoded digest of X.509 |
| SubjectPublicKeyInfo (SPKI)</pin> |
| </pre> |
| </dd> |
| |
| <dt> |
| Thuộc tính: |
| </dt> |
| |
| <dd> |
| <dl class="attr"> |
| <dt> |
| {@code digest} |
| </dt> |
| |
| <dd> |
| Thuật toán băm được sử dụng để tạo ghim. Hiện tại, chỉ có |
| {@code "SHA-256"} được hỗ trợ. |
| </dd> |
| </dl> |
| </dd> |
| </dl> |