Skip to content
EgyKode
Challengenetworking

HTTP & TLS Troubleshooting — Challenge

Take a failing HTTPS request apart layer by layer: DNS, TCP, TLS, HTTP — and know which one broke.

Time
25 min
Level
Intermediate
Objectives
4 objectives
Cost
Free

Before you start

You will need

  • curl
  • openssl
  • dig
  • nc

You will be able to

  • Inspect a certificate chain and its expiry from the command line
  • Separate a TLS failure from an HTTP failure
  • Read `curl -v` output as a sequence of layers

CostFree

— uses public endpoints and a local container.

You are done when

0 of 4

The goal#

Achieve the same outcome as HTTP & TLS Troubleshooting, from an empty starting point, without the steps.

"The site is down." It returns a certificate error in one browser, works in another, and curl fails with something different again.

Each of those is a different layer, and the fix depends entirely on which one.

What must be true when you are done#

  • You can print a site's certificate subject, issuer and expiry without a browser.
  • You can state which layer failed for three different broken URLs.
  • You can explain what SSL_ERROR_SYSCALL and certificate verify failed each imply.
  • You can prove a port is reachable independently of whether TLS succeeds.

Rules#

  • Do not open the guided lab until you are finished, or until the same problem has held you up for 20 minutes.
  • Documentation is allowed and encouraged.
  • Verify every criterion with a command whose output you can read.

If you get stuck#

  1. What did you expect, exactly?
  2. What happened instead — the error text, not a paraphrase?
  3. Which layer is that error from?
  4. What is the smallest command that proves the layer below is fine?

The concept behind it

Stuck?Open the guided lab

Phase complete · 02 The application, in containers

You can now: The application runs locally in production-shaped containers, behind a reverse proxy, over TLS.

Next phase

Lab 13 of 58 on the project path

03 · AWS by handAWS IAM & Least PrivilegeWrite a policy that grants exactly one action, prove what it blocks, and swap a long-lived key for a role.50 minBeginner