Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Client Certificates with badssl.com

This collection shows how to use custom CA certificates and client certificates in Bruno against badssl.com test endpoints.

Certificate basics

What is a CA certificate?

A Certificate Authority (CA) certificate is a trusted root (or intermediate) that Bruno uses to verify a server’s TLS certificate.

  • Without the correct CA, Bruno cannot trust the server and the request fails with an SSL/TLS / self-signed / untrusted certificate error.
  • Adding a custom CA tells Bruno: “also trust certificates signed by this authority.”

What is a client certificate?

A client certificate proves your identity to the server (mutual TLS / mTLS).

  • The server asks for a client cert during the TLS handshake.
  • You provide a certificate file (often .p12 / .pfx) and usually a passphrase.
  • Bruno presents that cert when the request host matches the configured domain.

What does the SSL/TLS toggle do?

In Preferences → General, Bruno has SSL/TLS options (including custom CA and verification-related settings).

Setting Purpose
SSL/TLS verification When enabled, Bruno validates the server certificate against known / custom CAs. When disabled, Bruno skips certificate verification (useful for quick local debugging, not recommended for production).
Custom CA Certificate Upload a .pem / CA file so Bruno trusts servers signed by that CA (for example untrusted-root.badssl.com).

Use verification on with a proper custom CA when possible. Turning verification off hides certificate problems instead of fixing trust.


Certificates in this folder

File Used for
certificates/badssl-untrusted-root.pem Custom CA for https://untrusted-root.badssl.com
certificates/badssl.com-client.p12 Client certificate for https://client.badssl.com

The certificates/ folder is ignored by Bruno’s collection bundling (opencollection.yml). Keep cert files local; do not commit secrets or private keys to shared remotes unless your team intentionally manages them.


Request 1: ca-cert (custom CA)

URL: https://untrusted-root.badssl.com

This site uses a certificate signed by an untrusted root. With Bruno’s default CA store, the request fails (self-signed / untrusted certificate error).

Steps for a successful request

  1. Open Bruno → PreferencesGeneral.
  2. Enable Use Custom CA Certificate.
  3. Select certificates/badssl-untrusted-root.pem from this collection.
  4. Keep SSL/TLS Certificate Verification enabled so Bruno uses the custom CA to validate the server.
  5. Open the ca-cert request and send it.

Custom CA in Preferences → General

Expected result: The request succeeds and you get a normal HTTPS response from badssl.

Without the custom CA: Sending the same request with only the default CA trust store fails with an SSL/TLS certificate error from badssl’s untrusted root.


Request 2: client-cert-badssl (client certificate)

URL: https://client.badssl.com

This endpoint requires a client certificate. Without it, the TLS handshake fails or the server rejects the connection.

Certificate details

Field Value
Host client.badssl.com
Certificate file certificates/badssl.com-client.p12
Passphrase badssl.com

Option A — Collection-level client certificate

  1. Open this collection → Collection SettingsClient Certificates.
  2. Click + Add Certificate and set:
    • Host: client.badssl.com
    • Type: PFX / PKCS#12 (.p12)
    • File: badssl.com-client.p12
    • Passphrase: badssl.com
  3. Save, then send the client-cert-badssl request.

Collection Settings → Client Certificates

Option B — App-level client certificate (Bruno 4.1.0+)

From Bruno v4.1.0, you can also add client certificates at the app (Preferences) level, not only on a single collection.

  1. Open PreferencesClient Certificates.
  2. Click + Add Certificate and set the same values:
    • Host: client.badssl.com
    • File: badssl.com-client.p12
    • Passphrase: badssl.com
  3. Save, then send the client-cert-badssl request from any collection that targets that host.

Preferences → Client Certificates (app level)

Expected result: The request completes successfully against https://client.badssl.com.

Without the client cert: The request fails because the server requires mutual TLS authentication.


Quick checklist

  • Custom CA (badssl-untrusted-root.pem) added in Preferences for ca-cert
  • SSL/TLS verification left on when testing custom CA trust
  • Client cert (badssl.com-client.p12) added for host client.badssl.com (collection or app level)
  • Passphrase set to badssl.com
  • Send ca-cert and client-cert-badssl individually to verify both flows

Related Bruno docs

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors