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

2019-11-28 Пенетрантность vahvarh
Спасибо!
Помогло собрать SSLKEYLOG с NO_OPENSSL_102_SUPPORT.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285423,286358#msg-286358

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2019-11-27 Пенетрантность Maxim Dounin
Hello!

On Tue, Nov 26, 2019 at 06:42:24AM -0500, vahvarh wrote:

> Аналогичная задача (нужно писать ключи и дамп чтобы найти кто портит
> данные), но не помогает.
> На апаче сделали, оказалось с nginx приходит, нужно понять приходит ли так и
> на nginx или портится внутри него.
> 
> На nginx машине сделали:
> 
> systemctl edit nginx
> [Service]
> Environment=SSLKEYLOGFILE=/www/sslkeylog.txt
> Environment=LD_PRELOAD=/usr/local/lib/libsslkeylog.so
> 
> nginx.conf:
> env LD_PRELOAD=/usr/local/lib/libsslkeylog.so;
> env SSLKEYLOGFILE=/tmp/premaster.txt;
> 
> systemctl stop nginx; systemctl  start nginx
> 
> ИТОГО:
> 1) lsof -n -p показывает что libsslkeylog загружен
> 2) файл /tmp/ не создает.
> 3) cat /proc/.../environ не показывает указанных env
> 
> Возможно это из-за того что nginx старый (nginx version: nginx/1.10.3), но в
> документации ничего про такую фигню с env в старых версиях нет.

Содержимое /proc/.../environ ничего показывать и не будет, так как 
environment очищается/устанавливается в уже запущенном рабочем 
прочессе, и ядро этих изменений не увидит.  Кроме того, на Linux'е 
environment процесса используется для установки заголовка 
процесса, так что в случае nginx'а там и исходное содержимое 
затёрто.

Почему конкретно libsslkeylog загружается, но не работает - проще 
всего разбираться, видимо, инструментируя libsslkeylog и/или 
запуская всё под strace'ом.

Just in case, список пришедших в голову возможных причин:

- редактируется не тот nginx.conf;

- libsslkeylog собран не с той версией OpenSSL, с которой 
  собран/запускается nginx;

- у рабочих процессов nginx'а нет прав на запись в 
  /tmp/premaster.txt (в том числе при формальном наличии таковых 
  прав, e.g., из-за какого-нибудь SELinux'а).

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2019-11-26 Пенетрантность vahvarh
Аналогичная задача (нужно писать ключи и дамп чтобы найти кто портит
данные), но не помогает.
На апаче сделали, оказалось с nginx приходит, нужно понять приходит ли так и
на nginx или портится внутри него.

На nginx машине сделали:

systemctl edit nginx
[Service]
Environment=SSLKEYLOGFILE=/www/sslkeylog.txt
Environment=LD_PRELOAD=/usr/local/lib/libsslkeylog.so

nginx.conf:
env LD_PRELOAD=/usr/local/lib/libsslkeylog.so;
env SSLKEYLOGFILE=/tmp/premaster.txt;

systemctl stop nginx; systemctl  start nginx

ИТОГО:
1) lsof -n -p показывает что libsslkeylog загружен
2) файл /tmp/ не создает.
3) cat /proc/.../environ не показывает указанных env

Возможно это из-за того что nginx старый (nginx version: nginx/1.10.3), но в
документации ничего про такую фигню с env в старых версиях нет.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285423,286326#msg-286326

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2019-09-03 Пенетрантность Pavel
Здравствуйте.

> Hello!
>
> On Tue, Aug 27, 2019 at 11:50:18PM +0300, Pavel wrote:
>
>> Мы  состоим  в  реестре  организаторов  распространения  информации  и
>> поэтому обязаны предоставлять в надзорный орган ключи tls сессий.
>> 
>> Для  таких случаев существует механизм по перехвату вызовов библиотеки
>> openssl: https://git.lekensteyn.nl/peter/wireshark-notes/tree/src/
>> Суть  простая - перед запуском демона, обрабатывающего TLS-соединения
>> клиентов,   через   LD_PRELOAD   подгружается  эта  библиотека  и  она
>> сбрасывает в текстовый файл, указанный в переменой SSLKEYLOGFILE, ключи 
>> pre-master.
>> 
>> Эта  схема  срабатывает с апачем, но с энжинксом ключи не пишутся. Нет
>> ли  идей  или подсказок из-за чего это может быть и как вообще  можно 
>> записать
>> эти самые pre-master keys в энжинксе?
>
> [...]
>
>> [Service]
>> Environment=SSLKEYLOGFILE=/tmp/premaster.txt
>> Environment=LD_PRELOAD=/usr/local/lib/libsslkeylog.so
>
> [...]
>
>> но  тем  не  менее  ключи  в файл при обращении к энжинксу по https не
>> пишутся.
>
> Скорее всего причина в том, что переменные 
> окружения очищаются при запуске, подробнее тут:
>
> http://nginx.org/r/env
>

Огромное спасибо!

Ключи начали записываться когда добавил в nginx.conf
env LD_PRELOAD=/usr/local/lib/libsslkeylog.so;
env SSLKEYLOGFILE=/tmp/premaster.txt;


___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2019-08-30 Пенетрантность Maxim Dounin
Hello!

On Tue, Aug 27, 2019 at 11:50:18PM +0300, Pavel wrote:

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

[...]

> [Service]
> Environment=SSLKEYLOGFILE=/tmp/premaster.txt
> Environment=LD_PRELOAD=/usr/local/lib/libsslkeylog.so

[...]

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

Скорее всего причина в том, что переменные 
окружения очищаются при запуске, подробнее тут:

http://nginx.org/r/env

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2019-08-27 Пенетрантность Pavel
Здравствуйте.

Мы  состоим  в  реестре  организаторов  распространения  информации  и
поэтому обязаны предоставлять в надзорный орган ключи 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  memREG  254,1   442984   3255 
/usr/lib/x86_64-linux-gnu/libssl.so.1.1
nginx   10313 root  memREG  254,114224  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,114224  20914 
/usr/local/lib/libsslkeylog.so


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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru