Ch−¬ng tr×nh KC-01:
Nghiªn cøu khoa häc
ph¸t triÓn c«ng nghÖ th«ng tin
vµ truyÒn th«ng
§Ò tµi KC-01-01:
Nghiªn cøu mét sè vÊn ®Ò b¶o mËt vµ
an toµn th«ng tin cho c¸c m¹ng dïng
giao thøc liªn m¹ng m¸y tÝnh IP
B¸o c¸o kÕt qu¶ nghiªn cøu
PhÇn mÒm cã sö dông chøng chØ sè
QuyÓn 8A: “Dïng chøng chØ sè víi c¸c dÞch vô
Web vµ Mail”
Hµ NéI-2004
B¸o c¸o kÕt qu¶ nghiªn cøu
PhÇn mÒm cã sö dông chøng chØ sè
QuyÓn 7A: “Dïng chøng chØ sè víi c¸c dÞch vô
Web vµ Mail”
Chñ tr× nhãm thùc hiÖn:
PGS. TS. Lª Mü Tó
Môc lôc
Ch−¬ng I. Giao thøc Secure Socket Layer 1
1. Giíi thiÖu 1
2-Giao thøc SSLv3 1
2.1-TÇng giao thøc SSLv3 Record 2
2.2-SSLv3 Handshake protocol 5
2.3-Change cipher spec vµ Alert protocol 9
Ch−¬ng II. Sö dông chøng chØ sè víi dÞch vô Web 12
1-Cµi ®Æt chøng chØ ®−îc cÊp cho tr×nh duyÖt 12
1.1-Cµi ®Æt chøng chØ cho tr×nh duyÖt Internet Explorer 12
1.1.1-B−íc 1: Cµi ®Æt tiÖn Ých trî gióp 12
1.1.2-B−íc 2: Cµi ®Æt chøng chØ cho Internet Explorer 13
1.2-Cµi ®Æt chøng chØ cho tr×nh duyÖt Netscape 21
2-CËp nhËt CTL vµ CRL tõ Public Database Server 28
3-Cµi ®Æt thiÕt lËp cÊu h×nh phÇn mÒm E-shop cã sö dông chøng chØ
®−îc cÊp trªn Apache server
29
3.1-Cµi ®Æt phÇn mÒm E-shop 29
3.2- ThiÕt lËp cÊu h×nh E-shop cã sö dông chøng chØ trªn Apache server 30
4-Sö dông https truy nhËp tíi E-shop 30
4.1- Sö dông tr×nh duyÖt Internet Explorer truy nhËp tíi E-Shop 30
4.1.1-Tr−êng hîp chøng chØ cña client vµ server ch−a bÞ huû bá 31
4.1.2-Tr−êng hîp mét trong hai chøng chØ bÞ huû bá 33
4.2- Sö dông tr×nh duyÖt Netscape truy nhËp tíi E-Shop 33
4.2.1-Tr−êng hîp chøng chØ cña client vµ server ch−a bÞ huû bá 33
4.2.2-Tr−êng hîp mét trong hai chøng chØ bÞ huû bá 36
Ch−¬ng III. Sö chøng chØ sè víi dÞch vô Mail 38
1. Giíi thiÖu 38
2. §−a chøng chØ sè vµo Outlook 38
3. Sö dông chøng chØ sè ®Ó x¸c thùc vµ m· ho¸ th− ®iÖn tö trªn
Outlook
48
4. CËp nhËt danh s¸ch c¸c chøng chØ ®· huû bá 57
Ch−¬ng I
Giao thøc Secure Socket Layer
1. Giíi thiÖu
Secure Sockets Layer (SSL) lµ mét giao thøc cã thÓ ®−îc ®Æt ë gi÷a giao thøc
tÇng m¹ng kÕt nèi ®Þnh h−íng tin t−ëng (TCP/IP) vµ tÇng giao thøc øng dông
(FTP, HTTP, telnet ...). SSL cung cÊp dÞch vô truyÒn th«ng cã b¶o mËt gi÷a client
vµ server b»ng viÖc cho phÐp client vµ server x¸c thùc lÉn nhau sö dông ch÷ ký sè
vµ b¶o mËt th«ng tin trao ®æi qua l¹i b»ng c¸ch m· hãa c¸c th«ng tin ®ã.
Giao thøc nµy ®−îc thiÕt kÕ ®Ó cã thÓ trî gióp mét lo¹t c¸c thuËt to¸n sö dông
cho viÖc m· hãa, hµm b¨m vµ ch÷ ký sè. Giao thøc SSL cã ba phiªn b¶n:
-SSLv2: ®©y lµ phiªn b¶n ®Çu tiªn cña giao thøc SSL do Netscape
Corporation thiÕt kÕ, ch−a cã trî gióp chain certificate.
-SSLv3: ®©y lµ phiªn b¶n SSL version 3.0 do Netscape Corporation thiÕt
kÕ, ®· cã trî gióp chain certificate vµ ®−îc suport cho tÊt c¶ c¸c tr×nh duyÖt phæ
th«ng.
-TLSv1: ®©y lµ giao thøc Transport Layer Security version 1.0, dùa trªn c¬
së cña SSLv3, ®−îc thiÕt kÕ bëi IETF (Internet Engineering Task Force) nh−ng
hiÖn nã ch−a ®−îc support cho tÊt c¶ c¸c tr×nh duyÖt th«ng dông (ch¼ng h¹n
Netscape lµ kh«ng cã giao thøc nµy).
Chó ý:
-Mét ®Æc ®iÓm quan träng cña SSLv3 vµ TLSv1 lµ cã trî gióp viÖc n¹p chuçi c¸c
certificate (certificate chain). Víi ®Æc ®iÓm ®−îc bæ sung nµy sÏ cho phÐp server
vµ client cã thÓ thùc hiÖn viÖc x¸c thùc lÉn nhau mµ cã thÓ ®èi t−îng thùc hiÖn
x¸c thùc kh«ng cÇn ph¶i cµi c¸c intermediate issuers.
-TLSv1 dùa trªn nÒn t¶ng lµ SSLv3 trong ®ã cã bæ sung phÇn block padding cho
c¸c thuËt to¸n m· khèi, chuÈn ho¸ thø tù c¸c message vµ bæ sung thªm c¸c th«ng
b¸o trong phiªn liªn l¹c.
-C¸c phiªn b¶n trªn còng nh− c¸c thuËt to¸n m· ho¸, thuËt to¸n trao ®æi kho¸,
hµm b¨m hoµn toµn cã thÓ ®−îc chØ ra cô thÓ khi thiÕt lËp cÊu h×nh sö dông SSL
cho Web server (Apache server), vµ mét sè tr×nh duyÖt (trong c¸c tr×nh duyÖt phæ
th«ng IE kh«ng cã thuéc tÝnh nµy).
Víi nhu cÇu thùc tÕ hiÖn nay SSLv2 Ýt ®−îc sö dông. Bªn c¹nh ®ã do cã sù t−¬ng
øng gi÷a SSLv3 vµ TLSv1, h¬n n÷a hiÖn t¹i trong thùc tÕ TLSv1 ch−a ®−îc tÝch
hîp cho mét sè tr×nh duyÖt phæ th«ng (Netscape ch¼ng h¹n) nªn trong phÇn nµy
chóng t«i chØ tr×nh chi tiÕt vÒ giao thøc SSLv3 (®èi víi TLSv1 hoµn toµn t−¬ng
tù).
2-Giao thøc SSLv3
Giao thøc SSLv3 gåm hai thµnh phÇn Handshake protocol vµ Record protocol.
SSLv3 Record protocol cung cÊp c¬ chÕ b¶o mËt víi c¸c thuËt to¸n m· ho¸ nh−
DES, RC4,... vµ lµ giao thøc kÕt nèi tin t−ëng víi viÖc sö dông hµm kiÓm tra
MAC trong qu¸ tr×nh trao ®æi d÷ liÖu. Cßn SSLv3 Handshake protocol thùc hiÖn
viÖc x¸c thùc ®èi t¸c, trao ®æi c¸c gi¸ trÞ secure sö dông cho SSLv3 Record
1
protocol. Toµn bé giao thøc SSLv3 vµ mèi liªn hÖ cña nã víi tÇng øng dông vµ
tÇng TCP cã thÓ m« t¶ nh− s¬ ®å d−íi ®©y:
H×nh 1.
D−íi ®©y chóng t«i sÏ tr×nh bµy tuÇn tù chi tiÕt c¸c tiÕn tr×nh ®−îc thùc hiÖn khi
sö dông giao thøc SSLv3.
2.1-TÇng giao thøc SSLv3 Record
Giao thøc SSLV3 Record lµ mét tÇng giao thøc. §èi víi mçi tÇng giao thøc nãi
chung, mét gãi d÷ liÖu sÏ bao gåm c¸c tr−êng ®é dµi, m« t¶ vµ néi dung d÷ liÖu.
SSLv3 Record nhËn d÷ liÖu cÇn göi tõ tÇng trªn ph©n nhá thµnh tõng block, nÐn
d÷ liÖu, bæ sung d÷ liÖu kiÓm tra, m· ho¸ vµ göi. Khi nhËn d÷ liÖu vÒ tiÕn tr×nh
®−îc thùc hiÖn ng−îc l¹i: gi¶i m·, kiÓm tra, gì nÐn vµ s¾p xÕp l¹i råi göi lªn tÇng
trªn. Cô thÓ cã thÓ diÔn gi¶i c¸c giai ®o¹n trong giao thøc nµy nh− sau:
TCP Frame
Frame Frame Frame
Application Data
Ph©n m¶nh d÷ liÖu
NÐn d÷ liÖu
M· ho¸ vµ MAC
ChuyÓn xuèng tÇng TCP
H×nh 2.
Trong ®ã Application data cã thÓ lµ d÷ liÖu cña SSL handshake protocol, SSL
change Cipher Spec, SSL Alert protocol hoÆc d÷ liÖu cña c¸c øng dông kh¸c nh−
HTTP, Telnet, ... §Ó ph©n biÖt ®−îc tõng lo¹i d÷ liÖu ®ã trong mçi frame d÷ liÖu
2
cña SSL record ®Òu cã phÇn header ®Ó ph©n biÖt. Cô thÓ mçi frame d÷ liªu cã cÊu
truc nh− sau:
enum {
change_cipher_spec(20), alert(21),
handshake(22), application_data(23), (255)
}ContentType;
struct{
ContentType type;
ProtocolVersion version;
uint16 length;
opaque fragment[SSLPlaintext.length];
} SSLPlaintext;
Trong ®ã:
type chÝnh lµ phÇn header chØ ra lo¹i d÷ liÖu g×.
version phiªn b¶n SSL.
length ®é dµi d÷ liÖu thËt theo byte (lín nhÊt lµ 214-1).
fragment d÷ liÖu.
• NÐn vµ gì nÐn d÷ liÖu:
Sau khi nhËn ®−îc d÷ liÖu tõ tÇng trªn, giao thøc SSL record sÏ thiÕt lËp nªn c¸c
frame d÷ liÖu cã cÊu tróc lµ c¸c SSLPlaintext. C¸c frame nµy sÏ ®−îc thùc hiÖn
nÐn b»ng thuËt to¸n nÐn ®−îc thiÕt lËp bëi handshake protocol t¹o thµnh c¸c
frame d÷ liÖu t−¬ng øng ®−îc goi lµ SSLCompressed cã cÊu tróc nh− sau:
struct{
ContentType type;
ProtocolVersion version;
uint16 length;
opaque fragment[SSLCmpressed.length];
} SSLCompressed;
Trong ®ã
type vµ version gi÷ nguyªn tõ SSLPlaintext.
length ®é dµi SSLCompressed.fragment theo byte, kh«ng qu¸ 214-1 +1024
(tøc lµ thuËt to¸n nÐn kh«ng ®−îc lµm t¨ng thªm ®é dµi cña d÷ liÖu thËt qu¸ 1024
byte).
fragment d÷ liÖu nÐn.
T−¬ng øng khi gì nÐn d÷ liÖu nÕu ®é dµi d÷ liÖu nhËn ®−îc l¬n h¬n 214-1 bytes
th× sÏ xuÊt hiÖn th«ng b¸o lçi.
• Thùc hiÖn m· ho¸ vµ MAC
§Ó b¶o vÖ d÷ liÖu trªn ®−êng truyÒn giao thøc SSL sö dông thuËt to¸n m· ho¸ vµ
MAC ®−îc ®Þnh nghi· trong CipherSpec hiÖn t¹i. §èi víi mçi phiªn liªn l¹c sau
khi thùc hiÖn xong giai ®o¹n handshake hai bªn sÏ thiÕt lËp ®−îc thuËt to¸n m·
ho¸ chung, vµ tÝnh ®−îc c¸c thuéc tÝnh cho hµm MAC. ThuËt to¸n m· ho¸ vµ
hµm MAC sÏ thùc hiÖn biÕn ®æi cÊu tróc SSLCompressed thµnh SSLCiphertext.
Khi nhËn ®−îc SSLCiphertext qu¸ tr×nh gi¶i m· sÏ thùc hiÖn thao t¸c ng−îc l¹i.
SSLCiphertext cã cÊu tróc nh− sau:
struct{
ContentType type;
3
ProtocolVersion version;
uint16 length;
select (CipherSpec.cipher_type){
case stream: GenericStreamCipher;
case block: GenericBlockCipher;
}fragment;
}SSLCiphertext;
Trong ®ã:
type, version gi÷ nguyªn tõ SSLCompressed.
length ®é dµi theo byte cña SSLCiphertext.fragment (kh«ng qu¸
214+2048).
fragment d÷ liÖu sau khi m· ho¸ SSLCompressed.fragment, bao gåm c¶
MAC.
-Tr−êng hîp kh«ng m· ho¸ hoÆc dïng thuËt to¸n m· dßng:
stream-cipher struct{
opaque content[SSLCompressed.length];
opaque MAC[CipherSpec.hash_size];
}GenericStreamCipher;
stream_cipher: tªn thuËt to¸n m· ho¸.
Víi MAC ®−îc sinh nh− sau:
hash(MAC_write_secret+pad_2+
hash(MAC_write_secret+pad_1+seq_num+
SSLCompressed.type+SSLCompressed.length+
SSLCompressed.fragment))
pad_1 gi¸ trÞ 0x36 ®−îc lÆp l¹i 48 lÇn víi MD5, 40 lÇn víi SHA.
pad_2 gi¸ trÞ 0x5c ®−îc lÆp l¹i 48 lÇn víi MD5, 40 lÇn víi SHA.
seq_num sè thø tù cña frame ®ang xö lý.
hast tªn thñ tôc thùc hiÖn hµm hash ®−îc ®Þnh nghÜa trong CihperSpec.
Chó ý:
Hµm hash ®−îc thùc hiÖn tr−íc khi m· ho¸ tøc lµ khi thñ tôc m· ho¸ thùc hiÖn d÷
liÖu ®Çu vµo cã c¶ kÕt qu¶ cña hµm hash.
-Tr−êng hîp m· khèi:
Víi tr−êng hîp m· khèi cÊu tróc cña GenericBlockCipher nh− sau:
block_cipher struct{
opaque content[SSLCompressed.length];
opaque MAC[CipherSpec.hash_size];
uint8 padding[GenericBlockCipher.padding_length];
uint8 padding_length;
} GenericBlockCipher;
padding bæ sung ®Ó ®é dµi cña plaintext chia hÕt cho ®é dµi cña block m·
khèi ®−îc dïng.
4
padding_length ®é dµi cña padding.
Chó ý:
-Còng nh− ®èi víi tr−êng hîp dïng m· dßng, ®èi víi tr−êng hîp dïng m· khèi
d÷ liÖu ®Çu vµo khi m· mét frame bao gåm c¶ kÕt qu¶ hµm MAC.
-Gi¸ trÞ khëi ®Çu cña IV dïng cho frame d÷ liÖu ®Çu tiªn ®−îc t¹o trong qu¸ tr×nh
thiÕt lËp phiªn liªn l¹c (Handshake), cßn khi thùc hiÖn m· ho¸ c¸c frame tiÕp
theo, IV sÏ lµ block cuèi cïng cña ciphertext cña frame tr−íc nã.
§èi víi c¸c lo¹i d÷ liÖu cña c¸c øng dông sö dông SSL nh− HTTP, Telnet, ...
chung ta kh«ng quan t©m. D−íi ®©y chóng t«i sÏ tr×nh bµy chi tiÕt ®Þnh d¹ng cña
c¸c lo¹i d÷ liÖu trong giai ®o¹n thiÕt lËp phiªn liªn l¹c (Handshake, change
Cipher Spec, Alert protocols).
2.2-SSLv3 Handshake protocol
C¸c tham sè mËt m· liªn quan ®Õn mét phiªn liªn l¹c ®−îc thùc hiÖn
th«ng qua SSLv3 Handshake Protocol, nã n»m ngay bªn trªn SSL Record Layer.
Khi SSL client vµ SSL server b¾t ®Çu mét phiªn liªn l¹c chóng cÇn thèng nhÊt vÒ
phiªn b¶n cña giao thøc sÏ ®−îc dïng, lùa chän thuËt to¸n m· ho¸ cho phiªn liªn
l¹c, cã thÓ cã hoÆc kh«ng viÖc x¸c thùc lÉn nhau, vµ sö dông thuËt to¸n m· ho¸
kho¸ c«ng khai ®Ó sinh kho¸ chung cho phiªn liªn l¹c ®ã.
Cã thÓ m« pháng giai ®o¹n thùc hiÖn thiÕt lËp phiªn liªn l¹c bëi s¬ ®å d−íi ®©y:
ServerClient
Change CipherSuit vµ kÕt thóc giai
®o¹n Handshake
Client göi certificate nÕu ®−îc yªu
cÇu
Server göi certificate vµ yªu cÇu
Client göi l¹i certificate nÕu ®−îc
thiÕt lËp x¸c thùc client
ThiÕt lËp protocol version, ID phiªn,
thuËt to¸n m· ho¸, ph−¬ng ph¸p
nÐn, trao ®æi gi¸ trÞ random
Finished
ChangeCipherSpec
Finished
ChangeCipherSpec
Certificate Verify
Certificate
ServerHelloDone
Certificate Request
Certificate
ServerHello
ClientHello
TÊt c¶ c¸c messages trao ®æi qua l¹i gi÷a server vµ client ph¶i ®−îc biÓu diÔn
theo mét cÊu tróc ®Þnh tr−íc. §Þnh d¹ng cña cÊu tróc d÷ liÖu trong giai ®o¹n
handshake nh− sau:
5
enum {
hello_request(0),client_hello(1),server_hello(2),certificate(11),
server_key_exchange(12),certificate_request(13),
server_hello_done(14),certificate_verify(15),
client_key_exchange(16),finished(20),(255)
}
struct {
HandshakeType mstype;
uint24 length;
select (HandshakeType) {
case hello_request: HelloRequest;
case client_hello: ClientHello;
case server_hello: ServerHello;
case certificate: Certificate;
case server_key_exchange: ServerKeyExchange;
case certificate_request: CertificateRequest;
case server_hello_done: ServerHelloDone;
case certificate_verify: CertificateVerify;
case client_key_exchange: ClientKeyExchange;
case finished: Finished;
}
Cô thÓ qu¸ tr×nh thùc hiÖn SSLv3 Handshake qua c¸c b−íc trao ®æi d÷ liÖu
gi÷a client/server nh− sau:
• Hello Messages.
-Khi mét client cã nhu cÇu kÕt nèi tíi server, server sÏ göi mét message gäi lµ
Hellorequest tíi client ®ã. D−íi ®©y lµ ®Þnh d¹ng cña gãi Hellorequest:
struct { } Hello;
-NhËn ®−îc helllorequest, Client göi clienthello gåm: protocol version, mét gi¸
trÞ random, Session ID, danh s¸ch c¸c thuËt to¸n m· ho¸, danh s¸ch c¸c mode
nÐn d÷ liÖu. ®Þnh d¹ng cña gãi clienthello:
struct {
uint32 gmt_unix_time;
opaque random_bytes[28];
}
opaque SesionID;
uint8 CipherSuite[2];
enum {null(0),(255)} CompressionMethod;
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites;
CompressionMethod compression_methods;
} ClientHello;
Trong ®ã:
random_bytes: 28 byte sinh tõ bé sinh random.
6
gmt_unix_time: thêi gian hiÖn hµnh.
client_version: phiªn b¶n SSL clietn dïng.
session_id: sè ID cña phiªn liªn l¹c
cipher_suites: danh s¸ch c¸c thuËt to¸n m· ho¸ client cã.
compression_methods: danh s¸ch c¸c thuËt to¸n nÐn client cã.
-Sau khi nhËn ®−îc clienthello, server sÏ göi tr¶ lêi b»ng gãi d÷ liÖu gäi lµ
serverhello gåm protocol version, gi¸ trÞ sinh ngÉu nhiªn, Session ID, danh s¸ch
c¸c thuËt to¸n m· ho¸ trong danh s¸ch clienthello mµ nã cã vµ c¸c chÕ ®é nÐn.
§Þnh d¹ng cña gãi ServerHello:
struct {
ProtocolVersion server_version;
Random random;
SesionID sesion_id;
CipherSuite cipher_suite;
CompressionMethod compression_method;
}ServerHello
Trong ®ã mét sè tham sè cÇn chó ý sau:
cipher_suites: mét thuËt to¸n m· ho¸ ®−îc chän tõ danh s¸ch c¸c thuËt
to¸n cña client göi sang.
compression_methods: mét thuËt to¸n nÐn ®−îc chän trong c¸c thuËt to¸n
client göi sang.
• Server Certificate
Server göi tiÕp server certificate (cã c¶ danh s¸ch c¸c chain certificate, còng cã
thÓ lµ null trong tr−êng hîp server kh«ng cã certificate). §Þnh d¹ng cña gãi
Certificate:
opaque ASN.1Cert
struct {
ASN1.Cert certificate_list;
}Certificate;
• Server Key Exchange message
Trong tr−êng hîp kh«ng cã certificate, hoÆc cã certificate nh−ng chØ sö dông ®Ó
ký (DSS certificate, signing-only RSA certificate) hoÆc FORTEZZA KEA key
exchange ®−îc dïng, server sÏ göi ServerKeyExchange:
struct{
select(KeyExchangeAlgorithm){
case diffie_hellman:
ServerDHParams params;
Signature signature_params;
case rsa:
ServerRSAParams params;
Signature signature_params;
case fortezza_kea:
ServerFortezzaParams params;
};
7
}ServerKeyExchange;
Chó ý:
-BiÕn params lµ mét kiÓu cÊu tróc trong ®ã l−u c¸c tham sè thùc hiÖn thùc hiÖn
mét thuËt to¸n trao ®æi kho¸ c«ng khai nµo ®ã. Ch¼ng h¹n víi Diffie-Hellman
params gåm p, g, vµ tham sè kho¸ c«ng khai cña server g^x mod p.
-Signature ë ®©y chØ lµ mét cÊu tróc chØ ra thuËt to¸n b¨m vµ kÕt qu¶ sö dông
hµm b¨m c¸c gi¸ trÞ random cña client, server vµ params cña server. Ch¼ng h¹n
víi dsa:
Signature lµ SHA(ClientHello.random + ServerHello.random +
ServerParams).
• Certificate Request
Sau ®ã Server sÏ göi tiÕp CertificateRequest víi ®Þnh d¹ng nh− sau:
struct {
ClientCertificateType certificate_types ;
DistinguishedName certificate_authorities ;
} CertificateRequest;
Trong ®ã ClientCertificateType liÖt kª c¸c kiÓu certificate (rsa_sign, dss_sign, ...)
mµ server cã thÓ chÊp nhËn. DistinguishedName lµ danh s¸ch c¸c DN cña c¸c
certificate ®−îc server chÊp nhËn lµ certificate authority (CA certificate).
• Server hello done
§©y lµ message th«ng b¸o hÕt giai ®o¹n göi serverhello, ®Þnh d¹ng cña goi nµy
nh− sau:
struct{ } ServerHelloDone;
• Client certificate
Client chØ ®−îc phÐp göi gãi d÷ liÖu nµy sau khi ®· nhËn ®−îc gãi
ServerHelloDone vµ nã còng chØ ®−îc göi nÕu server cã yªu cÇu certificate. NÕu
kh«ng cã mét certificate nµo t−¬ng øng víi mét trong c¸c kiÓu certificate, vµ do
mét CA nµo ®ã trong CertificateRequest server göi cho th× client sÏ göi th«ng
b¸o no_certificate, khi ®ã tuú thuéc vµo viÖc cã yªu cÇu hay kh«ng yªu cÇu x¸c
thùc client mµ server ®−a ra khuyÕn c¸o hoÆc b¸o lçi trong qu¸ tr×nh handshake.
Tr−êng hîp nÕu client cã certificate nã sÏ ®−îc göi trong gãi cã ®Þnh d¹ng
certificate chóng t«i ®· nªu ë trªn.
• Client key exchange message
Gãi nµy ®−îc göi tõ client víi ®Þnh d¹ng nh− sau:
struct {
select (KeyExchangeAlgorithm) {
case rsa: EncryptedPreMasterSecret;
case difie_hellman: ClientDiffieHellmanPublic;
case fortezza_kea: FortezzaKeys;
}
}ClientKeyExchange;
Trong ®ã:
8
- NÕu rsa ®−îc chän EncryptedPreMasterSecret sÏ lµ kÕt qu¶ m· ho¸ kho¸ c«ng
khai RSA (víi c¸c tham sè kho¸ cña server) cña ®Çu vµo lµ 48 byte (46 byte
random sinh bëi client, 2 byte chØ version cao nhÊt cña giao thøc mµ client
®−îc support)
- NÕu DH ®−îc chän, ClientDiffieHellmanPublic lµ thµnh phÇn c«ng khai cña
client (g^y mod p).
- NÕu fortezza_kea ®−îc chän, FortezzaKey lµ mét cÊu tróc chØ ra ®Çy ®ñ c¸c
thµnh cÇn cho cho viÖc thiÕt lËp kho¸ riªng cña phiªn liªn l¹c ®ã.
• Certificate verify
§©y lµ gãi d÷ liÖu th«ng b¸o qu¸ tr×nh x¸c thùc lÉn nhau gi÷a client vµ server.
• Finished
KÕt thóc giai ®o¹n Handshake (gãi d÷ liÖu nµy chØ ®−îc trao ®æi ngay sau khi
qu¸ tr×nh thèng nhÊt thuËt to¸n m· ho¸ kÕt thóc).
2.3-Change cipher spec vµ Alert protocol
• Change cipher spec protocol
Giao thøc nµy chØ bao gåm mét message trong ®ã thùc hiÖn chøc n¨ng th«ng b¸o
viÖc thiÕt lËp c¸c thuéc tÝnh mËt m· cho phiªn liªn l¹c ®· hoµn thµnh. Message
nµy chØ cã mét byte duy nhÊt víi gi¸ trÞ lµ 1.
struct{
enum{change_cipher_Spec(1),(255)} type;
}ChangeCipherSpec;
Change cipher spec message ®−îc göi tõ c¶ m¸y client lÉn m¸y server ®Ó th«ng
b¸o cho bªn nhËn biÕt b¾t ®Çu tõ c¸c frame d÷ liÖu tiÕp theo sÏ ®−îc m· ho¸ bëi
CipherSpec vµ kho¸ võa thiÕt lËp ®−îc. Client göi message ngay sau khi göi xong
KeyExchange message, cßn server göi ngay sau khi nhËn vµ xö lý xong
KeyExchange tõ client.
• Alert protocol
Mét trong nh÷ng kiÓu d÷ liÖu ®−îc suport bëi SSL record layer lµ kiÓu alert
(message th«ng b¸o). C¸c alert message truyÒn t¶i c¸c th«ng b¸o lçi trong qu¸
tr×nh thiÕt lËp còng nh− trao ®æi d÷ liÖu cña mét phiªn liªn l¹c. Còng nh− c¸c lo¹i
message kh¸c, alert message còng ®−îc m· ho¸ vµ nÐn.
CÊu tróc cña alert message nh− sau:
enum {warning(1),fatal(2),(255)} AlertLevel;
enum {
close_notify(0),
unexpected_message(10),
bad_record_mac(20),
decompression_failure(30),
handshake_failure(40),
no_certificate (41),
bad_certificate(42),
unsuported_certificate(43),
certificate_revoked(44),
9
certificate_expired(45),
certificate_unknow(46),
illegal_parameter(47),
(255)
} AlertDescription;
struct {
AlertLevel level;
AlertDescription description;
} Alert;
Qu¸ tr×nh tÝnh kho¸ cho phiªn liªn l¹c:
NÕu mäi b−íc trong qu¸ tr×nh handshake ®Òu tr«i ch¶y, server/client sÏ thùc hiÖn
xong b−íc x¸c thùc lÉn nhau vµ hai bªn thiÕt lËp ®−îc thuËt to¸n m· ho¸, thuËt
to¸n MAC vµ gi¸ trÞ "mÇm kho¸" chung sö dông cho phiªn liªn l¹c ®ã.
C¸c thuéc tÝnh mËt m· sau khi thiÕt lËp gi÷a hai m¸y sÏ ®−îc l−u vµo CipherSpec
dïng trong suèt phiªn liªn l¹c ®ã. CÊu tróc cña CipherSpec nh− sau:
enum {stream,block} CipherType;
enum {true, false} IsExportable;
enum {nul, rc4, rc2, des, 3des, des40, fortezza} BulkCipherAlgorithm;
enum {null, md5, sha1} MACAlgorithm;
struct {
BulkCipherAlgorithm bulk_cipher_algorithm;
MACAlgorithm mac_algorithm;
CipherType cipher_type;
IsExportable is_exportable;
uint8 hash_size;
uint8 key_masterial;
uint8 IV_size;
} CipherSpec;
Gi¸ trÞ mÇm kho¸ ®−îc ®Æt vµo biÕn pre_master_secret (tr−êng hîp thuËt to¸n
trao ®æi kho¸ RSA ®−îc dïng, gi¸ trÞ mÇm kho¸ ®−îc server gi¶i m· tõ biÕn
EncryptPreMasterSecret, nÕu thuËt to¸n DH ®−îc chän gi¸ trÞ mÇm kho¸ sÏ lµ
g^x.y mod p, ...), tõ gi¸ trÞ kho¸ ban ®Çu nµy qu¸ tr×nh tÝnh kho¸ cho phiªn liªn
l¹c ®−îc thùc hiÖn trªn mçi m¸y nh− sau:
-ChuyÓn pre_master_key thµnh master_secret b»ng c¸ch:
master_secret=MD5(pre_master_secret + SHA('A' +pre_master_secret +
ClientHello.random + ServerHello.random)) +
MD5(pre_master_secret + SHA('BB' +pre_master_secret +
ClientHello.random + ServerHello.random)) +
MD5(pre_master_secret + SHA('CCC' +pre_master_secret +
ClientHello.random + ServerHello.random)) ;
-ChuyÓn ®æi tõ master_secret thµnh keys vµ MAC secrets: tõ master_secret sÏ
®−îc b¨m thµnh c¸c gi¸ trÞ kho¸, IV vµ MAC secret sö dông cho c¸c thuéc tÝnh
®−îc chØ ra trong CipherSpec hiÖn t¹i.
key_block=
MD5(master_secret + SHA('A' +pre_master_secret +
ClientHello.random + ServerHello.random)) +
10
MD5(master_secret + SHA('BB' +pre_master_secret +
ClientHello.random + ServerHello.random)) +
MD5(master_secret + SHA('CCC' +pre_master_secret +
ClientHello.random + ServerHello.random)) + ....;
cho ®Õn khi key_block ®ñ cho nh÷ng thuéc tÝnh ®−îc chØ trong CipherSpec, tøc lµ
®ñ ®Ó lÊp ®Çy c¸c biÕn:
client_write_MAC_secret[CipherSpec.hash_size]
server_write_MAC_secret[CipherSpec.hash_size]
client_write_key[CipherSpec.key_masterial]
server_write_key[CipherSpec.key_masterial]
client_write_IV[CipherSpec.IV_size]
server_write_IV[CipherSpec.IV_size]
NÕu ®èi víi c¸c thuËt to¸n m· ho¸ none-export, th× qu¸ tr×nh tÝnh kho¸, IV vµ
MAC secret ®Õn ®©y lµ kÕt thóc. Cßn ®èi víi c¸c thuËt to¸n m· ho¸ exportable th×
qu¸ tr×nh tÝnh kho¸ cÇn thªm mét b−íc n÷a:
filnal_client_write_key=MD5(client_write_key +
ClientHello.random +
ServerHello.random));
filnal_server_write_key=MD5(server_write_key +
ClientHello.random +
ServerHello.random));
vµ IV th× ®−îc tÝnh nh−:
client_write_IV=MD5(ClientHello.random + ServerHello.random);
server_write_IV=MD5(ClientHello.random + ServerHello.random);
11
Ch−¬ng II
Sö dông chøng chØ sè víi dÞch vô Web
Sau khi ®−îc cÊp chøng chØ ng−êi sö dông cã thÓ dïng nã cho nhiÒu môc ®Ých
kh¸c nhau. Trong ch−¬ng nµy chóng t«i tr×nh bµy viÖc sö dông chøng chØ ®−îc cÊp
trªn øng dông Web. Cô thÓ lµ viÖc sö dông mét chøng chØ thiÕt lËp mét øng dông
th−¬ng m¹i ®iÖn tö ë møc ®Ò m« (E-shop) trªn Apache server ®Ó mäi ng−êi sö
dông chØ cã thÓ truy cËp ®Õn nã qua https, vµ cµi ®Æt mét chøng chØ vµo tr×nh duyÖt
Internet Explorer trªn m«i tr−êng Windows, mét chøng chØ cho Netscape trªn
Linux, ®Ó ng−êi sö dông cã thÓ dïng mét trong hai tr×nh duyÖt trªn truy cËp ®Õn E-
Shop b»ng c¸ch sö dông https.
1-Cµi ®Æt chøng chØ ®−îc cÊp cho tr×nh duyÖt
1.1-Cµi ®Æt chøng chØ cho tr×nh duyÖt Internet Explorer
1.1.1-B−íc 1: Cµi ®Æt tiÖn Ých trî gióp
C¸c chøng chØ hÖ thèng MyCA cÊp cho ng−êi dïng hiÖn t¹i ®Òu sö dông thuËt to¸n
ch÷ ký sè RSA víi sè modulo 1024 bÝt (®©y còng chÝnh lµ ®é dµi kho¸ c«ng khai
cña ng−êi dïng), tuy nhiªn ®èi víi øng dông Internet Explorer 5.0 (hoÆc phiªn b¶n
thÊp h¬n) chØ cho phÐp cµi ®Æt c¸c chøng chØ víi ®é dµi kho¸ c«ng khai kh«ng qu¸
512 bÝt. V× vËy ®Ó cã thÓ cµi ®Æt ®−îc chøng chØ ®· ®−îc cÊp cho tr×nh duyÖt IE,
ng−êi sö dông cÇn cµi ®Æt phÇn mÒm hç trî tr−íc. TiÖn Ých thùc hiÖn viÖc cµi ®Æt
phÇn mÒm hç trî lµ tÖp ie5dom.exe ®−îc cung cÊp cïng ch−¬ng tr×nh sinh kho¸
(trong ®Üa mÒm thø nhÊt).
§Ó cµi ®Æt ng−êi sö dông chØ cÇn nh¾p ®óp chuét vµo tÖn tÖp ie5dom.exe, khi ®ã
trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 1.
H×nh 1
Ng−êi sö dông chän nót lÖnh "Yes", qu¸ tr×nh n©ng cÊp ®−îc tiÕn hµnh vµ kÕt thóc
khi trªn mµn h×nh xuÊt hiÖn th«ng b¸o nh− h×nh 2.
H×nh 2
12
Ng−êi sö dông chän nót lÖnh "Yes" ®Ó kÕt thóc qu¸ tr×nh cµi ®Æt, m¸y tÝnh sÏ ®−îc
khëi ®éng l¹i ®Ó tiÖn Ých ®· cµi cã hiÖu lùc.
1.1.2-B−íc2: Cµi ®Æt chøng chØ cho Internet Explorer
Gi¶ sö ng−êi sö dông ®−îc cÊp chøng chØ ®−íi ®Þnh d¹ng PKCS12 lµ tÖp
2000001.p12. §Ó cµi ®Æt chøng chØ cho Internet Explorer, ng−êi sö dông chän vµo
tÖp nµy, råi nhÊn chuét ph¶i.
H×nh 3
Chän chøc n¨ng "Install PFX", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 4.
13
H×nh 4
Ng−êi sö dông chän "Next", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 5.
H×nh 5
14
Ng−êi sö dông chän "Next", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 6.
H×nh 6
Ng−êi sö dông nhËp mËt khÈu (lµ mËt khÈu do trung t©p cung cÊp khi trung t©m
CA thùc hiÖn viÖc chuyÓn ®æi ®Þnh d¹ng cña chøng chØ tr−íc khi cÊp cho ng−êi sö
dông). Chän "Next", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 7.
15
H×nh 7
Ng−êi sö dông chän "Next", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 8.
H×nh 8
16
Ng−êi sö dông chän "Finish", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 9 (cã
thÓ ph¶i ®îi trong Ýt gi©y, tïy thuéc vµo tèc ®é m¸y tÝnh).
H×nh 9
Ng−êi sö dông chän "Yes", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i th«ng b¸o qu¸
tr×nh cµi ®Æt chøng chØ ®· kÕt thóc.
H×nh 10
Sau khi cµi ®Æt nÕu ng−êi sö dông më tr×nh duyÖt IE, chän menu /Tools/Internet
Options, chän tab "contents" råi chän nót lÖnh "Certificate" sÏ thÊy xuÊt hiÖn
chøng chØ võa ®−îc cµi ®Æt trong môc
17
H×nh 11
Muèn xem l¹i th«ng tin vÒ chøng chØ cña m×nh ng−êi sö dông chän nót lÖnh
"View", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 12.
18
H×nh 12
Cïng víi viÖc cµi ®Æt chøng chØ cña ng−êi sö dông, c¸c chøng chØ cña CA (khi sö
dông m« h×nh chain CA) còng ®ång thêi ®−îc cµi ®Æt, nÕu chän tab "Trust Root
Certificate Authorities" sÏ thÊy xuÊt hiÖn RootCA ph¸t hµnh ra chøng chØ cña
ng−êi sö dông nh− h×nh 13 (ë ®©y chøng chØ cña ng−êi sö dông ®−îc RootCA ký
nªn trong danh s¸ch chØ cã mét CA ®−îc cµi ®Æt ®ã lµ Root CA).
19
H×nh 13
Néi dung chøng chØ cña Root CA sÏ ®−îc l−u vµo Registry (trong môc
/system/certificates/Root/Certificate).
Sau khi cµi ®Æt xong c¸c chøng chØ, ng−êi sö dông cÇn thiÕt lËp cÊu h×nh cho IE:
Chän menu Tools/Internet Options/Advanced, hép héi tho¹i xuÊt hiÖn nh− h×nh 14.
20
H×nh 14
Trong môc "Settings" chän "Use SSL 3.0" (hoÆc "Use TLS 1.0"), råi nhÊn "OK".
1.2-Cµi ®Æt chøng chØ cho tr×nh duyÖt Netscape
Qu¸ tr×nh cµi ®Æt chøng chØ cho Netscape theo c¸c b−íc sau:
-Trªn menu cña tr×nh duyÖt Netscape chän chøc n¨ng "Security", hép héi tho¹i
xuÊt hiÖn nh− h×nh 15
21
H×nh 15
-Chän "Yours" trong môc "Yours Certificates", råi chän "Import a Certificate",
trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 26
H×nh 26
-Ng−êi sö dông nhËp mËt khÈu ®Ó truy nhËp tíi c¬ së d÷ liÖu l−u chøng chØ cña
Netscape (mËt khÈu nµy ng−êi sö dông thiÕt lËp b»ng c¸ch sö dông môc Passwords
trong hép héi tho¹i 15), chän "OK", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh−
h×nh 17.
22
H×nh 21
-Ng−êi sö dông chän tÖp chøng chØ cÇn cµi ®Æt (ë ®©y lµ tÖp 2000002.p12), råi
nhÊn "OK", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 18.
H×nh 18
-Ng−êi sö dông gâ mËt khÈu (lµ mËt khÈu do trung t©m cung cÊp khi thùc hiÖn cÊp
chøng chØ cho ng−êi sö dông), nhÊn "OK" trªn mµn h×nh xuÊt hiÖn hép héi tho¹i
nh− h×nh 19
23
H×nh 19
-Ng−êi sö dông nhËp tªn chøng chØ (tªn nµy chØ cã ý nghÜa khi hiÓn thÞ trong danh
môc c¸c chøng chØ ®−îc cµi ®Æt), nhÊn "OK" hép héi tho¹i xuÊt hiÖn nh− h×nh 20
th«ng b¸o viÖc cµi ®Æt chøng chØ ®· thµnh c«ng.
H×nh 20
-Sau khi cµi ®Æt xong chøng chØ, ta thÊy chøng chØ võa ®−îc cµi ®Æt xuÊt hiÖn trong
danh s¸ch c¸c chøng chØ ®· ®−îc cµi ®Æt nh− h×nh 21.
24
H×nh 21
-Ng−êi sö dông nót lÖnh "view" trªn mµn h×nh sÏ xuÊt hiÖn hép héi tho¹i hiÓn thÞ
th«ng tin vÒ chøng chØ võa ®−îc cµi ®Æt.
H×nh 22
25
-NÕu dõng ë ®©y khi chän nót lÖnh "Verify" trong h×nh 21 sÏ xuÊt hiÖn th«ng b¸o:
H×nh 23
-§Ó chøng chØ cã hiÖu lùc, ng−êi sö dông cÇn thiÕt lËp thuéc tÝnh cho Netscape
chÊp nhËn Root CA võa cµi lµ Certificate Authority, b»ng c¸ch: trong h×nh 21 chän
môc "Signers", khi ®ã hép héi tho¹i h×nh 21 cã d¹ng nh− h×nh 24.
26
H×nh 24
-Trong danh s¸ch c¸c chøng chØ cña CA chän Root CA-MyCA Group, råi chän nót
lÖnh "Edit" trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 25
H×nh 25
27
-Ng−êi sö dông check vµo c¸c lùa chän trong môc "This Certificate belong to a
Certifying Authority" råi nhÊn "OK".
-§Õn ®©y nÕu chän nót lÖnh "Verify" trªn h×nh 23 sÏ cã th«ng b¸o nh− h×nh 26.
H×nh 26
2-CËp nhËt CTL vµ CRL tõ Public Database Server
§Ó cËp nhËt CRL, t¶i c¸c CTL cña ng−êi kh¸c (sö dông cho môc ®Ých b¶o mËt
Mail ch¼ng h¹n), hoÆc t¶i chuçi c¸c chøng chØ cña c¸c CA tÇng trªn, ng−êi sö dông
cã thÓ dïng trang publicdatabase.
§Ó truy cËp ®−îc tíi publicdatabase ng−êi sö dông cÇn thiÕt lËp cÊu h×nh trªn m¸y
cña m×nh nh− sau:
-§èi víi tr−êng hîp ng−êi sö dông dïng m«i tr−êng Linux cÇn bæ sung
thªm dßng:
200.1.1.1 publicdatabase
vµo tÖp /etc/hosts
-§èi víi ng−êi sö dông dïng m«i tr−êng Windows cÇn bæ sung dßng :
200.1.1.1 publicdatabase
vµo tÖp c:\Windows\hosts
Trong ®ã 200.1.1.1 lµ ®Þa chØ IP cña m¸y Public Database Server.
Khi truy cËp tíi trang giao diÖn chÝnh cña trang
publicdatabase xuÊt hiÖn nh− h×nh 27
28
H×nh 27
Qui tr×nh sö dông c¸c chøc n¨ng trªn trang Publicdatabase chóng t«i ®· tr×nh bµy
kü trong ch−¬ng 4 tµi liÖu vÒ hÖ thèng ph¸t hµnh vµ qu¶n lý chøng chØ sè theo m«
h×nh tËp trung.
3-Cµi ®Æt thiÕt lËp cÊu h×nh phÇn mÒm E-shop cã sö dông chøng chØ
®−îc cÊp trªn Apache server.
E-shop lµ mét bé ch−¬ng tr×nh nguån mang tÝnh m« pháng viÖc thùc hiÖn mua b¸n
hµng hãa th«ng qua mét trang Web (th−¬ng m¹i ®iÖn tö) trªn m«i tr−êng Linux,
toµn bé phÇn mÒm l−u trªn mét tÖp eshopcom.zip. Sau khi gì nÐn tÖp
eshopcom.zip ta ®−îc th− môc eshop.com trong ®ã cã toµn bé c¸c tÖp ch−¬ng tr×nh
m« pháng qu¸ tr×nh mua b¸n trªn web, vµ giao diÖn ®Ó thùc hiÖn qu¸ tr×nh ®ã.
Qu¸ tr×nh cµi ®Æt vµ thiÕt lËp E-shop ®−îc tiÕn hµnh th«ng qua c¸c b−íc sau:
3.1-Cµi ®Æt phÇn mÒm E-shop
Mét sè yªu cÇu vÒ phÇn mÒm khi thiÕt lËp E-shop:
-ViÖc trao ®æi vµ l−u tr÷ d÷ liÖu khi ch−¬ng tr×nh thùc hiÖn ®−îc t¸c gi¶ cña phÇn
mÒm sö dông hÖ qu¶n trÞ c¬ së d÷ liÖu MySQL, do ®ã ®Ó ch−¬ng tr×nh cã thÓ ch¹y
®−îc cÇn cµi ®Æt MySQL.
-B¶n chÊt cña bé ch−¬ng tr×nh lµ t¹o nªn mét trang Web trªn Web server, do ®ã
cÇn cµi ®Æt Apache server.
§Ó khëi t¹o E-shop cÇn thùc hiÖn:
-Gì nÐn tÖp eshopcom.zip ®−îc th− môc eshop.com
-T¹o c¬ së d÷ liÖu trªn MySQL b»ng c¸ch chuyÓn th− môc hiÖn hµnh thµnh
..../eshop.com/db vµ ch¹y lÖnh:
mysqladmin create eshop
-Khëi t¹o c¬ së d÷ liÖu eshop b»ng c¸ch thùc hiÖn lÖnh:
mysql eshop < eshop.sql
29
Qu¸ tr×nh cµi ®Æt ch−¬ng tr×nh E-shop kÕt thóc, ®Ó sö dông ch−¬ng tr×nh cÇn thiÕt
lËp cÊu h×nh trªn Apache server.
3.2- ThiÕt lËp cÊu h×nh E-shop cã sö dông chøng chØ trªn Apache server
Sau khi cµi ®Æt phÇn mÒm E-shop, ®Ó thiÕt lËp c¬ chÕ chØ cho phÐp c¸c browser
truy nhËp ®Õn th«ng qua kªnh b¶o mËt https, gi¶ sö ng−êi muèn thiÕt lËp eshop ®·
®¨ng ký vµ ®−îc cÊp chøng chØ dïng cho Web server víi ID lµ 2000003. Khi ®ã
cÇn thùc hiÖn c¸c b−íc thiÕt lËp nh− sau:
-Thùc hiÖn viÖc kÕt nèi tíi Public Database Server cña hÖ thèng ®Ó dowload
c¸c CRL do c¸c CA cña hÖ thèng ph¸t hµnh (nÕu muèn kiÓm so¸t ®−îc tÝnh hîp lÖ
cña tÊt c¶ c¸c chøng chØ cña ng−êi dïng trong toµn bé hÖ thèng th× cÇn t¶i tÊt c¶
c¸c CRL cña c¸c CA vÒ). ViÖc t¶i CRL th«ng qua Public Database Server chóng
t«i ®· tr×nh bµy trong môc 7.2. Sau khi cã tÖp CRL, chuyÓn c¸c tÖp nµy vµo th−
môc:
/etc/httpd/conf/ssl.crl/RootCA.crl
(ë ®©y chóng t«i chØ tr×nh bµy viÖc sö dông mét tÖp CRL do Root CA ph¸t
hµnh)
-ChuyÓn tÖp l−u kho¸ riªng (®−îc sinh bëi phÇn mÒm sinh kho¸ vµ sinh tÖp
yªu cÇu) vµo th− môc:
/etc/httpd/conf/ssl.key/2000003.key
-ChuyÓn chøng chØ ®−îc hÖ thèng MyCA cÊp, RootCA.crt, chain.crt (nÕu lµ
nonroot CA cÊp chøng chØ) vµo th− môc:
/etc/httpd/conf/ssl.crt/2000003.crt
/etc/httpd/conf/ssl.crt/RootCA.crt
/etc/httpd/conf/ssl.crt/chain.crt
-Thùc hiÖn viÖc thiÕt lËp E-shop trªn Apache nh− sau:
DocumentRoot /homme/Thuchv/eshop.com/
ServerName eshop.com
ErrorLog logs/eshop /error.log
CustomLog logs/eshop/access.log common
SSLEngine on
SSLProtocol +SSLv3 +TLSv1
SSLCertificateFile /etc/httpd/conf/ssl.crt/2000003.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2000003.key
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/chain.crt
SSLCACertificateFile /etc/httpd/conf/ssl.crt/RootCA.crt
SSLCACertificatePath /etc/httpd/conf/ssl.crt/
SSLCARevocationFile /etc/httpd/conf/ssl.crl/RootCA.crl
SSLVerifyClient require
SSLVerifyDepth 10
-Khëi ®éng l¹i Apache b»ng c¸ch thùc hiÖn lÖnh:
/etc/rc.d/init.d/httpd restart
4-Sö dông https truy nhËp tíi E-shop
4.1- Sö dông tr×nh duyÖt Internet Explorer truy nhËp tíi E-Shop
30
4.1.1-Tr−êng hîp chøng chØ cña client vµ server ch−a bÞ huû bá
§Ó kÕt nèi ®−îc E-shop, trong tÖp c:\windows\hosts cÇn ®−îc bæ sung dßng sau:
200.1.1.1 eshop.com
Sau khi thùc hiÖn viÖc cµi ®Æt c¸c chøng chØ vµ thiÕt lËp cÊu h×nh cho IE, ®Ó kÕt nèi
tíi E-Shop trªn Apache Server sö dông https, trªn mµn h×nh Internet Explorer xuÊt
hiÖn khuyÕn c¸o nh− hép héi tho¹i 28.
H×nh 28
Chän "Ok", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 29
H×nh 29
Ng−êi sö dông chän chøng chØ cña m×nh ®Ó Server x¸c thùc (nÕu kh«ng muèn x¸c
thùc client th× cÇn bá môc SSLVerifyClient trong tÖp cÊu h×nh cña Apache Server,
khi ®ã hép héi tho¹i trªn sÏ kh«ng xuÊt hiÖn), råi nhÊn "OK", trªn mµn h×nh xuÊt
31
hiÖn hép héi tho¹i nh− h×nh 30. Th«ng b¸o vÒ qu¸ tr×nh x¸c thùc chøng chØ gi÷a
Server vµ browser.
H×nh 30
Chän "Yes", trong qu¸ tr×nh lµm viÖc, mçi khi cã sù thay ®æi trang truy nhËp trªn
Server sÏ cã hép héi tho¹i khuyÕn c¸o xuÊt hiÖn nh− h×nh 31, muèn cho hép héi
tho¹i nµy kh«ng xuÊt hiÖn check vµo môc: " In the future, do not show this
warning".
H×nh 31
Cuèi cïng trang https://eshop.com sÏ hiÓn thÞ trªn mµn h×nh IE nh− h×nh 32.
32
H×nh 32
4.1.2-Tr−êng hîp mét trong hai chøng chØ bÞ huû bá
-Tr−êng hîp chøng chØ cña client ®· bÞ huû bá, qu¸ tr×nh kÕt nèi tíi server
sÏ kh«ng thùc hiÖn ®−îc, trªn mµn h×nh IE xuÊt hiÖn th«ng b¸o "The page
cannot be displayed" (chó ý r»ng th«ng b¸o nµy chØ xuÊt hiÖn khi thuéc
tÝnh SSLVerifyClient ®−îc thiÕt lËp lµ require).
-Tr−êng hîp ng−îc l¹i, nÕu chøng chØ cña server ®· bÞ huû bá vµ tÖp CRL
cã th«ng tin vÒ viÖc chøng chØ cña server ®· ®−îc huû bá cµi ®Æt cho client th× qu¸
tr×nh lµm viÖc gi÷a client vµ Server vÉn thùc hiÖn ®−îc tuy nhiªn trong qu¸ tr×nh
kÕt nèi sÏ kh«ng thùc hiÖn x¸c thùc server.
4.2- Sö dông tr×nh duyÖt Netscape truy nhËp tíi E-Shop
4.2.1-Tr−êng hîp chøng chØ cña client vµ server ch−a bÞ huû bá
Sau khi thùc hiÖn viÖc cµi ®Æt chøng chØ, ®Ó kÕt nèi tíi E-Shop trªn Apache Server
sö dông https, ng−êi sö dông ch¹y tr×nh duyÖt Netscape, më trang
https://eshop.com.
33
H×nh 33
Trªn mµn h×nh Netscape xuÊt hiÖn hép héi tho¹i nh− h×nh 34, th«ng b¸o vÒ chøng
chØ trªn server.
H×nh 34
NÕu ng−êi sö dông muèn xem th«ng tin vÒ chøng chØ cña server th× chän vµo môc
"More Info", hép héi tho¹i nh− h×nh 35 xuÊt hiÖn
34
H×nh 35
Tõ hép héi tho¹i 34 chän "Continue", trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh−
h×nh 36, ®Ó ng−êi sö dông chän chøng chØ lµm viÖc víi server.
H×nh 36
35
Chän "Continue", trªn mµn h×nh xuÊt hiÖn hép héi ®Ó ng−êi sö dông nhËp mËt
khÈu ®Ó truy nhËp c¬ së d÷ liÖu cña Netscape
H×nh 37
Ng−êi sö dông nhËp mËt khÈu råi chän "OK", trªn mµn h×nh xuÊt hiÖn hép héi
tho¹i th«ng b¸o qu¸ tr×nh x¸c thùc ®· kÕt thóc:
H×nh 38
Khi chuyÓn tõ trang web sö dông chÕ ®é b¶o mËt sang trang web kh«ng sö dông
chÕ ®é b¶o mËt trªn mµn h×nh xuÊt hiÖn hép héi tho¹i nh− h×nh 39
H×nh 39
4.2.2-Tr−êng hîp mét trong hai chøng chØ bÞ huû bá
NÕu chøng chØ cña client bÞ huû bá, khi thùc hiÖn kÕt nèi tíi server qu¸ tr×nh ®−îc
thùc hiÖn tõ hép héi tho¹i 34 ®Õn hép héi tho¹i 37. Tuy nhiªn qu¸ tr×nh kÕt nèi ®Õn
server cã sö dông chÕ ®é b¶o mËt sÏ kh«ng thµnh c«ng víi hép héi tho¹i th«ng
b¸o:
36
H×nh 40
NÕu chøng chØ cña server bÞ huû bá, khi mét client (®· cËp nhËt CRL trong ®ã
chøng chØ cña server ®· bÞ huû bá) kÕt nèi ®Õn server cã sö dông chÕ ®é b¶o mËt sÏ
kh«ng thµnh c«ng, trªn mµn h×nh xuÊt hiÖn th«ng b¸o:
H×nh 41
37
Ch−¬ng III
Sö dông chøng chØ sè víi dÞch vô Mail
1. Giíi thiÖu
Mét trong nh÷ng øng dông quan träng cña chøng chØ sè ®ã lµ m· ho¸ vµ x¸c thùc
th− ®iÖn tö. Ng−êi sö dông cã thÓ cµi chøng chØ sè (cña m×nh) ®· ®−îc ph¸t hµnh tõ
mét Trung t©m cÊp chøng chØ sè vµo mét hÖ mail nµo ®ã ®Ó thùc hiÖn trao ®æi th−
®iÖn tö cã b¶o mËt víi mét ng−êi dïng kh¸c mµ cïng chung hÖ thèng CA. Trong
ch−¬ng nµy chóng t«i nh»m giíi thiÖu c¸ch sö dông chøng chØ sè ®−îc cÊp bëi hÖ
thèng MyCA trªn Outlook Express.
Gi¶ thiÕt r»ng b¹n ®· cã mét tµi kho¶n ng−êi dïng ®−îc cÊp trªn m¸y Server, vµ
b¹n ®· ®−îc cÊp mét chøng chØ sè t−¬ng øng víi tµi kho¶n ®ã (nhÊt thiÕt ®Þa chØ
email ®¨ng ký trong chøng chØ sè ph¶i trïng víi ®Þa chØ email cña tµi kho¶n trªn
m¸y Server).
ThiÕt lËp hÖ thèng cña chóng t«i nh− sau:
• Mét m¸y cµi Windows 2000 Advanced Server vµ Exchange Server 2000.
• 2 m¸y Windows 98.
Trªn m¸y Server t¹o 2 tµi kho¶n ng−êi dïng lµ user1 vµ user2 cã ®Þa chØ email lµ
[email protected] vµ
[email protected]. Trªn 2 m¸y windows 98 lÇn l−ît tõng m¸y
t¹o ®Þa chØ email t−¬ng øng víi ®Þa chØ email ®−îc cÊp trªn Server. Nh− vËy, 2
ng−êi dïng trªn 2 m¸y cã thÓ göi th− cho nhau b×nh th−êng (kh«ng x¸c thùc vµ m·
ho¸). §Ó cã thÓ göi th− b¶o mËt gi÷a 2 ng−êi sö dông nµy th× hä cÇn ph¶i cã chøng
chØ sè mµ ®−îc cÊp cïng mét hÖ thèng CA nµo ®ã.
Sö dông hÖ thèng cÊp chøng chØ MyCA ®Ó ph¸t hµnh 2 chøng chØ sè cho 2 ng−êi
sö dông cã ®Þa chØ email lÇn l−ît lµ
[email protected] vµ
[email protected]. 2 ng−êi
dïng nµy ®em chøng chØ cña m×nh cµi vµo Outlook. §Õn ®©y hä cã thÓ göi th− cã
m· ho¸ vµ x¸c thùc cho nhau. D−íi ®©y chóng t«i sÏ tr×nh bµy chi tiÕt nh÷ng viÖc
lµm nµy.
2. §−a chøng chØ sè vµo Outlook
Ch¹y Outlook, giao diÖn ch−¬ng tr×nh nh− H×nh 1.
38
H×nh 1
§Ó cµi chøng chØ sè cña b¹n vµo Outlook (chó ý lµ b¹n ph¶i chuyÓn ®æi chøng chØ
theo ®Þnh d¹ng PKCS#12 nÕu chøng chØ sè ®−îc cÊp tõ hÖ thèng CA do ng−êi
dïng sinh kho¸), ë giao diÖn chÝnh cña Outlook chän Tools => Options =>
Security, khi ®ã xuÊt hiÖn hép tho¹i nh− H×nh 2.
39
H×nh 2
Víi hép tho¹i nµy b¹n chän Digital IDs..., xuÊt hiÖn hép tho¹i nh− H×nh 3.
40
H×nh 3
Trong môc Personal cña hép tho¹i Certificate Manager ë trªn ch−a cã chøng chØ
nµo ®−îc cµi vµo Outlook. Chän Import... xuÊt hiÖn hép tho¹i nh− H×nh 4.
41
H×nh 4
Chän Next> ®Ó tiÕp tôc, xuÊt hiÖn hép tho¹i nh− H×nh 5.
H×nh 5
42
Hép tho¹i yªu cÇu chän tÖp chøng chØ cña b¹n. Chän Browse... ®Ó chØ ra tÖp chøng
chØ, nh−ng chó ý r»ng tÖp chøng chØ nµy víi ®Þnh d¹ng PKCS#12. Trong vÝ dô cña
chóng t«i th× ng−êi dïng cã tÖp chøng chØ lµ 2000017.p12 ®Æt trong th− môc
d:\tiendq\test\user1\genkey, ®−îc thÓ hiÖn trong H×nh 6 vµ H×nh 7.
H×nh 6
H×nh 7
Chän Next> ®Ó tiÕp tôc, xuÊt hiÖn hép tho¹i nh− H×nh 8.
43
H×nh 8
Hép tho¹i yªu cÇu b¹n vµo mËt khÈu gi¶i m· tÖp chøng chØ (vµo ®óng mËt khÈu khi
b¹n chuyÓn ®æi ®Þnh d¹ng PKCS#12). Chän Next> ®Ó tiÕp tôc, xuÊt hiÖn hép tho¹i
nh− H×nh 9.
44
H×nh 9
Hép tho¹i yªu cÇu lùa chän n¬i l−u tr÷ chøng chØ cña b¹n, ë ®©y chän môc
Automatically select the certificate store based on the type of certificate. Chän
Next> ®Ó tiÕp tôc, xuÊt hiÖn hép tho¹i nh− H×nh 10.
45
H×nh 10
Chän Finish ®Ó kÕt thóc, nÕu thµnh c«ng sÏ xuÊt hiÖn hép tho¹i nh− H×nh 11.
H×nh 11
Chän OK, nh− vËy b¹n ®· hoµn thµnh c«ng viÖc cµi chøng chØ sè vµo Outlook. §Ó
kiÓm tra l¹i ®iÒu nµy, b¹n vµo Tools => Options =>Security => Digital IDs...
xuÊt hiÖn hép tho¹i Certificate Manager trong môc Personal xuÊt hiÖn dßng m«
t¶ chøng chØ cña b¹n. VÝ dô, chóng t«i cµi chøng chØ cña user1 nh− H×nh 12.
46
H×nh 12
§Ó hiÓn thÞ chi tiÕt néi dung chøng chØ b¹n chän View, khi ®ã xuÊt hiÖn hép tho¹i
cã d¹ng nh− H×nh 13.
47
H×nh 13
§Õn ®©y b¹n cã thÓ thùc hiÖn göi th− ®iÖn tö cã x¸c thùc vµ m· ho¸ víi mét ng−êi
sö dông kh¸c còng ®· cµi chøng chØ sè cña hä trªn Outlook. Chó ý r»ng chøng chØ
sè cña b¹n vµ ng−êi sö dông kia ph¶i ®−îc cÊp cïng mét hÖ thèng CA, ë ®©y
chóng t«i ®ang sö dông hÖ thèng MyCA ®Ó cÊp chøng chØ sè, CA ph¸t hµnh chøng
chØ cã tªn lµ RootCA1411.
3. Sö dông chøng chØ sè ®Ó x¸c thùc vµ m· ho¸ th− ®iÖn tö trªn Outlook
Trong môc nµy chóng t«i sÏ tr×nh bµy øng dông chøng chØ sè ®Ó x¸c thùc vµ m·
ho¸ th− ®iÖn tö trªn Outlook, víi ®iÒu kiÖn lµ b¹n ®· thùc hiÖn cµi ®Æt thµnh c«ng
chøng chØ sè cña m×nh vµo Outlook (®· tr×nh bµy ë trªn). VÊn ®Ò ®Æt ra lµ b¹n ch−a
cã kho¸ c«ng khai cña ®èi t¸c ®Ó m· ho¸, ng−îc l¹i ®èi t¸c cña b¹n còng ch−a cã
kho¸ c«ng khai cña b¹n ®Ó thùc hiÖn viÖc kiÓm tra ch÷ ký. §Ó gi¶i quyÕt vÊn ®Ò
nµy, lÇn ®Çu tiªn b¹n göi th− ®iÖn tö cho ®èi t¸c chØ thùc hiÖn ký lªn néi dung ®ã
vµ chó ý r»ng néi dung th− kh«ng yªu cÇu b¶o mËt, ®ång thêi trong Outlook ph¶i
®Æt tuú chän göi chøng chØ cña b¹n kÌm theo. Khi nhËn ®−îc th− cña b¹n, ®èi t¸c
sÏ cã chøng chØ sè cña b¹n, vµ sau ®ã ®èi t¸c göi chøng chØ sè cña hä b»ng c¸ch
t−¬ng tù nh− b¹n ®· lµm. §Õn ®©y b¹n vµ ®èi t¸c cã thÓ thùc hiÖn göi th− cã x¸c
thùc vµ m· ho¸ cho nhau. C«ng viÖc nµy sÏ ®−îc tr×nh bµy chi tiÕt d−íi ®©y.
48
H×nh 14
Trong H×nh 14, môc Other People trong hép tho¹i Certificate Manager kh«ng
cã chøng chØ cña ®èi t¸c mµ b¹n cÇn trao ®æi th− ®iÖn tö mËt. LÇn ®Çu tiªn b¹n göi
chøng chØ cña m×nh cho ®èi t¸c b»ng c¸ch ký lªn bøc th− (chän Sign), vµ sau ®ã
chän Send ®Ó göi. Chó ý trªn Outlook c¶ bªn göi vµ bªn nhËn ph¶i ®−îc ®Æt 2 tuú
chän: Include my digital ID when sending signed messages vµ Add the
senders' certificates to my address book nh− H×nh 15. Hép tho¹i cßn cho phÐp
thiÕt lËp thuËt to¸n m· ho¸ (ë ®©y chóng t«i ®Æt lµ DES).
49
H×nh 15
Trong vÝ dô cña chóng t«i, ®èi t¸c cÇn göi cã ®Þa chØ email lµ
[email protected] nh−
H×nh 16.
50
H×nh 16
Chän Send vµ sau ®ã chän Send/Recv. Khi ®ã ®èi t¸c më Outlook, nhËn ®−îc mét
th− trong Inbox nh− H×nh 17.
51
H×nh 17
Më th− nhËn ®−îc tõ user1, xuÊt hiÖn hép tho¹i nh− H×nh 18.
H×nh 18
52
Ngoµi nh÷ng th«ng tin vÒ ng−êi göi vµ nhËn th× cã thªm môc Security: Digitally
signed and verified, tøc lµ bøc th− nµy ®· ®−îc ký tõ ng−êi göi vµ ®−îc kiÓm tra
lµ ®óng. Muèn xem néi dung th−, chän Continue, sÏ hiÓn thÞ néi dung th− nh−
H×nh 19.
H×nh 19
Sau ®ã ®èi t¸c sÏ göi chøng chØ cña hä cho b¹n nh− b¹n ®· tõng lµm ë trªn. §Ó
kiÓm tra r»ng chøng chØ cña ®èi t¸c ®· cã trong Outlook hay ch−a b¹n chän môc
Other People cña hép tho¹i Certificate Manager, môc nµy chøa chøng chØ cña
c¸c ®èi t¸c cña b¹n. VÝ dô nh− H×nh 20.
53
H×nh 20
§Õn ®©y c¶ 2 bªn ®Òu cã chøng chØ cña nhau, vµ cã thÓ thùc hiÖn göi th− cã x¸c
thùc vµ b¶o mËt cho nhau. VÝ dô b¹n cã thÓ so¹n mét th− ®iÖn tö nh− H×nh 21.
54
H×nh 21
Chó ý, ®Ó göi th− cã x¸c thùc vµ m· ho¸ b¹n chän c¶ 2 tuú chän Sign vµ Encrypt.
Chän Send vµ Send/Recv, ®Ó göi tíi ®èi t¸c cña b¹n. Bªn nhËn nhËn ®−îc th−,
hiÓn thÞ néi dung cã d¹ng nh− H×nh 22.
55
H×nh 22
§Ó xem néi dung th−, chän Continue (gi¶i m·), khi ®ã xuÊt hiÖn néi dung th− cã
d¹ng nh− H×nh 23.
56
H×nh 23
§©y lµ bøc th− göi cã x¸c thùc vµ m· ho¸ (trong môc Security: Digital signed
and verified; Encrypted).
4. CËp nhËt danh s¸ch c¸c chøng chØ ®· huû bá
Mét ng−êi dïng cã thÓ huû bá chøng chØ cña m×nh (víi rÊt nhiÒu lý do), ®Ó huû bá
mét chøng chØ b¹n cã thÓ tham kh¶o ch−¬ng 6. Do vËy, th«ng th−êng mçi phiªn
lµm viÖc b¹n nªn cËp nhËt l¹i danh s¸ch c¸c chøng chØ ®· bÞ huû bá do CA cña b¹n
ph¸t hµnh, ®iÒu nµy gióp b¹n cã thÓ biÕt ®−îc tr¹ng th¸i chøng chØ cña ®èi t¸c
(chøng chØ ®· bÞ huû bá hay ch−a?), b¹n tham kh¶o ch−¬ng 7. Khi ®· lÊy ®−îc
danh s¸ch c¸c chøng chØ huû bá (gi¶ sö tÖp chain.crl) th× c¸c b−íc thùc hiÖn cËp
nhËt vµo Outlook t−¬ng tù nh− ®èi víi viÖc cµi mét chøng chØ vµo Outlook, chóng
t«i sÏ kh«ng tr×nh bµy l¹i ë ®©y.
Trong môc nµy chóng t«i gi¶ sö r»ng ng−êi sö dông cã tªn user1 víi ®Þa chØ email
lµ
[email protected] ®· huû bá chøng chØ. Tr−íc khi lµm viÖc, ng−êi sö dông user2
tiÕn hµnh cËp nhËt danh s¸ch c¸c chøng chØ bÞ huû bá do hÖ thèng CA cña m×nh
ph¸t hµnh. Ng−êi sö dông user2 sö dông Outlook so¹n th− vµ göi th− cã x¸c thùc
vµ m· ho¸ cho user1, sau chän Send ®Ó göi cho user1 th× sÏ xuÊt hiÖn th«ng b¸o
nh− H×nh 24.
57
H×nh 24
Outlook th«ng b¸o lµ chøng chØ cña user1 ®· bÞ huû bá, user2 sÏ kh«ng thÓ thùc
hiÖn göi th− cã x¸c thùc vµ b¶o mËt cho user1 ®−îc n÷a. Chó ý r»ng, user2 vÉn cã
thÓ göi th− kÌm theo ch÷ ký cho user1 bëi chøng chØ cña user2 ch−a bÞ huû bá nªn
user1 vÉn cã thÓ kiÓm tra ch÷ ký cña user2.
Ng−îc l¹i, khi user1 göi th− cã x¸c thùc vµ m· ho¸ cho user2 th× ®iÒu g× sÏ x¶y ra
khi mµ chøng chØ cña user1 ®· bÞ huû bá?. Khi nhËn ®−îc th− cña user1, user2
hiÓn thÞ néi dung sÏ cã d¹ng nh− H×nh 25.
58
H×nh 25
Trong môc Security: cã th«ng b¸o Digitally signed - signing digital ID is
revoked, tøc lµ bøc th− nµy ®· ®−îc ký bëi mét chøng chØ ®· huû bá. Chó ý r»ng,
nÕu user1 göi th− chØ chän Encrypt (mµ kh«ng ký lªn th− ®ã) th× user2 vÉn ®äc
®−îc b×nh th−êng (tøc lµ gi¶i m· ®−îc), bëi chøng chØ cña user2 ch−a bÞ huû bá.
59