Bird
Raised Fist0
Expressframework~20 mins

HTTPS and SSL certificates in Express - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
HTTPS & SSL Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What happens when you run this Express HTTPS server code?
Consider this Express server setup using HTTPS. What will the server do when started?
Express
import express from 'express';
import https from 'https';
import fs from 'fs';

const app = express();

app.get('/', (req, res) => {
  res.send('Secure Hello!');
});

const options = {
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
};

https.createServer(options, app).listen(8443, () => {
  console.log('HTTPS server running on port 8443');
});
AThe server starts on port 8443 and responds with 'Secure Hello!' over HTTPS.
BThe server starts but throws an error because Express cannot handle HTTPS directly.
CThe server starts on port 8443 but responds with 'Hello' over HTTP, not HTTPS.
DThe server fails to start because the key and cert files are missing or invalid.
Attempts:
2 left
💡 Hint
Think about how HTTPS servers are created in Node.js with Express.
📝 Syntax
intermediate
1:30remaining
Which option correctly reads SSL certificate files for HTTPS in Express?
You want to create an HTTPS server in Express. Which code snippet correctly reads the SSL key and certificate files?
Aconst options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem') };
Bconst options = { key: fs.readFile('key.pem'), cert: fs.readFile('cert.pem') };
Cconst options = { key: fs.readFileSync('key.pem'), cert: 'cert.pem' };
Dconst options = { key: 'key.pem', cert: 'cert.pem' };
Attempts:
2 left
💡 Hint
Remember that the HTTPS server needs the actual file contents, not just file names.
🔧 Debug
advanced
2:30remaining
Why does this HTTPS Express server crash with 'Error: error:0909006C:PEM routines:get_name:no start line'?
Look at this code snippet. Why does the server crash with the PEM error when starting?
Express
import express from 'express';
import https from 'https';
import fs from 'fs';

const app = express();

const options = {
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
};

https.createServer(options, app).listen(443);
AThe port 443 is already in use by another process.
BThe server.key and server.cert files are missing from the directory.
CThe key and cert files are read as strings but should be read as buffers without encoding.
DExpress app is missing a route handler, causing the crash.
Attempts:
2 left
💡 Hint
PEM errors often relate to how the certificate files are read or formatted.
❓ state_output
advanced
2:00remaining
What is the output when accessing the HTTP server that redirects to HTTPS?
Given this Express setup, what response does a client get when requesting http://localhost:3000?
Express
import express from 'express';

const app = express();

app.use((req, res, next) => {
  if (!req.secure) {
    return res.redirect('https://' + req.headers.host + req.url);
  }
  next();
});

app.get('/', (req, res) => {
  res.send('Welcome to secure site');
});

app.listen(3000, () => console.log('HTTP server running on port 3000'));
AThe client receives a 404 Not Found error.
BThe client receives the text 'Welcome to secure site' over HTTP.
CThe server crashes because req.secure is undefined.
DThe client receives a 302 redirect to the HTTPS version of the URL.
Attempts:
2 left
💡 Hint
Check what happens when req.secure is false in Express middleware.
🧠 Conceptual
expert
3:00remaining
Why is it important to use a trusted SSL certificate in production Express HTTPS servers?
Choose the best reason why production HTTPS servers should use certificates from trusted Certificate Authorities (CAs).
ASelf-signed certificates are faster to generate and improve server performance.
BBrowsers trust certificates from known CAs, preventing security warnings and ensuring encrypted communication.
CTrusted certificates allow the server to run on any port without restrictions.
DUsing trusted certificates disables the need for HTTPS middleware in Express.
Attempts:
2 left
💡 Hint
Think about user experience and browser security when visiting HTTPS sites.

Practice

(1/5)
1. What is the main purpose of using HTTPS in an Express application?
easy
A. To encrypt data between the client and server for security
B. To speed up the server response time
C. To allow the server to handle more requests simultaneously
D. To enable server-side rendering of pages

Solution

  1. Step 1: Understand HTTPS role

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

    Only To encrypt data between the client and server for security correctly describes HTTPS purpose; others relate to performance or rendering, not encryption.
  3. Final Answer:

    To encrypt data between the client and server for security -> Option A
  4. Quick Check:

    HTTPS = encrypt data [OK]
Hint: HTTPS means secure data transfer with encryption [OK]
Common Mistakes:
  • Thinking HTTPS speeds up server
  • Confusing HTTPS with server rendering
  • Believing HTTPS increases request handling
2. Which of the following is the correct way to create an HTTPS server in Express using SSL files?
easy
A. const express = require('express'); express.createServer({ssl: true}).listen(443);
B. const https = require('https'); https.createServer({key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem')}, app).listen(443);
C. const https = require('https'); https.createServer(app).listen(443);
D. const http = require('http'); http.createServer(app).listen(443);

Solution

  1. Step 1: Identify HTTPS server creation syntax

    Express needs Node's https module with SSL key and cert files to create HTTPS server.
  2. Step 2: Check options for correct usage

    const https = require('https'); https.createServer({key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem')}, app).listen(443); correctly uses https.createServer with key and cert from files and passes Express app.
  3. Final Answer:

    const https = require('https'); https.createServer({key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem')}, app).listen(443); -> Option B
  4. Quick Check:

    HTTPS server needs key and cert [OK]
Hint: HTTPS server needs key and cert files passed to https.createServer [OK]
Common Mistakes:
  • Using http module instead of https
  • Not providing key and cert options
  • Trying to create HTTPS server directly from express
3. What will happen if you try to start an HTTPS server in Express without providing the SSL certificate file?
medium
A. The server will start but clients will see a warning
B. The server will start normally but without encryption
C. The server will fallback to HTTP automatically
D. The server will throw an error and not start

Solution

  1. Step 1: Understand SSL certificate role in HTTPS

    SSL certificate is required for HTTPS server to encrypt and authenticate connections.
  2. Step 2: Predict behavior without certificate

    Without certificate, https.createServer throws an error and server fails to start.
  3. Final Answer:

    The server will throw an error and not start -> Option D
  4. Quick Check:

    Missing cert causes error [OK]
Hint: HTTPS server must have cert file or it errors [OK]
Common Mistakes:
  • Assuming server starts without encryption
  • Thinking server falls back to HTTP automatically
  • Believing clients see warning but server runs
4. Consider this code snippet to create an HTTPS server in Express:
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();

https.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
}, app).listen(443);
What is a common mistake that could cause this code to fail?
medium
A. Using incorrect file paths for key or cert files
B. Not calling app.listen() separately
C. Not importing the http module
D. Using express() instead of https() to create server

Solution

  1. Step 1: Check file reading for SSL key and cert

    fs.readFileSync requires correct file paths; wrong paths cause errors.
  2. Step 2: Verify server creation method

    https.createServer with app is correct; app.listen() is not needed separately here.
  3. Final Answer:

    Using incorrect file paths for key or cert files -> Option A
  4. Quick Check:

    Wrong file paths cause readFileSync error [OK]
Hint: Check SSL file paths carefully to avoid read errors [OK]
Common Mistakes:
  • Calling app.listen() with HTTPS server
  • Forgetting to require https module
  • Trying to create HTTPS server with express() only
5. You want to redirect all HTTP requests to HTTPS in your Express app. Which approach correctly achieves this?
hard
A. Use express.static middleware to serve HTTPS content on HTTP port
B. Start only an HTTPS server and ignore HTTP requests
C. Create an HTTP server that listens on port 80 and redirects all requests to HTTPS URL
D. Set app.set('secure', true) to force HTTPS automatically

Solution

  1. Step 1: Understand HTTP to HTTPS redirection

    To redirect HTTP to HTTPS, an HTTP server must listen and send redirect responses.
  2. Step 2: Evaluate options for redirect method

    Create an HTTP server that listens on port 80 and redirects all requests to HTTPS URL correctly creates HTTP server on port 80 that redirects to HTTPS URL; others do not handle redirection properly.
  3. Final Answer:

    Create an HTTP server that listens on port 80 and redirects all requests to HTTPS URL -> Option C
  4. Quick Check:

    HTTP server redirects to HTTPS [OK]
Hint: Use HTTP server to redirect all traffic to HTTPS [OK]
Common Mistakes:
  • Assuming HTTPS server alone handles HTTP requests
  • Using static middleware for redirection
  • Believing app.set('secure', true) forces HTTPS
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