-
Notifications
You must be signed in to change notification settings - Fork 261
/
ssl-oneway.puml
57 lines (45 loc) · 1.85 KB
/
ssl-oneway.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
' SPDX-License-Identifier: Apache-2.0
' Copyright Contributors to the Egeria project.
@startuml
autonumber "[0]"
skinparam noteBackgroundColor LightSkyBlue
skinparam participant {
backgroundColor Lavender
}
skinparam sequenceMessageAlign direction
title TLS exchange showing client/server access to truststores and keystores (1 way SSL - RFC5246)
participant ClientKeyStore
participant ClientTrustStore
participant Client
participant Server
participant ServerKeyStore
group TCP handshake
Client -> Server: SYN
Server --> Client: SYN, ACK
Client -> Server: ACK
end
group TLS handshake
Client -> Server: **ClientHello** (client-random, TLS version, ciphers, compression,extensions)
Server -> ServerKeyStore: get my certificate (private key)
note right of ServerKeyStore: Looks for first matching server key
ServerKeyStore -> Server: Certificate
Server -> Client: **ServerHello** (server-random, agreed cipher)
Server -> Client: **Certificate** (server certificate chain)
Server -> Client: **ServerHelloDone**
Client -> ClientKeyStore: retrieve certs to trust
ClientKeyStore -> Client: certificate list
note left of Client: validates certificate against it's configured truststore
note left of Client: generates a pre-master secret encrypted using server's public key
Client -> Server: **ClientKeyExchange** (premaster secret)
note right of Server: descrypts pre-master key using private key
note right of Server: creates Master secret using premaster secret, client-random, server-random
Client -> Server: **ChangeCipherSpec**
Client -> Server: <&lock-locked>**Finished**
Server -> Client: **ChangeCipherSpec**
Server -> Client: <&lock-locked>**Finished**
end
group Application Use
Client -> Server: <&lock-locked> GET /path/request
Server -> Client: <&lock-locked> response
end
@enduml