#author("2024-02-04T08:59:21+00:00","default:iseki","iseki")
#author("2024-10-22T08:30:47+00:00","default:iseki","iseki")
* TLS
** TLS [#s4d744d8]
- see also [[OpenSSL]]


*** 簡単オレオレ証明書 [#yb18b71c]
- /etc/pki/tls を使用する.

**** /etc/pki/tls/certs の Makefile [#m4e3972c]
- make genkey  ....  /etc/pki/tls/private に秘密鍵 localhost.key を生成する.
- make server.key .... カレントディレクトリに秘密鍵 server.key を生成する.
- make server.csr .... 秘密鍵が無ければ生成して,証明書請求フォーマット(server.csr) を生成する.
- make server.crt .... server.csr が無ければ生成して,サーバ証明書(server.crt)を生成する.

- 認証局証明書は /etc/pki/tls/cert.pem


* RSCH [#va4fb418]

** HTTPS 解析 [#sd5fc6d6]
- https://qiita.com/n-i-e/items/41673fd16d7bd1189a29

- [[Sample 通信データ>./HTTPS Sample Data]]


*** 1. PC -> Server : Handshake ClientHello [#q12c7c3e]

**** TLS Record Layer (5Byte) [#oc1eb90c]
 16 03 03 00 9b
- 0x16 : [[Type>./TLSデータのコンテントタイプ]]: Handshake
- 0x03 0x03 : [[Version>./TLS Version]]: TLS v1.2
- 0x00 0x9b : 続くデータの長さ (155Byte)


**** メッセージタイプ (4Byte)[#fc523b9f]
  01 00 00 97
- 0x01 : メッセージタイプ([[msg タイプ>./msg タイプ]]): ClientHello
- 0x00 0x00 0x97 : データ部の長さ (151Byte)


**** データ部 (151Byte) [#k05a186a]
 03 03 5d b5 59 02 f8 ...

*** 2. Server -> PC : Handshake SeverHello [#qc7b2e2c]

**** TLS Record Layer (5Byte) [#pf7f0f6e]
 16 03 03 00 55
- 0x16 : [[Type>./TLSデータのコンテントタイプ]]: Handshake
- 0x03 0x03 : [[Version>./TLS Version]]: TLS v1.2
- 0x00 0x55 : 続くデータの長さ (85Byte)


**** メッセージタイプ (4Byte) [#m3ba242e]
 02 00 00 51
- 0x02 : メッセージタイプ([[msg タイプ>./msg タイプ]]): SeverHello
- 0x00 0x00 0x51 : データ部の長さ (81Byte)


**** データ部 (81Byte) [#d8ebb75d]
 03 03 de b4 cd 12 b2 ...

*** 3. Server -> PC : Handshake Certificate [#d4a502e4]
 16 03 03 09 73 0b 00 09 6f

**** メッセージタイプ (4Byte) [#qc3f9b0c]
- 0x0b : メッセージタイプ([[msg タイプ>./msg タイプ]]): Certificate
- 0x00 0x09 0x6f  : データ部の長さ(2415Byte)


**** データ部 (2415バイト) [#v6bb260b]
 00 09 6c 00 04 b1 30 82 04 ad 30 82 03 ...

*** 4. Server -> PC : Handshake ServerKeyExchange [#w2e72399]
 16 03 03 03 0f 0c 00 03 0b

**** メッセージタイプ (4Byte) [#u057577b]
- 0x0c : メッセージタイプ([[msg タイプ>./msg タイプ]]): ServerKeyExchange
- 0x00 0x03 0x0b : データ部の長さ(779Byte)


**** データ部 (779バイト) [#a3b36d44]
 01 00 ff ff ff ff ff ff ff ff c9 0f da a2 21 68 c2 ...  


*** 5. Server -> PC : Handshake ServerHelloDone [#h5ca3ea0]
 16 03 03 00 04 0e 00 00 00

**** メッセージタイプ (4Byte) [#h62cc937]
 0e 00 00 00   
- 0x0e : メッセージタイプ([[msg タイプ>./msg タイプ]]): ServerHelloDone
- 0x00 0x00 0x00 : データ部の長さ(0Byte)


*** 6. PC -> Server : Handshake ClientKeyExchange [#r576b9e6]
 16 03 03 01 06 10 00 01 02

**** メッセージタイプ (4Byte) [#rd97c5be]
- 0x10 : メッセージタイプ([[msg タイプ>./msg タイプ]]): ClientKeyExchange
- 0x00 0x01 0x02 : データ部長さ(258Byte)

**** データ部 (258バイト) [#f14c53d5]
 01 00 07 cd 69 f6 91 ...

*** 7. PC -> Server : ChangeCipherSpec [#p732fe57]
 14 03 03 00 01 01

**** TLS Record Layer (5Byte) [#q3ede2bf]
 14 03 03 00 01
- 0x14 : [[Type>./TLSデータのコンテントタイプ]]: ChangeCipherSpec
- 0x03 0x03 : Version
- 0x00 0x01: 続くデータの長さ (1Byte)


**** データ部 (1Byte) [#n9c90ec9]
- 0x01 : ChangeCipherSpec : これ以降は暗号化通信を行う


*** 8. PC -> Server : Handshake finished? [#u7bebe55]

**** TLS Record Layer (5Byte) [#t2d10104]
 16 03 03 00 28
- 0x16 : [[Type>./TLSデータのコンテントタイプ]]: Handshake
- 0x03 0x03 : Version
- 0x00 0x28: 続くデータの長さ (40Byte)


**** メッセージタイプ (4Byte) [#m6532da2]
 00 00 00 00 00 00 00 00 97 74 ...
- 暗号化データ ?  Finished か?


*** 9. Server -> PC : ChangeCipherSpec [#g13e99a7]
 14 03 03 00 01 01

**** TLS Record Layer (5Byte) [#xb1be085]
 14 03 03 00 01
- 0x14 : [[Type>./TLSデータのコンテントタイプ]]: ChangeCipherSpec
- 0x03 0x03 : Version
- 0x00 0x01: 続くデータの長さ (1Byte)


**** メッセージ部 (1Byte) [#l432a0ec]
- 0x01 : ChangeCipherSpec : これ以降は暗号化通信を行う

*** 10. Server -> PC : Handshake finished? [#u21f94cd]

**** TLS Record Layer (5Byte) [#u3018017]
 16 03 03 00 28
- 0x16 : [[Type>./TLSデータのコンテントタイプ]]: Handshake
- 0x03 0x03 : Version
- 0x00 0x28: 続くデータの長さ (40Byte)


**** メッセージタイプ (4Byte) [#ee81570f]
 42 d2 dc b8 50 ...
- 暗号化データ ?  Finished か?


**** TLS Record Layer (5Byte) [#ze3641fc]
 16 03 03 00 28
- 0x16 : [[Type>./TLSデータのコンテントタイプ]]: Handshake
- 0x03 0x03 : Version
- 0x00 0xbb: 続くデータの長さ (187Byte)



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS