@@ -27,8 +27,14 @@ Before project configuration and build, be sure to set the correct chip target u
2727```
2828idf.py menuconfig
2929```
30+
3031Open the project configuration menu (` idf.py menuconfig ` ) to configure Wi-Fi or Ethernet. See "Establishing Wi-Fi or Ethernet Connection" section in [ examples/protocols/README.md] ( ../../README.md ) for more details.
3132
33+ For additional logging of TLS and DNS, in project configuration:
34+
35+ * ` Component config ` -> ` Log output ` -> ` Maximum log verbosity ` , select ` Debug `
36+ * ` Component config ` -> ` LWIP ` -> ` Enable LWIP Debug ` -> ` Enable DNS debug messages ` , enable
37+
3238#### Configuring Client Session Tickets
3339
3440Note: This example has client session tickets enabled by default.
@@ -54,36 +60,139 @@ See the Getting Started Guide for full steps to configure and use ESP-IDF to bui
5460
5561## Example Output
5662
63+ Run on a dual-stack network with DNS64/NAT64 available, and with DNS logging turned on.
64+
65+ At the time of the first check the device has an IPv4 global address, but only link-local IPv6, so even though DNS64 returns both IPv4 and IPv6 addresses, the IPv4 address is used as it has a matching scope.
66+
67+ By the time of the second check, the device has received IPv6 RA (router advertisement) prefixes and configured IPv6 addresses. Both addresses have matching scopes and labels, so DNS precedence rules use the IPv6 NAT64 address.
68+
5769```
58- I (5634) example_connect: - IPv4 address: 192.168.194.219
59- I (5634) example_connect: - IPv6 address: fe80:0000:0000:0000:266f:28ff:fe80:2c74, type: ESP_IP6_ADDR_IS_LINK_LOCAL
60- I (5644) example: Start https_request example
61- I (5654) example: https_request using crt bundle
62- W (6514) wifi:<ba-add>idx:1 (ifx:0, ee:6d:19:60:f6:0e), tid:4, ssn:0, winSize:64
63- I (7074) esp-x509-crt-bundle: Certificate validated
64- I (9384) example: Connection established...
65- I (9384) example: 107 bytes written
66- I (9384) example: Reading HTTP response...
70+ I (843) example_connect: Connecting to Astral...
71+ I (843) example_connect: Waiting for IP(s)
72+ I (3263) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1
73+ I (3513) wifi:state: init -> auth (b0)
74+ I (3523) wifi:state: auth -> assoc (0)
75+ I (3543) wifi:state: assoc -> run (10)
76+ I (3553) wifi:connected with Astral, aid = 7, channel 1, BW20, bssid = c0:56:27:73:4b:14
77+ I (3553) wifi:security: WPA2-PSK, phy: bgn, rssi: -58
78+ I (3553) wifi:pm start, type: 1
79+
80+ I (3553) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us
81+ I (3583) wifi:dp: 2, bi: 102400, li: 4, scale listen interval from 307200 us to 409600 us
82+ I (3583) wifi:AP's beacon interval = 102400 us, DTIM period = 2
83+ I (4633) example_connect: Got IPv6 event: Interface "example_netif_sta" address: fe80:0000:0000:0000:0a3a:f2ff:fe65:db28, type: ESP_IP6_ADDR_IS_LINK_LOCAL
84+ I (5063) esp_netif_handlers: example_netif_sta ip: 192.168.1.146, mask: 255.255.255.0, gw: 192.168.1.1
85+ I (5063) example_connect: Got IPv4 event: Interface "example_netif_sta" address: 192.168.1.146
86+ I (5073) example_common: Connected to example_netif_sta
87+ I (5073) example_common: - IPv4 address: 192.168.1.146,
88+ I (5083) example_common: - IPv6 address: fe80:0000:0000:0000:0a3a:f2ff:fe65:db28, type: ESP_IP6_ADDR_IS_LINK_LOCAL
89+ I (5093) example: Updating time from NVS
90+ I (5103) example: Start https_request example
91+ I (5103) example: https_request using crt bundle
92+ D (5103) esp-tls: host:www.howsmyssl.com: strlen 17
93+ dns_enqueue: "www.howsmyssl.com": use DNS entry 0
94+ dns_enqueue: "www.howsmyssl.com": use DNS pcb 0
95+ I (5123) main_task: Returned from app_main()
96+ dns_send: dns_servers[0] "www.howsmyssl.com": request
97+ sending DNS request ID 22389 for name "www.howsmyssl.com" to server 0
98+ dns_recv: "www.howsmyssl.com": response = 64:ff9b:0:0:0:0:2247:2dc8
99+ dns_enqueue: "www.howsmyssl.com": use DNS entry 1
100+ dns_enqueue: "www.howsmyssl.com": use DNS pcb 0
101+ dns_send: dns_servers[0] "www.howsmyssl.com": request
102+ sending DNS request ID 50477 for name "www.howsmyssl.com" to server 0
103+ dns_recv: "www.howsmyssl.com": response = 34.71.45.200
104+ dns_select: selecting from 2 candidates
105+ dns_select: precedence labels flags 0x0013, ipv6 scopes flags 0x0004, ipv4 scopes flags 0x4004
106+ dns_select: rule 2, cand_0 scope (14) match 0, cand_1 scope (14) match 1
107+ D (5233) esp-tls: [sock=54] Resolved IPv4 address: 34.71.45.200
108+ D (5243) esp-tls: [sock=54] Connecting to server. HOST: www.howsmyssl.com/a/check, Port: 443
109+ D (5643) esp-tls: handshake in progress...
110+ I (6103) esp-x509-crt-bundle: Certificate validated
111+ dns_tmr: dns_check_entries
112+ dns_tmr: dns_check_entries
113+ I (7383) example: Connection established...
114+ I (7393) example: 106 bytes written
115+ I (7393) example: Reading HTTP response...
116+ I (7633) example_connect: Got IPv6 event: Interface "example_netif_sta" address: 2407:8800:bc61:1340:0a3a:f2ff:fe65:db28, type: ESP_IP6_ADDR_IS_GLOBAL
117+ I (7633) example_connect: Got IPv6 event: Interface "example_netif_sta" address: fd7c:e25e:67e8:0040:0a3a:f2ff:fe65:db28, type: ESP_IP6_ADDR_IS_UNIQUE_LOCAL
118+ dns_tmr: dns_check_entries
67119HTTP/1.1 200 OK
68- Content-Length: 2091
69120Access-Control-Allow-Origin: *
70121Connection: close
122+ Content-Length: 2545
71123Content-Type: application/json
72- Date: Tue, 07 Sep 2021 08:30:00 GMT
73124Strict-Transport-Security: max-age=631138519; includeSubdomains; preload
74-
75- {"given_cipher_suites":["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_DHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_AES_256_CCM","TLS_DHE_RSA_WITH_AES_256_CCM","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_AES_
76- 256_CBC_SHA384","TLS_DHE_RSA_WITH_AES_256_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_DHE_RSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8","TLS_DHE_RSA_WITH_AES_256_CCM_8","TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_DHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CCM","TLS_DHE_RSA_WITH_AES_128_CCM","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256","TLS_DHE
77- _RSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA","TLS_DHE_RSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_ECDSA
78- _WITH_AES_128_CCM_8","TLS_DHE_RSA_WITH_AES_128_CCM_8","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_256_CCM","TLS_RSA_WITH_AES_256_CBC_SHA256","TLS_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_256_CCM_8","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_128_CCM","TLS_RS
79- A_WITH_AES_128_CBC_SHA256","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_128_CCM_8","TLS_EMPTY_RENEGOTIATION_INFO_SCSV"],"ephemeral_keys_supported":true,"session_ticket_supported":true,"tls_compression_supported":false,"unknown_cipher_suite_supported":false,"beast_vuln":fal
80- se,"able_to_detect_n_minus_one_splitting":false,"insecure_cipher_suites":{},"tls_version":"TLS 1.2","rating":"Probably Okay"}
81- I (10204) example: connection closed
82- I (10204) example: 10...
83- I (11204) example: 9...
84- I (12204) example: 8...
85- I (13204) example: 7...
86- I (14204) example: 6...
87- I (15204) example: 5...
88- I (16204) example: 4...
125+ Vary: Accept-Encoding
126+ Date: Tue, 27 Feb 2024 22:11:22 GMT
127+
128+ {"given_cipher_suites":["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_AES_256_CCM","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_ECDSA_WITH_AES_256_
129+ CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8","TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384","TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CCM","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AE
130+ S_128_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8","TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH
131+ dns_tmr: dns_check_entries
132+ _ARIA_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_256_CCM","TLS_RSA_WITH_AES_256_CBC_SHA256","TLS_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_256_CCM_8","TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDH_RSA_WIT
133+ H_ARIA_256_GCM_SHA384","TLS_RSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384","TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384","TLS_RSA_WITH_ARIA_256_CBC_SHA384","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_128_CCM","TLS_RSA_WITH_AES_128_CBC_SHA256","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_ECDS
134+ A_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_128_CCM_8","TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256","TLS_RSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256","TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256","TLS_RSA_WITH_ARIA_128_CBC_SHA256","TLS_EMPTY_RENEGOTIATION_INFO_SCSV"],"ephemeral_keys_supported":true,"session_ticket_supported":true,"tls_compression_supported":false,"unknown_cipher_suite_supported":false,"beast_vuln":false,"able_to_detect_n_minus_one_spl
135+ itting":false,"insecure_cipher_suites":{},"tls_version":"TLS 1.2","rating":"Probably Okay"}
136+ I (9463) example: connection closed
137+ I (9473) example: 10...
138+ dns_tmr: dns_check_entries
139+ I (10473) example: 9...
140+ dns_tmr: dns_check_entries
141+ I (11473) example: 8...
142+ dns_tmr: dns_check_entries
143+ I (12473) example: 7...
144+ dns_tmr: dns_check_entries
145+ I (13473) example: 6...
146+ dns_tmr: dns_check_entries
147+ I (14473) example: 5...
148+ dns_tmr: dns_check_entries
149+ I (15473) example: 4...
150+ dns_tmr: dns_check_entries
151+ I (16473) example: 3...
152+ dns_tmr: dns_check_entries
153+ I (17473) example: 2...
154+ dns_tmr: dns_check_entries
155+ I (18473) example: 1...
156+ dns_tmr: dns_check_entries
157+ I (19473) example: 0...
158+ dns_tmr: dns_check_entries
159+ I (20473) example: Minimum free heap size: 181364 bytes
160+ I (20473) example: https_request using cacert_buf
161+ D (20473) esp-tls: host:www.howsmyssl.com: strlen 17
162+ dns_lookup: "www.howsmyssl.com": found = 64:ff9b:0:0:0:0:2247:2dc8
163+ dns_lookup: "www.howsmyssl.com": found = 34.71.45.200
164+ dns_select: selecting from 2 candidates
165+ dns_select: precedence labels flags 0x2013, ipv6 scopes flags 0x4004, ipv4 scopes flags 0x4004
166+ dns_select: rule 2, cand_0 scope (14) match 1, cand_1 scope (14) match 1
167+ dns_select: rule 5, cand_0 label (1) match 1, cand_1 label (4) match 1
168+ dns_select: rule 6, cand_0 precedence 40, cand_1 precedence 35
169+ D (20513) esp-tls: [sock=54] Resolved IPv6 address: 64:FF9B::2247:2DC8
170+ D (20523) esp-tls: [sock=54] Connecting to server. HOST: www.howsmyssl.com/a/check, Port: 443
171+ D (20903) esp-tls: handshake in progress...
172+ dns_tmr: dns_check_entries
173+ dns_tmr: dns_check_entries
174+ I (22753) example: Connection established...
175+ I (22753) example: 106 bytes written
176+ I (22753) example: Reading HTTP response...
177+ dns_tmr: dns_check_entries
178+ HTTP/1.1 200 OK
179+ Access-Control-Allow-Origin: *
180+ Connection: close
181+ Content-Length: 2545
182+ Content-Type: application/json
183+ Strict-Transport-Security: max-age=631138519; includeSubdomains; preload
184+ Vary: Accept-Encoding
185+ Date: Tue, 27 Feb 2024 22:11:37 GMT
186+
187+ {"given_cipher_suites":["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_AES_256_CCM","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_ECDSA_WITH_AES_256_
188+ CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8","TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384","TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CCM","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AE
189+ S_128_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8","TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH
190+ _ARIA_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_256_CCM","TLS_RSA_WITH_AES_256_CBC_SHA256","TLS_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_256_CCM_8","TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDH_RSA_WIT
191+ H_ARIA_256_GCM_SHA384","TLS_RSA_WITH_ARIA_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384","TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384","TLS_RSA_WITH_ARIA_256_CBC_SHA384","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_128_CCM","TLS_RSA_WITH_AES_128_CBC_SHA256","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_ECDS
192+ A_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_128_CCM_8","TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256","TLS_RSA_WITH_ARIA_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256","TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256","TLS_RSA_WITH_ARIA_128_CBC_SHA256","TLS_EMPTY_RENEGOTIATION_INFO_SCSV"],"ephemeral_keys_supported":true,"session_ticket_supported":true,"tls_compression_supported":false,"unknown_cipher_suite_supported":false,"beast_vuln":false,"able_to_detect_n_minus_one_spl
193+ itting":false,"insecure_cipher_suites":{},"tls_version":"TLS 1.2","rating":"Probably Okay"}
194+ I (23393) example: connection closed
195+ I (23393) example: 10...
196+ dns_tmr: dns_check_entries
197+ I (24393) example: 9...
89198```
0 commit comments