我正在使用openssl sess_id -in sess.pem -noout -text
sess.pem 文件(使用 sess_out 获取)中的 ssl 会话参数解码为人类可读的文本。我想知道是否有办法做相反的事情,即将文本转换为 sess.pem 格式。基本上我只想更改 sess.pem 文件中的几个参数(session-id、master-key 等),但似乎找不到正确的命令。
答案1
没有命令可以操作或创建 SSL_SESSION,但asn1parse -genconf
可以在 DER 中创建任意 ASN.1 结构,您可以使用源文件中的定义应用该结构ssl/ssl_asn1.c
,然后使用sess_id
或仅base64
加上手动标题/尾随行转换为 PEM。
要在代码中执行此操作,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
将允许您调整主密钥。