OpenSSL密码库算法笔记——第6.1.1章 密钥结构

本文详细介绍了OpenSSL中椭圆曲线密钥结构EC_KEY的内容。包括版本号、椭圆曲线点群信息、公钥、私钥及用于数字签名等操作的方法数据等关键组成部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在椭圆曲线各个方案中,密钥的基本信息就是记载用户的公私钥。在OpenSSL中,为了便于密钥的使用和管理,还在其中附加了所在椭圆曲线的信息,甚至还增加了更多的信息。详情如下:

typedef struct ec_key_st        EC_KEY;

struct ec_key_st {

        int version;

        EC_GROUP   *group;

        EC_POINT     *pub_key;

        BIGNUM        *priv_key;

        unsigned int    enc_flag;

        point_conversion_form_t       conv_form;

        int    references;

        EC_EXTRA_DATA       *method_data;

} /* EC_KEY */;

简要介绍下上面列举出的部分参数,这部分信息也可参见代码中的ec_lcl.h文件。

  1. group      记载了密钥所在的椭圆曲线点群信息。
  2. pub_key  公钥。
  3. priv_key 私钥。
  4. method_data   记载了密钥中所使用的某些方法,比如做数字签名的方法。

别的参数涉及的并不多,所以在这里就不做介绍了,有兴趣的话可以参见ec_lcl.h文件或者参见[4]。

<think>好的,我现在需要解决用户提到的OpenSSL共享加载失败的问题,特别是'file too short'错误。首先,我需要理解这个错误的原因。用户提到在安装或使用OpenSSL 1.1.1q时出现了libssl.so.1.1文件过短的错误,这可能意味着共享文件在编译或安装过程中出现了问题,比如文件损坏或不完整。 根据用户提供的引用内容,之前的解决方案涉及下载特定版本的OpenSSL源码进行编译,并创建软链接。但现在的问题不同,错误信息是'file too short',这可能与文件系统问题、磁盘空间不足、下载不完整或编译过程中的中断有关。我需要考虑这些可能性。 首先,我应该检查用户是否正确地下载了openssl-1.1.1q的源码包,并确认下载的文件完整性。用户可能使用了wget命令,但网络问题可能导致文件未完全下载。建议用户验证文件的MD5或SHA256校验和,确保下载的文件完整。 接下来,编译和安装过程是否正确?用户可能在中途遇到错误,导致libssl.so.1.1文件没有正确生成或安装。需要确保在编译过程中没有错误信息,并且make install成功执行。此外,安装后的文件是否位于正确的目录,比如/usr/local/openssl/lib/下? 另外,用户可能尝试从其他来源直接获取预编译的libssl.so.1.1文件,但文件可能不完整或损坏,导致'file too short'错误。这种情况下,重新从官方源码编译安装更为可靠。 还要考虑文件系统的权限问题,是否有足够的权限写入目标目录,或者磁盘是否有坏道导致文件写入不完整。使用sudo命令进行安装可能解决权限问题,同时检查磁盘健康状态。 此外,用户可能在创建软链接时,源文件本身存在问题。如果libssl.so.1.1文件本身损坏或不完整,即使软链接正确,加载时也会失败。因此,需要确认源文件的完整性和正确性。 最后,可能需要运行ldconfig来更新动态链接的缓存,确保系统能够找到新安装的文件。如果这些步骤都正确执行,问题应该得到解决。如果问题依旧存在,可能需要更深入的排查,比如使用strace命令跟踪加载过程,查看具体的错误原因。</think>### 分步解决方案:OpenSSL 1.1.1q `libssl.so.1.1` "file too short" 错误解决 #### 1. 确认文件完整性 **问题原因**:`file too short` 错误通常表示共享文件损坏或不完整,可能是由于下载中断、编译失败或文件系统错误导致[^1][^3]。 **操作步骤**: - 重新下载源码并验证校验和: ```bash wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz sha256sum openssl-1.1.1q.tar.gz # 对比官网提供的SHA256值 ``` - 若校验和不匹配,需重新下载或更换镜像源。 #### 2. 完整编译安装OpenSSL 1.1.1 **问题原因**:编译过程中断或依赖缺失可能导致文件生成不完整[^1][^2]。 **操作步骤**: ```bash tar -xzf openssl-1.1.1q.tar.gz cd openssl-1.1.1q ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl make # 确保无报错 sudo make install sudo ldconfig # 更新动态缓存 ``` #### 3. 检查文件状态 **问题原因**:文件系统错误或权限问题可能导致文件写入异常[^3]。 **操作步骤**: - 检查编译生成的文件大小和权限: ```bash ls -lh /usr/local/openssl/lib/libssl.so.1.1 # 正常文件大小约为 5MB,权限应为 -rwxr-xr-x ``` - 若文件异常(如大小为0),需清理后重新编译: ```bash make clean && make distclean ./config ... && make && sudo make install ``` #### 4. 修复软链接与路径配置 **问题原因**:软链接指向损坏文件或路径未加入系统配置[^2][^4]。 **操作步骤**: - 删除旧链接并重建: ```bash sudo rm /usr/lib/x86_64-linux-gnu/libssl.so.1.1 sudo ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ``` - 添加OpenSSL路径到系统配置: ```bash echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.conf sudo ldconfig ``` #### 5. 验证修复结果 ```bash openssl version # 应显示 "OpenSSL 1.1.1q ..." ldd /usr/local/openssl/bin/openssl | grep libssl # 检查依赖路径是否正确 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值