SSL Headers Plugin

The sslheaders plugins injects SSL session information into HTTP request headers. It can operate as a global plugin or as a remap plugin.

Plugin Options

The following options may be specified when loading the plugin in plugin.config or remap.config:

--attach=WHICH

This option specifies which HTTP request the SSL headers are attached to.

client causes the headers to be injected into the client request. This is primarily useful if another plugin should inspect then. server is the default and injects the headers into the origin server request. both injects the headers into both the client request and the origin server request.

A list of KEY=VALUE pairs follows any options. The KEY names the HTTP header to inject, and VALUE names the SSL session field.

SSL session field

Description

client.certificate

The client certificate in PEM format

client.subject

The client certificate subject DN

client.issuer

The client certificate issuer DN

client.serial

The client certificate serial number in hexadecimal format

client.signature

The client certificate signature in hexadecimal format

client.notbefore

The client certificate validity start time

client.notafter

The client certificate validity end time

server.certificate

The server certificate in PEM format

server.subject

The server certificate subject DN

server.issuer

The server certificate issuer DN

server.serial

The server certificate serial number in hexadecimal format

server.signature

The server certificate signature in hexadecimal format

server.notbefore

The server certificate validity start time

server.notafter

The server certificate validity end time

The client.certificate and server.certificate fields emit the corresponding certificate in PEM format, with newline characters replaced by spaces.

If the sslheaders plugin activates on non-SSL connections, it will delete all the configured HTTP header names so that malicious clients cannot inject misleading information. If any of the SSL fields expand to an empty string, those headers are also deleted.

Examples:

In this example, the origin server is interested in the subject of the server certificate that was used to accept a client connection. We can apply the sslheaders plugin to a generic remap rule to provide this information. The remap.config configuration would be:

regex_map https://*.example.com/ http://origin.example.com/ \
  @plugin=sslheaders.so @pparam=SSL-Server=server.subject

In this example, we have set proxy.config.ssl.client.certification_level to request SSL client certificates. We can then configure sslheaders to populate the client certificate subject globally by adding it to plugin.config:

sslheaders.so SSL-Client-ID=client.subject SSL-Client-NotBefore=client.notbefore SSL-Client-NotAfter-client.notafter