What does SNI stand for and why is it important for multiple SSL certificates?
SNI stands for Server Name Indication. It allows a server to present multiple SSL certificates on the same IP address and port, enabling hosting of multiple secure websites without needing separate IPs.
Click to reveal answer
intermediate
How does nginx use SNI to serve different SSL certificates?
nginx uses the server_name directive inside server blocks to match the requested hostname. It then selects the correct SSL certificate configured for that server block using SNI.
Click to reveal answer
beginner
What is the minimum nginx configuration needed to enable SNI for two domains?
You need two server blocks each with its own server_name, ssl_certificate, and ssl_certificate_key directives. nginx automatically uses SNI to serve the right certificate based on the hostname.
Click to reveal answer
intermediate
Can SNI work with clients that do not support it?
No, clients that do not support SNI will not be able to select the correct certificate and may see certificate warnings or connection failures.
Click to reveal answer
beginner
Why is SNI preferred over using multiple IP addresses for SSL hosting?
SNI allows multiple SSL sites to share one IP address, saving IP resources and simplifying server management compared to assigning a unique IP for each SSL site.
Click to reveal answer
What does SNI enable on a web server?
AEncrypting HTTP traffic without certificates
BIncreasing server CPU speed
CBlocking unwanted IP addresses
DServing multiple SSL certificates on one IP address
✗ Incorrect
SNI allows a server to present different SSL certificates based on the hostname requested, all on the same IP address.
In nginx, which directive is used to specify the domain name for SNI?
Assl_certificate
Blisten
Cserver_name
Droot
✗ Incorrect
The server_name directive tells nginx which hostname this server block handles, enabling SNI to select the right certificate.
What happens if a client does not support SNI when connecting to an nginx server with multiple SSL certificates?
AThe client may see a certificate warning or fail to connect
BThe server automatically disables SSL
CThe client receives all certificates
DThe server redirects to HTTP
✗ Incorrect
Without SNI support, the client cannot indicate which hostname it wants, so the server may send the wrong certificate causing warnings.
Which nginx directive specifies the SSL certificate file for a domain?
Assl_certificate
Bssl_key
Cssl_certificate_key
Dssl_protocols
✗ Incorrect
ssl_certificate points to the SSL certificate file for the domain in the server block.
Why is SNI useful for hosting multiple HTTPS sites on one server?
AIt speeds up SSL handshake
BIt allows sharing one IP address for many SSL sites
CIt disables SSL for some sites
DIt compresses SSL certificates
✗ Incorrect
SNI lets multiple SSL certificates be used on a single IP, avoiding the need for multiple IP addresses.
Explain how nginx uses SNI to serve multiple SSL certificates on one IP address.
Think about how nginx matches the requested domain to the right certificate.
You got /5 concepts.
Describe the limitations of SNI and how it affects clients without SNI support.
Consider what happens if the client cannot tell the server which site it wants.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of SNI (Server Name Indication) in nginx when using multiple SSL certificates?
easy
A. To allow multiple SSL certificates on a single IP address by selecting the correct certificate based on the requested domain name.
B. To enable HTTP/2 protocol support for faster website loading.
C. To redirect all HTTP traffic to HTTPS automatically.
D. To combine multiple SSL certificates into one file for easier management.
Solution
Step 1: Understand what SNI does
SNI allows the server to present different SSL certificates depending on the domain name requested by the client.
Step 2: Relate SNI to nginx configuration
In nginx, SNI lets you use multiple server blocks with different SSL certificates on the same IP and port.
Final Answer:
To allow multiple SSL certificates on a single IP address by selecting the correct certificate based on the requested domain name. -> Option A
Quick Check:
SNI = Multiple SSL certs on one IP [OK]
Hint: SNI matches domain to SSL cert on same IP [OK]
Common Mistakes:
Confusing SNI with HTTP/2 support
Thinking SNI merges certificates into one
Assuming SNI automatically redirects HTTP to HTTPS
2. Which of the following nginx server block snippets correctly enables SNI for two domains with separate SSL certificates?
easy
A. server { listen 80; server_name example.com example.org; ssl_certificate /etc/ssl/all.crt; ssl_certificate_key /etc/ssl/all.key; }
B. server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/example.com.crt; ssl_certificate_key /etc/ssl/example.com.key; } server { listen 443 ssl; server_name example.org; ssl_certificate /etc/ssl/example.org.crt; ssl_certificate_key /etc/ssl/example.org.key; }
C. server { listen 443; server_name example.com; ssl_certificate /etc/ssl/example.com.crt; ssl_certificate_key /etc/ssl/example.com.key; } server { listen 443; server_name example.org; ssl_certificate /etc/ssl/example.org.crt; ssl_certificate_key /etc/ssl/example.org.key; }
D. server { listen 443 ssl; server_name example.com example.org; ssl_certificate /etc/ssl/example.com.crt; ssl_certificate_key /etc/ssl/example.com.key; }
Solution
Step 1: Check listen directive for SSL
Each server block must listen on port 443 with ssl enabled to serve HTTPS.
Step 2: Verify separate server blocks for each domain
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/example.com.crt; ssl_certificate_key /etc/ssl/example.com.key; } server { listen 443 ssl; server_name example.org; ssl_certificate /etc/ssl/example.org.crt; ssl_certificate_key /etc/ssl/example.org.key; } has two server blocks, each with its own server_name and SSL cert/key, which is correct for SNI.
Final Answer:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/example.com.crt; ssl_certificate_key /etc/ssl/example.com.key; } server { listen 443 ssl; server_name example.org; ssl_certificate /etc/ssl/example.org.crt; ssl_certificate_key /etc/ssl/example.org.key; } -> Option B
Quick Check:
Separate server blocks + listen 443 ssl = correct SNI setup [OK]
Hint: Use separate server blocks with listen 443 ssl for each domain [OK]
Common Mistakes:
Omitting 'ssl' in listen directive on port 443
Combining multiple domains in one server block with one cert
Using port 80 for SSL configuration
3. Given this nginx configuration snippet, what will happen when a client requests https://example.net?
A. The client will receive the SSL certificate for example.com because example.net is not configured.
B. The client will receive the SSL certificate for example.org as a fallback.
C. The connection will fail because example.net is not configured with SSL.
D. The client will receive a certificate error but connect to example.com.
Solution
Step 1: Identify configured server names
Only example.com and example.org have server blocks with SSL certificates.
Step 2: Understand nginx default server behavior
If a requested domain is not matched, nginx serves the default SSL server block, which is usually the first one defined (example.com here).
Final Answer:
The client will receive the SSL certificate for example.com because example.net is not configured. -> Option A
Quick Check:
Unmatched domain gets first SSL cert [OK]
Hint: Unmatched domains get first server block cert [OK]
Common Mistakes:
Assuming nginx picks a fallback cert arbitrarily
Thinking connection fails without explicit config
Believing client gets a certificate error immediately
4. You configured two server blocks for SNI but clients always get the same SSL certificate regardless of domain. What is the most likely cause?
medium
A. The SSL certificate files are corrupted.
B. Both server blocks are missing the ssl parameter in the listen directive.
C. The server_name directives are identical in both server blocks.
D. The firewall is blocking port 443.
Solution
Step 1: Check server_name directives
If the server_name directives are identical in both blocks, nginx cannot distinguish between domains using SNI.
Step 2: Understand effect on SNI
SNI relies on unique server_name matches to select the correct server block and certificate. Identical names cause all requests to use the first block (default), resulting in the same certificate.
Final Answer:
The server_name directives are identical in both server blocks. -> Option C
Quick Check:
Identical server_name = always first cert [OK]
Hint: Unique server_name per block required for SNI [OK]
Common Mistakes:
Missing 'ssl' parameter in listen directive
The SSL certificate files are corrupted
The firewall is blocking port 443
5. You want to host three domains with different SSL certificates on one nginx server using SNI. Which configuration approach correctly ensures each domain uses its own certificate and nginx listens properly for HTTPS?
hard
A. Create three server blocks with listen 443; (without ssl), each with unique server_name and SSL certificates.
B. Use one server block with listen 443 ssl; and list all three domains in server_name, then specify one combined SSL certificate covering all domains.
C. Use one server block with listen 80; and redirect all traffic to HTTPS on port 443 with a single SSL certificate.
D. Create three separate server blocks, each with listen 443 ssl;, unique server_name, and corresponding ssl_certificate and ssl_certificate_key.
Solution
Step 1: Understand SNI requires separate server blocks
Each domain needs its own server block with listen 443 ssl; and its own SSL cert/key.
Step 2: Verify correct listen and server_name usage
Create three separate server blocks, each with listen 443 ssl;, unique server_name, and corresponding ssl_certificate and ssl_certificate_key. correctly uses three server blocks with SSL enabled on port 443 and unique domain names.
Final Answer:
Create three separate server blocks, each with listen 443 ssl, unique server_name, and corresponding SSL certificate and key. -> Option D
Quick Check:
Separate server blocks + listen 443 ssl + unique certs = correct SNI [OK]
Hint: One server block per domain with listen 443 ssl and cert [OK]
Common Mistakes:
Using one server block for multiple domains without SAN cert
Omitting 'ssl' in listen directive
Using port 80 for SSL traffic
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.