Back to Client SSL vs Server SSL
F5 BIG-IPSSL/TLSHow-ToStep-by-Step

F5 BIG-IP Certificate Installation

Step-by-step guide to installing SSL certificates on BIG-IP.

15 min readDecember 2025
F5 Certificate Installation - Step by Step

The 30-Second Version

The process: Import certificate → Import key → Import chain → Create/update Client SSL profile → Assign to virtual server.

Location: System → Certificate Management → Traffic Certificate Management → SSL Certificate List

Common gotcha: Don't forget the intermediate certificate chain - it's a separate import.

Before You Start

What You Need

ItemDescriptionFile Extension
Server CertificateYour SSL certificate from the CA.crt, .cer, .pem
Private KeyGenerated when you created the CSR.key, .pem
Intermediate ChainFrom your CA (often called "CA Bundle").crt, .pem, .ca-bundle
Key PassphraseOnly if your key is password-protected(text)

Pre-Flight Checklist

  • Certificate and key files are accessible
  • You know the key passphrase (if encrypted)
  • You have intermediate certificate(s) from your CA
  • You have admin access to F5 BIG-IP
  • You know which virtual server needs this certificate

Import the Certificate and Key

Path: System → Certificate Management → Traffic Certificate Management → SSL Certificate List → Import

Option A: Import Key + Certificate Together (Recommended)

  1. Click Import
  2. Import Type: Select Certificate + Key
  3. Certificate Name: Use a descriptive name (e.g., www.example.com_2025)
  4. Certificate Source: Upload file or paste PEM text
  5. Key Source: Upload file or paste PEM text
  6. Key Passphrase: Enter if key is encrypted (leave blank if not)
  7. Click Import

Option B: Import Separately

Import Certificate:

  1. Click Import
  2. Import Type: Select Certificate
  3. Certificate Name: www.example.com_2025
  4. Certificate Source: Upload or paste
  5. Click Import

Import Key:

  1. Click Import
  2. Import Type: Select Key
  3. Key Name: Use same name as certificate for easy matching
  4. Key Source: Upload or paste
  5. Key Passphrase: Enter if encrypted
  6. Click Import

Verification

After import, you should see your certificate listed with:

  • Certificate name
  • Expiration date
  • Key (shows "Yes" if key is present)

Import the Intermediate Chain

This step is critical.

Missing intermediates cause "certificate not trusted" errors on mobile devices and API clients.

Path: System → Certificate Management → Traffic Certificate Management → SSL Certificate List → Import

  1. Click Import
  2. Import Type: Select Certificate (not Key)
  3. Certificate Name: Descriptive name (e.g., DigiCert_Intermediate_2025 or Sectigo_Chain)
  4. Certificate Source: Upload or paste your intermediate certificate
  5. Click Import

Multiple Intermediates?

If your CA provided multiple intermediate files, you have two options:

Option 1: Import Each Separately

Import each intermediate as its own certificate. Later, you'll need to create a bundle (more complex).

Option 2: Create a Bundle File First (Recommended)

# Concatenate intermediates (order matters: your issuer first)
cat intermediate1.crt intermediate2.crt > chain-bundle.crt

Then import the bundle as a single certificate.

Create or Update the Client SSL Profile

Path: Local Traffic → Profiles → SSL → Client

Creating a New Profile

  1. Click Create
  2. Name: Descriptive name (e.g., clientssl_www.example.com)
  3. Parent Profile: Select clientssl (default parent)

Configure Certificate Key Chain

  1. Scroll to Certificate Key Chain section
  2. Click Add
  3. Certificate: Select your imported certificate
  4. Key: Select your imported key (should auto-match if names match)
  5. Chain: Select your intermediate certificate
  6. Passphrase: Enter if key is encrypted
  7. Click Add
  8. Click Finished

Visual of Certificate Key Chain

┌─────────────────────────────────────────────────┐
│ Certificate Key Chain                           │
├─────────────────────────────────────────────────┤
│ Certificate: www.example.com_2025          [▼]  │
│ Key:         www.example.com_2025          [▼]  │
│ Chain:       DigiCert_Intermediate_2025    [▼]  │
│ Passphrase:  ••••••••                           │
│                                      [Add]      │
└─────────────────────────────────────────────────┘

Assign Profile to Virtual Server

Path: Local Traffic → Virtual Servers → [Your Virtual Server]

  1. Select your virtual server
  2. Scroll to SSL Profile (Client) section
  3. Move your new profile from Available to Selected
  4. Click Update

Quick Check

Your virtual server should now show:

SSL Profile (Client): clientssl_www.example.com

Verify the Installation

Test from Command Line

# Basic connection test
openssl s_client -connect your-vip-ip:443 -servername www.example.com

# Check certificate details
openssl s_client -connect your-vip-ip:443 -servername www.example.com 2>/dev/null | \
  openssl x509 -noout -subject -issuer -dates

# Verify chain is being sent (should show 2+ certificates)
openssl s_client -connect your-vip-ip:443 -servername www.example.com 2>/dev/null | \
  grep -c "BEGIN CERTIFICATE"

Test with SSL Labs

  1. Go to ssllabs.com/ssltest
  2. Enter your domain
  3. Check for:
  • Certificate valid
  • Chain complete
  • No chain issues

Test from F5 (tmsh)

# List certificates
tmsh list sys crypto cert

# Show certificate details
tmsh list sys crypto cert www.example.com_2025 all-properties

# Verify profile configuration
tmsh list ltm profile client-ssl clientssl_www.example.com

Common Installation Errors

ErrorCauseFix
"Key and certificate do not match"Wrong private key uploadedRe-export key from where you generated CSR
"Invalid certificate"Wrong format or corrupted fileEnsure PEM format, check for hidden characters
"Unable to load key"Wrong passphrase or encrypted keyVerify passphrase or decrypt key first
Certificate shows but not workingProfile not assigned to VSCheck Virtual Server → SSL Profile (Client)
"Not trusted" on some clientsMissing chain certificateImport and assign intermediate in Chain field
Key import failsKey still encryptedDecrypt with: openssl rsa -in encrypted.key -out decrypted.key

Quick Reference - tmsh Commands

# Import certificate via tmsh
tmsh install sys crypto cert www.example.com_2025 from-local-file /var/tmp/cert.crt

# Import key via tmsh
tmsh install sys crypto key www.example.com_2025 from-local-file /var/tmp/cert.key

# Create client SSL profile
tmsh create ltm profile client-ssl clientssl_www.example.com \
  cert-key-chain add { www.example.com_2025 { \
    cert www.example.com_2025 \
    key www.example.com_2025 \
    chain DigiCert_Intermediate_2025 \
  }}

# Assign profile to virtual server
tmsh modify ltm virtual my-virtual-server profiles add { clientssl_www.example.com { context clientside } }

# Save configuration
tmsh save sys config

Installation Checklist

  • Certificate imported
  • Private key imported (matches certificate)
  • Intermediate chain imported
  • Client SSL profile created
  • Certificate Key Chain configured with cert + key + chain
  • Profile assigned to virtual server
  • Tested with openssl s_client
  • Verified chain is complete (no "not trusted" errors)
  • Configuration saved

Frequently Asked Questions

Related Resources