Как записать ключи pre-master от tls-соединений, обрабатываемых nginx?

Pavel balroga3 на yandex.ru
Вт Авг 27 20:50:18 UTC 2019


Здравствуйте.

Мы  состоим  в  реестре  организаторов  распространения  информации  и
поэтому обязаны предоставлять в надзорный орган ключи tls сессий.

Для  таких случаев существует механизм по перехвату вызовов библиотеки
openssl: https://git.lekensteyn.nl/peter/wireshark-notes/tree/src/
Суть  простая - перед запуском демона, обрабатывающего TLS-соединения
клиентов,   через   LD_PRELOAD   подгружается  эта  библиотека  и  она
сбрасывает в текстовый файл, указанный в переменой SSLKEYLOGFILE, ключи pre-master.

Эта  схема  срабатывает с апачем, но с энжинксом ключи не пишутся. Нет
ли  идей  или подсказок из-за чего это может быть и как вообще  можно записать
эти самые pre-master keys в энжинксе?

Заранее спасибо.

P.S.
Пример файла с записанными ключами:
# SSL key logfile generated by sslkeylog.c
SERVER_HANDSHAKE_TRAFFIC_SECRET 077dca0cfc53f1ba5105d7e67e1cb8aa7fba40db73580bb0997498b3260a06da 080b47a6fea27728f15c4cb70bc7478aa4e9bf5b554e8018d9462a48fff90e9514ca6dc410154c730
CLIENT_HANDSHAKE_TRAFFIC_SECRET 077dca0cfc53f1ba5105d7e67e1cb8aa7fba40db73580bb0997498b3260a06da 883ec12435f3d53bc0e42f5fd0a26d006955064747786e21cda18bfa4e2b5fffe147860114036881d
EXPORTER_SECRET 077dca0cfc53f1ba5105d7e67e1cb8aa7fba40db73580bb0997498b3260a06da 267a950066d3c4bcc2fd3bb50287b045c213737d018f15c166dc82ce7eab5f4b4dcb3939bc11db1ec7c918a321b5d9f7
SERVER_TRAFFIC_SECRET_0 077dca0cfc53f1ba5105d7e67e1cb8aa7fba40db73580bb0997498b3260a06da cdd2a750c617a721dc93595b99852a4a2436a4fb2f843617b51f7bc0de3b9a88faa5b2b5256fa4230df7fdf9f
CLIENT_TRAFFIC_SECRET_0 077dca0cfc53f1ba5105d7e67e1cb8aa7fba40db73580bb0997498b3260a06da 0afb1f7f7c5d8fc9aefc8aae3111045d7e837e3f87de600fcf44a583f45a313d703235e6c80f51d1fa614d96f


P.P.S.
Запускаю энжинкс с этой библиотекой для записи ключей через systemd так:

#cat /etc/systemd/system/nginx.service.d/override.conf
[Service]
Environment=SSLKEYLOGFILE=/tmp/premaster.txt
Environment=LD_PRELOAD=/usr/local/lib/libsslkeylog.so

Через  lsof  видно,  что  эта  библиотека  для  записи ключей энжиксом
подгружается (здесь я проверяю и мастер и воркер):
# lsof -n -p 10313 |grep ssl
nginx   10313 root  mem    REG              254,1   442984   3255 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
nginx   10313 root  mem    REG              254,1    14224  20914 /usr/local/lib/libsslkeylog.so
# lsof -n -p 10314 |grep ssl
nginx   10314 www-data  mem       REG              254,1   442984   3255 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
nginx   10314 www-data  mem       REG              254,1    14224  20914 /usr/local/lib/libsslkeylog.so


но  тем  не  менее  ключи  в файл при обращении к энжинксу по https не
пишутся.



Подробная информация о списке рассылки nginx-ru