From 7ed8da474f697ddc0009a7f27a52be9a993753eb Mon Sep 17 00:00:00 2001
From: Jeff Trawick This module provides an implementation of Certificate Transparency, in
conjunction with Configuration information about logs can be defined statically in the web
-server configuration or maintained in a Sqlite3 database. In the latter case,
+server configuration or maintained in a SQLite3 database. In the latter case,
Configuration mechanisms, format of data saved for off-line audit, and
+other characteristics are subject to change based on further feedback and
+testing. Servers need to send SCTs to their clients. SCTs in a certificate
+ extension or stapled OCSP response will be sent without any special program
+ logic. This module handles sending SCTs configured by the administrator or
+ received from configured logs. The number of SCTs sent in the ServerHello (i.e., not including those in a
+ certificate extension or stapled OCSP response) can be limited by the
+ For each server certificate, a daemon process maintains an SCT list to be
+ sent in the ServerHello, created from statically configured SCTs as well as
+ those received from logs. Logs marked as untrusted or with a maximum valid
+ timestamp before the present time will be ignored. Periodically the daemon
+ will submit certificates to a log as necessary (due to changed log
+ configuration or age) and rebuild the concatenation of SCTs. The SCT list for a server certificate will be sent to any client that
+ indicates awareness in the ClientHello when that particular server certificate
+ is used. The proxy indicates Certificate Transparency awareness in the ClientHello
+ by including the signed_certificate_timestamp extension. It can
+ recognize SCTs received in the ServerHello, in an extension in the certificate
+ for an origin server, or in a stapled OCSP response. On-line verification is attempted for each received SCT: If verification fails for at least one SCT and verification was not
+ successful for at least one SCT, the connection is aborted if
+ Additionally, the server certificate chain and SCTs are stored for off-line
+ verification if the As an optimization, on-line verification and storing of data from the
+ server is only performed the first time a web server child process receives
+ the data. This saves some processing time as well as disk space. For typical
+ reverse proxy setups, very little processing overhead will be required. Servers and proxies use different information about logs for their processing.
+ This log configuration can be set in two ways: The information that can be configured about a log using either mechanism is
+ described below: Generally, only a small subset of this information is configured for a
+ particular log. Refer to the documentation for the Both proxy and server modes set the Proxy mode sets the These variables can be logged with the Experimental support for this is implemented in the Here are rough notes for using The data saved for audit can also be used by other programs; refer to the
+ This directive is used to statically define one or more SCTs corresponding
to a server certificate. This mechanism can be used instead of or in
- addition to dynamically obtaining SCTs from configured logs.
+
+
+
+
+
+
+
+
+ ctauditscts
+ can use this configuration to find the URL of logs.
+
+
+
+ The log URL is also needed by off-line auditing of SCTs received by a
+ proxy.SSL_CT_PEER_STATUS
+ variable to indicate if the peer is CT-aware.SSL_PROXY_SCT_SOURCES
variable to
+ indicate whether and where SCTs were obtained (ServerHello, certificate
+ extension, etc.).%{varname}e
+ format of ctauditscts
+ command (in the httpd source tree, not currently installed), which itself
+ relies on the verify_single_proof.py
tool in the
+ certificate-transparency open source project. ctauditscts
+ can parse data for off-line audit (enabled with the verify_single_proof.py
.
+ However, verify_single_proof.py
is not complete currently and does
+ not provide a way to identify audit failures.ctauditscts
:
+
+
+ PYTHONPATH
to include the src/python
+ directory within the certificate-transparency tools.PATH
to include the src/python/ct/client/tools
+ directory.ctauditscts
, passing the value of the
+ ctauditscts
source code for details.
trust
flag. Set this field to 0 to
@@ -265,10 +439,13 @@ ServerHello
certificate-pem-file refers to the server certificate in PEM
format. If the name is not absolute, then it is assumed to be relative to
sct-directory must contain one or more files with extension +
sct-directory should contain one or more files with extension
.sct
, representing one or more SCTs corresponding to the
server certificate. If sct-directory is not absolute, then it is
assumed to be relative to
If sct-directory is empty, no error will be raised.
+ +This directive could be used to identify directories of SCTs maintained by + other infrastructure, provided that they are saved in binary format with + file extension .sct
diff --git a/docs/manual/programs/ctlogconfig.xml b/docs/manual/programs/ctlogconfig.xml index c3ffa1886c..55fae21a4f 100644 --- a/docs/manual/programs/ctlogconfig.xml +++ b/docs/manual/programs/ctlogconfig.xml @@ -29,6 +29,9 @@ctlogconfig
is a tool for maintaining a log configuration
database, for use with
Refer first to Log
+ configuration in the
Refer to the examples below for typical use.
@@ -37,39 +40,39 @@
- ctlogconfig db-path dump
+ ctlogconfig /path/to/db dump
- ctlogconfig db-path configure-public-key
+ ctlogconfig /path/to/db configure-public-key
[ log-id|record-id ]
/path/to/public-key.pem
- ctlogconfig db-path configure-url
+ ctlogconfig /path/to/db configure-url
[ log-id|record-id ]
log-URL
- ctlogconfig db-path valid-time-range
+ ctlogconfig /path/to/db valid-time-range
log-id|record-id
min-timestamp max-timestamp
- ctlogconfig db-path trust
+ ctlogconfig /path/to/db trust
log-id|record-id
- ctlogconfig db-path distrust
+ ctlogconfig /path/to/db distrust
log-id|record-id
- ctlogconfig db-path forget
+ ctlogconfig /path/to/db forget
log-id|record-id