blob: 797e198a15ab103ee1416a6b1951b6f6bf42a97b [file] [log] [blame]
page.title=Cu hình Bo mt mng
page.keywords=androidn,security,network
page.image=images/cards/card-nyc_2x.jpg
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Trong tài liu này</h2>
<ol>
<li><a href="#manifest">Thêm mt tp Cu hình Bo mt mng</a></li>
<li><a href="#CustomTrust">Tùy chnh các CA đáng tin cy</a>
<ol>
<li><a href="#ConfigCustom">Cu hình mt CA tùy chnh đáng tin cy</a></li>
<li><a href="#LimitingCas">Gii hn b CA đáng tin cy</a></li>
<li><a href="#TrustingAdditionalCas">Tin cy các CA b sung</a></li>
</ol>
</li>
<li><a href="#TrustingDebugCa">Các CA ch trong chế độ g li</a></li>
<li><a href="#UsesCleartextTraffic">Không s dng truyn gi văn bn chưa mã hóa</a></li>
<li><a href="#CertificatePinning">Ghim chng chỉ</a></li>
<li><a href="#ConfigInheritance">Hành vi Kế tha cu hình</a></li>
<li><a href="#FileFormat">Định dng Tp cu hình</a></li>
</ol>
</div>
</div>
<p>
Android N có tính năng Cu hình Bo mt mng
cho phép ng dng tùy chnh các cài đặt bo mt mng trong mt tp
cu hình khai báo an toàn mà không cn sa đổi mã ngun ng dng. Các cài đặt này có th
được cu hình cho các min c th và cho mt ng dng c thể. Các kh năng
chính ca tính năng này như sau:
</p>
<ul>
<li>
<b>Ngun tin cy tùy chnh:</b> Tùy chính các Nhà cung cp chng ch (CA)
nào được tin cy cho các kết ni bo mt ca mt ng dng. Ví
dụ, tin cy các chng ch t ký đặc bit hoc hn chế
b CA công khai mà ng dng tin cy.
</li>
<li>
<b>Ch khng chế khi g li:</b> G li các kết ni bo mt mt cách an toàn trong mt ng dng
mà không thêm ri ro cho cơ s cài đặt.
</li>
<li>
<b>Không s dng truyn gi văn bn chưa mã hóa:</b> Bo v các ng dng khi vic
vô tình s dng truyn gi văn bn chưa mã hóa.
</li>
<li>
<b>Ghim chng chỉ:</b> Gii hn kết ni bo mt ca ng dng
trong các chng ch đặc bit.
</li>
</ul>
<h2 id="manifest">Thêm mt Tp Cu hình Bo mt mng</h2>
<p>
Tính năng Cu hình Bo mt mng s dng mt tp XML làm nơi bn s ch định
các cài đặt cho ng dng ca mình. Bn phi b sung mt mc nhp trong bn kê khai ca
ng dng để tr đến tp này. Đon mã sau ca mt bn kê khai
minh ha cách to mc nhp này:
</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
...
&lt;app ...&gt;
&lt;meta-data android:name="android.security.net.config"
android:resource="@xml/network_security_config" /&gt;
...
&lt;/app&gt;
</pre>
<h2 id="CustomTrust">Tùy chnh các CA đáng tin cy</h2>
<p>
Mt ng dng có th mun tin cy mt b các CA tùy chnh thay vì mc định
ca nn tng. Nhng lý do ph biến nht cho điu này là:
</p>
<ul>
<li>Kết ni ti mt máy ch có nhà cung cp chng ch riêng (t ký,
được cp bi mt CA ni b ca công ty, v.v.).
</li>
<li>Gii hn b CA ch trong các CA mà bn tin cy thay vì mi
CA được cài đặt trước.
</li>
<li>Tin cy các CA b sung không được kèm theo trong h thng.
</li>
</ul>
<p>
Theo mc định, các kết ni bo mt (vd: TLS, HTTPS) t mi ng dng s tin cy
các CA ca h thng được cài đặt trước và các ng dng nhm mc tiêu mc API 23
(Android M) và thp hơn theo mc định cũng tin cy kho lưu tr CA được người dùng b sung. Mt
ng dng có th tùy chnh các kết ni ca riêng nó bng cách s dng {@code base-config} (dành cho
tùy chnh trên phm vi ng dng) hoc {@code domain-config} (tùy chnh
cho mi min).
</p>
<h3 id="ConfigCustom">Cu hình mt CA tùy chnh</h3>
<p>
Gi s bn mun kết ni ti máy ch ca mình có s dng các chng ch
SSL t ký hoc ti mt máy ch có chng ch SSL được cp bi mt CA không công khai
mà bn tin cy, chng hn như CA ni b ca công ty.
</p>
<p>
<code>res/xml/network_security_config.xml</code>:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;domain-config&gt;
&lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
&lt;trust-anchors&gt;
&lt;certificates src="@raw/my_ca"/&gt;
&lt;/trust-anchors&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<p>
Thêm chng ch CA t ký hoc không công khai theo định dng PEM hoc DER vào
{@code res/raw/my_ca}.
</p>
<h3 id="LimitingCas">Gii hn b CA đáng tin cy</h3>
<p>
Mt ng dng không mun tin cy mi CA được h thng tin cy có th
ch định b CA hn chế ca riêng nó để tin cy. Điu này s bo v
ng dng khi các chng ch la đảo được cp bi bt k CA nào khác.
</p>
<p>
Cu hình để gii hn b CA đáng tin cy cũng ging như <a href="#TrustingACustomCa">Tin cy mt CA tùy chnh</a> cho mt min c th ngoi tr
vic nhiu CA được cung cp trong tài nguyên.
</p>
<p>
<code>res/xml/network_security_config.xml</code>:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;domain-config&gt;
&lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
&lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
&lt;trust-anchors&gt;
&lt;certificates src="@raw/trusted_roots"/&gt;
&lt;/trust-anchors&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<p>
Thêm các CA đáng tin cy theo định dng PEM hoc DER vào {@code res/raw/trusted_roots}.
Lưu ý rng nếu s dng định dng PEM thì tp <em>chỉ</em> được cha d liu PEM
và không có thêm d liu văn bn. Bn cũng có th cung cp nhiu
phn t <a href="#certificates"><code>&lt;certificates&gt;</code></a>
thay vì mt phn tử.
</p>
<h3 id="TrustingAdditionalCas">
Tin cy các CA b sung
</h3>
<p>
Mt ng dng có th mun tin cy các CA b sung không được h thng tin cy,
điu này có th do h thng chưa thêm CA đó hoc mt CA không
đáp ng các yêu cu để đưa vào h thng Android. Mt
ng dng có th thc hin điu này bng cách ch định nhiu ngun chng ch cho mt
cu hình.
</p>
<p>
<code>res/xml/network_security_config.xml</code>:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;base-config&gt;
&lt;trust-anchors&gt;
&lt;certificates src="@raw/extracas"/&gt;
&lt;certificates src="system"/&gt;
&lt;/trust-anchors&gt;
&lt;/base-config&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<h2 id="TrustingDebugCa">Cu hình các CA để g li</h2>
<p>
Khi g li mt ng dng kết ni qua HTTPS thì bn có th mun
kết ni ti mt máy ch phát trin cc b không có chng ch
SSL dành cho máy ch thương mi ca bn. Để h tr cho trường hp này mà không cn
chnh sa mã ngun ng dng ca bn thì bn có th ch định các CA ch dùng cho g li
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} bng cách s dng {@code debug-overrides}. Thông thường các IDE và công c
dng s đặt c này t động đối vi các bn dng không dùng để phát hành.
</p>
<p>
Làm như vy an toàn hơn so vi mã điu kin thông thường bi, là điu kin
bo mt tiên quyết, các ca hàng ng dng không chp nhn các ng dng được đánh du
là h tr g li.
</p>
<p>
<code>res/xml/network_security_config.xml</code>:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;debug-overrides&gt;
&lt;trust-anchors&gt;
&lt;certificates src="@raw/debug_cas"/&gt;
&lt;/trust-anchors&gt;
&lt;/debug-overrides&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<h2 id="UsesCleartextTraffic">Không s dng truyn gi văn bn chưa mã hóa</h2>
<p>
Các ng dng có ý định kết ni ti các đim đích ch s dng các kết ni
bo mt có th b h tr truyn gi văn bn không mã hóa (bng giao thc
HTTP không mã hóa thay vì HTTPS) ti các đích đó. Tùy chn này giúp ngăn
các hi quy tim tàng trong ng dng do thay đổi trong các URL được cung cp bi các ngun
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ụ, mt ng dng có th đảm bo rng mi kết ni ti {@code
secure.example.com} luôn được thc hin qua HTTPS để bo v vic truyn gi d liu nhy cm
khi các mng có hi.
</p>
<p>
<code>res/xml/network_security_config.xml</code>:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;domain-config usesCleartextTraffic="false"&gt;
&lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<h2 id="CertificatePinning">Ghim chng chỉ</h2>
<p>
Thông thường thì mt ng dng s tin cy mi CA được cài đặt sn. Nếu bt k CA nào trong s này s
phát hành mt chng ch la đảo thì ng dng s gp phi ri ro t mt cuc tn công
MiTM. Mt s ng dng chn cách gii hn b chng ch được chúng chp nhn
bng cách gii hn b CA được ng dng tin cy hoc bng cách ghim chng chỉ.
</p>
<p>
Ghim chng ch được thc hin bng cách cung cp mt b chng ch theo mã hash ca
khóa công khai (SubjectPublicKeyInfo ca chng ch X.509). Mt chui
chng ch khi đó ch hp l nếu như chui chng ch có cha ít nht mt trong
các khóa công khai được ghim.
</p>
<p>
Lưu ý rng khi s dng ghim chng ch bn phi luôn kèm thêm mt khóa
d phòng để nếu bn b buc phi chuyn sang các khóa mi hoc thay đổi các CA (khi
ghim vào mt chng ch CA hoc mt chng ch trung gian ca CA đó) thì
kết ni ca ng dng s không b nh hưởng. Nếu không bn phi đưa ra mt
bn cp nht cho ng dng để khôi phc kh năng kết ni.
</p>
<p>
Ngoài ra, có th đặt thi gian hết hn cho các ghim, sau thi gian đó
s không tiến hành ghim được. Điu này giúp phòng nga các vn đề v kết ni trong
ng dng chưa được cp nht. Tuy nhiên, vic đặt thi gian hết hn
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>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;domain-config&gt;
&lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
&lt;pin-set expiration="2018-01-01"&gt;
&lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
&lt;!-- backup pin --&gt
&lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<h2 id="ConfigInheritance">Hành vi Kế tha cu hình</h2>
<p>
Các giá tr chưa được đặt trong mt cu hình c th s được kế tha. Hành vi này cho phép to ra các cu hình phc tp
hơn trong khi vn gi cho tp cu hình có th đọc được.
</p>
<p>
Nếu mt giá tr không được đặt trong mt mc nhp c th thì giá tr thuc mc nhp
bao quát hơn tiếp theo s được s dng. Các giá tr chưa được đặt trong {@code domain-config} s được
ly t phn t cha {@code domain-config} nếu như được lng, hoc t {@code
base-config} nếu không được lng. Các giá tr chưa được đặt trong {@code base-config} s s dng
các giá tr mc định ca nn tng.
</p>
<p>
Ví dụ: hãy xem xét trường hp tt c các kết ni ti min con ca {@code
example.com} phi s dng mt b CA tùy chnh. Ngoài ra, truyn gi văn bn không mã hóa ti
các min này được cho phép <em>tr khi</em> kết ni ti {@code
secure.example.com}. Bng cách lng cu hình cho {@code
secure.example.com} bên trong cu hình cho {@code example.com} thì
{@code trust-anchors} không cn phi được sao lp.
</p>
<p>
<code>res/xml/network_security_config.xml</code>:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;domain-config&gt;
&lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
&lt;trust-anchors&gt;
&lt;certificates src="@raw/my_ca"/&gt;
&lt;/trust-anchors&gt;
&lt;domain-config cleartextTrafficPermitted="false"&gt;
&lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
&lt;/domain-config&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
</p>
<h2 id="FileFormat">Định dng Tp cu hình</h2>
<p>
Tính năng Cu hình Bo mt mng s dng mt định dng tp XML.
Cu trúc chung ca tp này được th hin trong đon mu mã ngun sau:
</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;network-security-config&gt;
&lt;base-config&gt;
&lt;trust-anchors&gt;
&lt;certificates src="..."/&gt;
...
&lt;/trust-anchors&gt;
&lt;/base-config&gt;
&lt;domain-config&gt;
&lt;domain&gt;android.com&lt;/domain&gt;
...
&lt;trust-anchors&gt;
&lt;certificates src="..."/&gt;
...
&lt;/trust-anchors&gt;
&lt;pin-set&gt;
&lt;pin digest="..."&gt;...&lt;/pin&gt;
...
&lt;/pin-set&gt;
&lt;/domain-config&gt;
...
&lt;debug-overrides&gt;
&lt;trust-anchors&gt;
&lt;certificates src="..."/&gt;
...
&lt;/trust-anchors&gt;
&lt;/debug-overrides&gt;
&lt;/network-security-config&gt;
</pre>
<p>
Các phn sau s mô t cú pháp và các chi tiết khác ca định dng
tp này.
</p>
<h3 id="network-security-config">
&lt;network-security-config&gt;
</h3>
<dl class="xml">
<dt>
có th cha:
</dt>
<dd>
0 hoc 1 ca <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
Bt k s nào ca <code><a href=
"#domain-config">&lt;domain-config&gt;</a></code><br>
0 hoc 1 ca <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
</dd>
</dl>
<h3 id="base-config">
&lt;base-config&gt;
</h3>
<dl class="xml">
<dt>
cú pháp:
</dt>
</dl>
<pre class="stx">
&lt;base-config <a href=
"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
...
&lt;/base-config&gt;
</pre>
<dl class="xml">
<dt>
có th cha:
</dt>
<dd>
<code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
</dd>
<dt>
mô tả:
</dt>
<dd>
Cu hình mc định được s dng bi mi kết ni có đích đến không được
bao gm bi mt <a href="#domain-config"><code>domain-config</code></a>.
<p>
Bt k giá tr nào chưa được đặt s s dng các giá tr mc định ca nn tng. Cu hình
mc định cho các ng dng nhm mc tiêu API mc 24 tr lên:
</p>
<pre>
&lt;base-config usesCleartextTraffic="true"&gt;
&lt;trust-anchors&gt;
&lt;certificates src="system" /&gt;
&lt;/trust-anchors&gt;
&lt;/base-config&gt;
</pre>
Cu hình mc định cho các ng dng nhm mc tiêu API mc 23 tr xung:
<pre>
&lt;base-config usesCleartextTraffic="true"&gt;
&lt;trust-anchors&gt;
&lt;certificates src="system" /&gt;
&lt;certificates src="user" /&gt;
&lt;/trust-anchors&gt;
&lt;/base-config&gt;
</pre>
</dd>
</dl>
<h3 id="domain-config">&lt;domain-config&gt;</h3>
<dl class="xml">
<dt>cú pháp:</dt>
<dd>
<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
...
&lt;/domain-config&gt;</pre>
</dd>
<dt>Có th cha:</dt>
<dd>
1 hoc nhiu <code><a href="#domain">&lt;domain&gt;</a></code>
<br/>0 hoc 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
<br/>0 hoc 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
<br/>Bt k s nào ca <code>&lt;domain-config&gt;</code> được lồng</dd>
<dt>Mô tả</dt>
<dd>Cu hình được s dng cho các kết ni ti các đim đích c th theo như định nghĩa bi các phn t {@code domain}.
<p>Lưu ý rng nếu nhiu phn t {@code domain-config} cha mt đim đích thì cu hình có quy tc min trùng khp
c th nht (dài nht) s được s dng.</p></dd>
</dl>
<h3 id="domain">&lt;domain&gt;</h3>
<dl class="xml">
<dt>
cú pháp:
</dt>
<dd>
<pre class="stx">
&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
</pre>
</dd>
<dt>
Thuc tính:
</dt>
<dd>
<dl class="attr">
<dt>
{@code includeSubdomains}
</dt>
<dd>
Nếu {@code "true"} thì quy tc min này s trùng vi min đó và tt c
các min con, bao gm các min con ca min con, nếu không quy tc đó ch
áp dng cho các trùng khp tuyt đối.
</dd>
</dl>
</dd>
<dt>
Mô tả:
</dt>
</dl>
<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
<dl class="xml">
<dt>
cú pháp:
</dt>
<dd>
<pre class="stx">
&lt;debug-overrides&gt;
...
&lt;/debug-overrides&gt;
</pre>
</dd>
<dt>
Có th cha:
</dt>
<dd>
0 hoc 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
</dd>
<dt>
Mô tả:
</dt>
<dd>
Ghi đè được thc hin khi <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
là {@code "true"} thì thường là trường hp dành cho các bn dng không phát hành
được to ra bi các IDE hoc công c dng. Các ngun tin cy được ch định trong {@code
debug-overrides} được thêm vào tt c các cu hình khác và ghim
chng ch không được thc hin khi chui chng ch ca máy ch s dng mt trong
các ngun tin cy ch dành cho g li này. Nếu <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
là {@code "false"} thì phn này b b qua hoàn toàn.
</dd>
</dl>
<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
<dl class="xml">
<dt>
cú pháp:
</dt>
<dd>
<pre class="stx">
&lt;trust-anchors&gt;
...
&lt;/trust-anchors&gt;
</pre>
</dd>
<dt>
Có th cha:
</dt>
<dd>
Bt k s nào ca <code><a href="#certificates">&lt;certificates&gt;</a></code>
</dd>
<dt>
Mô tả:
</dt>
<dd>
Đặt ngun tin cy cho các kết ni bo mt:
</dd>
</dl>
<h3 id="certificates">&lt;certificates&gt;</h3>
<dl class="xml">
<dt>cú pháp:</dt>
<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
overridePins=["true" | "false"] /&gt;
</pre></dd>
<dt>mô tả:</dt>
<dd>B các chng ch X.509 cho các phn t {@code trust-anchors}.</dd>
<dt>thuc tính:</dt>
<dd><dl class="attr">
<dt>{@code src}</dt>
<dd>
Ngun ca các chng ch CA, có th là mt
<ul>
<li>id ngun thô tr ti mt tp có cha các chng ch X.509.
Các chng ch phi được mã hóa theo định dng DER hoc PEM. Trong trường hp ca các chng ch
PEM thì tp đó <em>không được</em> cha d liu không phi PEM khác như
các chú thích.
</li>
<li>{@code "system"} cho các chng ch CA h thng được cài đặt sn
</li>
<li>{@code "user"} cho các chng ch CA do người dùng thêm vào
</li>
</ul>
</dd>
<dt>{@code overridePins}</dt>
<dd>
<p>
Xác định xem liu các CA t ngun này có b qua vic ghim chng ch hay không. Nếu {@code
"true"} thì các chui chng ch mà xâu qua mt trong các CA t ngun
này thì khi đó ghim s không được thc hin. Đây có th là điu có ích cho các CA g li
hoc để h tr cho người dùng tn công MiTM hot động truyn gi bo mt ca ng dng.
</p>
<p>
Mc định là {@code "false"} tr khi được ch định trong mt phn t {@code debug-overrides}
, khi đó mc định là {@code "true"}.
</p>
</dd>
</dl>
</dd>
<h3 id="pin-set">&lt;pin-set&gt;</h3>
<dl class="xml">
<dt>
cú pháp:
</dt>
<dd>
<pre class="stx">
&lt;pin-set expiration="date"&gt;
...
&lt;/pin-set&gt;
</pre>
</dd>
<dt>
Có th cha:
</dt>
<dd>
Bt k s nào ca <code><a href="#pin">&lt;pin&gt;</a></code>
</dd>
<dt>
Mô tả:
</dt>
<dd>
Mt b các ghim khóa công khai. Để mt kết ni bo mt được tin cy, mt trong các
khóa công khai trong chui tin cy phi nm trong b các ghim này. Xem
<code><a href="#pin">&lt;pin&gt;</a></code> để biết định dng ca các ghim.
</dd>
<dt>
Thuc tính:
</dt>
<dd>
<dl class="attr">
<dt>
{@code expiration}
</dt>
<dd>
Ngày tháng, theo định dng {@code yyyy-MM-dd}, vào và sau thi đim các ghim
hết hn và do đó vô hiu hóa ghim. Nếu thuc tính này chưa được đặt thì khi đó các
ghim không hết hn.
<p>
Vic hết hn giúp phòng nga các vn đề v kh năng kết ni trong ng dng làm cho không
nhn được các bn cp nht cho b ghim, chng hn như do người dùng
vô hiu hóa các bn cp nht ng dng.
</p>
</dd>
</dl>
</dd>
</dl>
<h3 id="pin">&lt;pin&gt;</h3>
<dl class="xml">
<dt>
cú pháp:
</dt>
<dd>
<pre class="stx">
&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
</pre>
</dd>
<dt>
Thuc tính:
</dt>
<dd>
<dl class="attr">
<dt>
{@code digest}
</dt>
<dd>
Thut toán băm được s dng để to ghim. Hin ti, ch có
{@code "SHA-256"} được h trợ.
</dd>
</dl>
</dd>
</dl>