Я использую openssl sess_id -in sess.pem -noout -text
для декодирования параметров сеанса ssl в файле sess.pem (который я получил с помощью sess_out) в текст, который может читать человек. Я хотел узнать, есть ли способ сделать наоборот, т. е. преобразовать текст в формат типа sess.pem. По сути, я просто хочу изменить пару параметров (session-id, master-key и т. д.) внутри файла sess.pem, но не могу найти нужную команду.
решение1
Команд для управления или создания SSL_SESSION нет, но asn1parse -genconf
можно создать произвольную структуру ASN.1 в DER, которую можно применить, используя определение в исходном файле ssl/ssl_asn1.c
, а затем преобразовать в PEM с sess_id
или просто base64
с добавлением вручную строк заголовка/концевика.
Чтобы сделать это в коде, API документируется обычным способом; делайте это man -k SSL_SESSION
на большинстве Unix или Unix-подобных. Если на Windows или какой-то другой плохо установленной/упакованной системе, перейдите наhttps://www.openssl.org/docs/man1.1.1/man3/и посмотрите под PEM_*SSL_SESSION
и SSL_SESSION_*
.
Но даже если какой-то (пользовательский) стек не может проверить сохраненные параметры на соответствие новому hello, он по сути все равно должен использовать сохраненные параметры, поэтому, хотя это, по крайней мере, можно считать нарушением RFC, я не вижу, как это может быть уязвимостью.
решение2
Вот продолжениеОтвет @dave_thompson_085: вы можете использоватьPEM_read_SSL_SESSION
иPEM_write_SSL_SESSION
функции библиотеки OpenSSL для декодирования и перекодирования PEM-файла.SSL_SESSION_set1_master_key
позволит вам настроить главный ключ.