Certify is a tool to create and view certificates and can be used to set up a test PKI for secured V2X communication based on TS 103 097 v1.2.1.

Installation

You need to enable building this tool explicitly. Run cmake -D BUILD_CERTIFY=ON .. in your build directory and rebuild Vanetza. You should be able to find bin/certify in your build directory afterwards.

PKI Setup

The following section describe how to setup a test PKI. We will generate a root certificate, an authorization authority certificate and an authorization ticket.

Generating Keys

New private keys can be generated using bin/certify generate-key root.key. The corresponding public key can be extracted using bin/certify extract-public-key --private-key root.key root.pub, but this step usually isn’t required.

Please generate a root.key for the root certificate, a aa.key for the authorization authority and a ticket.key for the authorization ticket.

Generating Root Certificates

A root certificate can be generated using bin/certify generate-root --subject-key root.key root.cert.

Generating Authorization Authorities

An authorization authority certificate can be generated using bin/certify generate-aa --sign-key root.key --sign-cert root.cert --subject-key aa.key aa.cert.

Generating Authorization Tickets

An authorization ticket can be generated using bin/certify generate-ticket --sign-key aa.key --sign-cert aa.cert --subject-key ticket.key ticket.cert.

If you’re generating a certificate for real V2X hardware, it will likely use a hardware security module (HSM), which will only expose the public key. You can export the given public key to a file and use --subject-key also with public keys. The public key needs to be encoded according to the rules specified by ETSI in TS 103 097 v1.2.1.

Other Options

This guide only uses the required options. Further options may be available for certain commands. Use bin/certify <command> --help for further information.

Acknowledgement

This application has been initially developed Niklas Keller.