
【物联网】Linux平台OpenSSL安装教程
00. 目录
01. OpenSSL概述
OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用密钥、证书封装管理功能及实现ssl协议。OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库libssl、应用程序命令工具以及密码算法库libcrypto。
SSL:Secure Socket Layer,安全套接字层协议,分为SSLv2和SSLv3两个版本,TSL在SSL3.0基础之上提出的安全通信标准化版。主要是为了加密传输数据而产生的协议,能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。
SSL协议建立在可靠的传输层协议(TCP,UDP,SCTP)之上,应用层协议(HTTP,FTP,TELNRET)在SSL之上,SSL协议在应用层协议通信之前就已经完成了加密算法、服务器认证等工作。http协议调用了ssl协议,那么他就变成了https(http –>ssl–>https)。主要功能两个:
a. 加密解密在网络中传输的数据包,同时保护这些数据不被修改和伪造。
应用层——>ssl解密——>传输层
传输层——>ssl加密认证——>应用层
b. 验证网络对话中双方的身份。
SSL握手协议:SSL包含两个子协议,一个是包协议,一个是子协议,包协议说明SSL的数据包是如何封装的;握手协议说明通信双方协商通信双方决定使用什么算法及算法使用的key。暂时只讨论握手协议的过程。
1) Client向服务器发送自己支持的协议版本(如TLS1.2)、client生成的随机数、自己加密算法的一些配置。
2) Server 收到Client请求后向客户端response:确认使用加密通信协议的版本、生成一个随机数、确认使用加密的方法、server certificate(服务器证书)。
3) Client 验证服务器证书,在确认无误后取出其公钥,并发送随机数 Pre-Master-Key(用于公钥加密)、编码变更通知(通信双方都用商定好的密钥进行通信;即随后的信息都将用双方商定好的加密方法和密钥发送. )
4) Server验证完client的身份之后,用自己的私有密钥解密得到pre-master-key后,然后双方利用这个pre-master key来共同协商,得到master secret。返回信息给client
5) 双方用master一起产生真正的session key,这就是他们在剩下的过程中的对称加密的key了。这个key还可以用来验证数据完整性。双方再交换结束信息。握手结束。
证书Certificate和证书颁发机构CA(certification authority)
证书是建立公共密钥和某个实体之间联系的数字化的文件。它包含的内容有:版本信息(X.509也是有三个版本的)、系列号、证书接受者名称、颁发者名称、证书有效期、公共密钥、一大堆的可选的其他信息、CA的数字签名。证书由CA颁发,由CA决定该证书的有效期,由该CA签名。每个证书都有唯一的系列号。证书的系列号和证书颁发者来决定某证书的唯一身份。常用的证书是采用X.509结构的,这是一个国际标准证书结构,
CA是第三方机构,被你信任,由它保证证书的确发给了应该得到该证书的人。CA自己有一个庞大的public key数据库,用来颁发给不同的实体。CA也是一个实体,它也有自己的公共密钥和私有密钥。
加密算法
1)对称加密:指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性
常见的对称加密算法:DES、3DES、DESX、AES、RC4、RC5、RC6等
2)非对称加密:指加密和解密使用不同密钥的加密算法,也称为公私钥加密
常见的非对称加密算法:RSA、DSA(数字签名用)等
3)Hash算法:Hash算法它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值逆向获得目标信息
常见的Hash算法:MD2、MD4、MD5、SHA、SHA-1等
02. OpenSSL下载
CSDN下载:openssl-1.1.1d.rar
03. OpenSSL安装
3.1 解压OpenSSL
deng@local:~/sz01$ tar -xzvf openssl-1.1.1d.tar.gz
3.2 进入openssl目录
deng@local:~/sz01$ cd openssl-1.1.1d/
3.3 创建安装目录openssl_install
deng@local:~/sz01/openssl-1.1.1d$ mkdir -p ~/openssl_install/ssl
deng@local:~/sz01/openssl-1.1.1d$
3.4 运行如下配置命令
deng@local:~/sz01/openssl-1.1.1d$ ./config shared --prefix=/home/deng/openssl_install --openssldir=/home/deng/openssl_install/ssl
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1d (0x1010104fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile
**********************************************************************
*** ***
*** OpenSSL has been successfully configured ***
*** ***
*** If you encounter a problem while building, please open an ***
*** issue on GitHub <https://github.com/openssl/openssl/issues> ***
*** and include the output from the following command: ***
*** ***
*** perl configdata.pm --dump ***
*** ***
*** (If you are new to OpenSSL, you might want to consult the ***
*** 'Troubleshooting' section in the INSTALL file first) ***
*** ***
**********************************************************************
deng@local:~/sz01/openssl-1.1.1d$
命令如下:建议使用绝对路径,避免踩坑。
./config shared --prefix=/home/deng/openssl_install --openssldir=/home/deng/openssl_install/ssl
其中“prefix”是安装目录,“openssldir”是配置文件目录,“shared”作用是生成动态链接库(即.so库) 。
如果编译有问题,配置命令加上no-asm(表示不使用汇编代码)
./config no-asm shared --prefix=/home/deng/openssl_install --openssldir=/home/deng/openssl_install/ssl
3.5 在openssl源码目录下,运行make depend命令。
deng@local:~/sz01/openssl-1.1.1d$ make depend
deng@local:~/sz01/openssl-1.1.1d$
3.6 运行make命令进行编译
deng@local:~/sz01/openssl-1.1.1d$ make
3.7 安装openssl
deng@local:~/sz01/openssl-1.1.1d$ make install
在配置的openssl安装目录下home/deng/openssl_install找到lib目录,有生成的库文件:“libcrypto.so.1.1”、“libssl.so.1.1”和软链接“libcrypto.so”、“libssl.so”。
/home/deng/openssl_install/include/openssl里的内容是相关头文件。
温馨提示:
注:有的编译工具是32位的,如果在64位的linux机器上使用,这时只要将Makefile中的-m64都删除,再进行编译即可。
04. 查看系统OpenSSL版本
查看OpenSSL版本,命令如下:
deng@local:~$ openssl version
OpenSSL 1.1.1f 31 Mar 2020
deng@local:~$ openssl version -a
OpenSSL 1.1.1f 31 Mar 2020
built on: Mon Feb 6 17:57:17 2023 UTC
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-7mt7n4/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
deng@local:~$
05. 附录
更多推荐
所有评论(0)