#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)