Skip to main content

Profiles

TLS-Anvil supports test selection through profiles, which allow you to restrict and organize the tests to be executed.

Profiles are defined in JSON format and specify:

  • A profile name
  • Optional references to sub-profiles
  • A list of test IDs to include in the test run

Test IDs can be found in the metadata.json file.


Example Profile: happyFlow.json

happyFlow.json
{
"name": "happyFlow",
"profiles": [],
"testIds": [
"5246-jsdAL1vDy5",
"8446-jVohiUKi4u"
]
}
  • Line 2: The name of the profile
  • Line 3: A list of referenced sub-profiles (empty in this example) |
  • Line 4-6: The test IDs to execute (representing tests for TLS 1.2 and TLS 1.3 happy paths) |

Using a Profile with TLS-Anvil

To use a profile, pass the -profiles and -profileFolder parameters. The .json extension is optional.

Run with Profile
docker run \
--rm \
-it \
--name tls-anvil \
--network tls-anvil \
-v $(pwd):/output/ \
-v ./profiles/:/profiles/ \
ghcr.io/tls-attacker/tlsanvil:latest \
-parallelHandshakes 1 \
-connectionTimeout 200 \
-strength 1 \
-identifier openssl-server \
-profileFolder /profiles \
-profiles happyFlow \
server \
-connect openssl-server:8443

This command:

  • Mounts the profiles directory
  • Selects the happyFlow profile
  • Connects to the target TLS server at openssl-server:8443

You can chain multiple profiles or build complex configurations by referencing other profiles inside the profiles array. This supports modular and scalable test setups.