Bird
Raised Fist0
Raspberry Piprogramming~20 mins

HTTPS for web server in Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
HTTPS Server Mastery on Raspberry Pi
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Python HTTPS server code snippet?

Consider this Python code snippet running on a Raspberry Pi to start a simple HTTPS server using http.server and ssl modules. What will it print when started successfully?

Raspberry Pi
import http.server
import ssl

server_address = ('', 4443)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile='server.pem', server_side=True)
print('Serving on https://localhost:4443')
httpd.serve_forever()
AServing on https://localhost:4443
BServing on https://0.0.0.0:4443
CError: certfile not found
DServing on http://localhost:4443
Attempts:
2 left
💡 Hint

Look at the print statement and the port used.

🧠 Conceptual
intermediate
1:30remaining
Which file is essential to enable HTTPS on a Raspberry Pi web server?

To enable HTTPS on a Raspberry Pi web server, which file must you have to provide the server's identity securely?

Aindex.html (homepage file)
Bconfig.txt (system configuration file)
Cserver.pem (certificate and private key file)
Dhosts (local DNS file)
Attempts:
2 left
💡 Hint

Think about what HTTPS needs to prove the server's identity.

🔧 Debug
advanced
2:30remaining
Why does this HTTPS server code raise an error?

Look at this Python code snippet for an HTTPS server on Raspberry Pi. It raises an error when run. What is the cause?

Raspberry Pi
import http.server
import ssl

server_address = ('', 4443)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, keyfile='server.key', certfile='server.crt', server_side=True)
httpd.serve_forever()
Assl.wrap_socket requires certfile only, not keyfile
BPort 4443 is reserved and cannot be used
Chttp.server.HTTPServer does not support SSL wrapping
DMissing combined PEM file; keyfile and certfile must be combined
Attempts:
2 left
💡 Hint

Check the SSL wrapping parameters and file requirements.

📝 Syntax
advanced
2:00remaining
Which option correctly creates an SSL context for HTTPS on Raspberry Pi?

Choose the correct Python code snippet that creates an SSL context for an HTTPS server on Raspberry Pi.

A
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_SSLv3)
context.load_cert_chain('server.pem')
B
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain('server.pem')
C
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_cert_chain('server.pem')
D
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
context.load_cert_chain('server.pem')
Attempts:
2 left
💡 Hint

Look for the protocol designed for servers.

🚀 Application
expert
3:00remaining
How many simultaneous HTTPS connections can this Raspberry Pi server handle?

Given this Python HTTPS server code running on Raspberry Pi, how many simultaneous HTTPS client connections can it handle by default?

Raspberry Pi
import http.server
import ssl

server_address = ('', 4443)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile='server.pem', server_side=True)
httpd.serve_forever()
A1
B5
C10
DUnlimited
Attempts:
2 left
💡 Hint

Consider the default behavior of http.server.HTTPServer.

Practice

(1/5)
1. What is the main purpose of using HTTPS on a Raspberry Pi web server?
easy
A. To make the website load faster
B. To change the website's design automatically
C. To allow more users to connect simultaneously
D. To encrypt data and keep the website safe

Solution

  1. Step 1: Understand HTTPS function

    HTTPS encrypts data between the user and the server to protect privacy and security.
  2. Step 2: Compare options

    Only To encrypt data and keep the website safe correctly describes HTTPS purpose; others are unrelated to encryption.
  3. Final Answer:

    To encrypt data and keep the website safe -> Option D
  4. Quick Check:

    HTTPS = encrypt data [OK]
Hint: HTTPS means secure data transfer with encryption [OK]
Common Mistakes:
  • Thinking HTTPS speeds up the website
  • Confusing HTTPS with website design
  • Believing HTTPS increases user capacity
2. Which command correctly stops the Apache web server on Raspberry Pi before obtaining an SSL certificate?
easy
A. sudo systemctl stop apache2
B. sudo start apache2
C. apache2 stop sudo
D. stop apache2 sudo

Solution

  1. Step 1: Recall correct systemctl syntax

    The command to stop a service is 'sudo systemctl stop servicename'.
  2. Step 2: Identify correct option

    sudo systemctl stop apache2 matches the correct syntax to stop Apache2; others are invalid commands.
  3. Final Answer:

    sudo systemctl stop apache2 -> Option A
  4. Quick Check:

    Stop service = sudo systemctl stop [OK]
Hint: Use 'sudo systemctl stop apache2' to stop Apache safely [OK]
Common Mistakes:
  • Using incorrect command order
  • Omitting 'sudo' for permissions
  • Using 'start' instead of 'stop'
3. What will be the output of this command on Raspberry Pi after installing Certbot and running it to get a certificate?
sudo certbot --apache
medium
A. It automatically obtains and installs an SSL certificate for Apache
B. It deletes all Apache configuration files
C. It starts the Apache server without SSL
D. It shows an error because Certbot is not compatible

Solution

  1. Step 1: Understand Certbot command

    The command 'sudo certbot --apache' requests and installs SSL certificates automatically for Apache.
  2. Step 2: Evaluate options

    Only It automatically obtains and installs an SSL certificate for Apache correctly describes the expected behavior; others are incorrect or false.
  3. Final Answer:

    It automatically obtains and installs an SSL certificate for Apache -> Option A
  4. Quick Check:

    Certbot --apache = get SSL cert [OK]
Hint: Certbot with --apache auto installs SSL cert [OK]
Common Mistakes:
  • Thinking Certbot deletes files
  • Assuming Certbot starts server
  • Believing Certbot is incompatible with Apache
4. You tried to get an SSL certificate but forgot to stop Apache first. What error will most likely occur?
medium
A. No internet connection error
B. Certificate installed successfully
C. Port 80 is already in use error
D. Apache configuration syntax error

Solution

  1. Step 1: Understand port usage during certificate request

    Certbot needs to use port 80 to verify domain ownership, but Apache uses it if running.
  2. Step 2: Identify error from port conflict

    If Apache is not stopped, Certbot cannot bind port 80, causing 'Port 80 is already in use' error.
  3. Final Answer:

    Port 80 is already in use error -> Option C
  4. Quick Check:

    Apache running blocks port 80 for Certbot [OK]
Hint: Stop Apache before Certbot to avoid port 80 conflict [OK]
Common Mistakes:
  • Ignoring need to stop Apache
  • Expecting success without stopping server
  • Confusing error with internet issues
5. After successfully obtaining an SSL certificate on Raspberry Pi, what is the correct sequence to enable HTTPS on your Apache web server?
hard
A. Restart Apache, then configure firewall to allow port 443
B. Configure firewall to allow port 443, then restart Apache
C. Restart Apache only, no firewall changes needed
D. No action needed; HTTPS works automatically without restart

Solution

  1. Step 1: Open firewall port 443 for HTTPS

    Before restarting Apache, ensure firewall allows HTTPS traffic on port 443.
  2. Step 2: Restart Apache to apply SSL certificate

    Restarting Apache activates the new SSL certificate and enables HTTPS.
  3. Final Answer:

    Configure firewall to allow port 443, then restart Apache -> Option B
  4. Quick Check:

    Firewall open 443, then restart Apache [OK]
Hint: Open port 443 before restarting Apache for HTTPS [OK]
Common Mistakes:
  • Restarting Apache before opening firewall port
  • Assuming no firewall changes needed
  • Believing HTTPS works without restart
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard