OpenSSL

2024-07-08

OpenSSL 篇1

随着网络及其各种信息服务的迅猛发展, 引发了诸多的安全威胁, 并且造成了巨大的损失。因此, 为通信提供更强大的安全性已成为必需之举。通信安全的中心内容就是保证信息在信道内的保密性、消息完整性和可认证性。

SSL (Secure Socket Layer) 正是在两台机器之间提供安全通道的协议。其主要目的就是在两个通信应用程序之间提供私密性和可靠性, 主要包括:握手协议, 负责协商被用于客户机和服务器之间会话的加密参数;记录协议, 用于交换应用层数据;警告协议, 用于指示在什么时候发生了错误或两个主机之间的会话在什么时候终止。

以WEB客户机和服务器为例:WEB客户机通过连接到一个支持SSL的服务器, 启动一次SSL会话。支持SSL的典型WEB服务器在一个与标准HTTP请求 (默认端口为80) 不同的端口 (默认端口为443) 上接受SSL连接请求。当客户机连接到这个端口上时, 它将启动一次建立SSL会话的握手。握手完成之后, 通信内容将被加密, 并执行完整性检查, 知道SSL会话过期。SSL创建一个会话, 在此期间, 握手必须只发生过一次。

二、SSL协议实现

SSL连接类似于一个保密的TCP连接, 并且SSL在语义上也模仿了TCP的语义, 如表1所示。

1. 服务器协议实现框架。

(1) 生成SSL结构。

SSLeay_add_ssl_algorithms () ;

meth=SSLv23_server_method () ;//依据所使用的SSL版本有所不同

ctx=SSL_CTX_new (meth) ;

(2) 建立Socket连接。

listen_fd=socket () ;

bind () ;

listen () ;

accept_fd=accept () ;

(3) 建立SSL连接。

ssl=SSL_new (ctx) ;

SSL_set_fd (ssl, accept_fd) ;

SSL_accept (ssl) ;//握手过程

(4) 传送数据。

SSL_write () ;

SSL_read () ;

2. 客户端协议实现框架。

(1) 生成SSL结构。

SSLeay_add_ssl_algorithms () ;

meth=SSLv23_server_method () ;//根据所使用的SSL版本而定

ctx=SSL_CTX_new (meth) ;

(2) 建立Socket连接。

fd=socket () ;

connect () ;

(3) 建立SSL连接。

ssl=SSL_new (ctx) ;

SSL_set_fd (ssl, fd) ;

SSL_connect () ;

(4) 传送数据。

SSL_write () ;

SSL_read () ;

三、常用函数解析

SSL_accept//对应于socket函数accept, 该函数在服务端调用, 用来进行SSL握手。

int SSL_add_client_CA (SSL*ssl, X509*x) //添加客户端CA名。

const char*SSL_alert_desc_string_long (int value) //根据错误号得到错误原因。

SSL_check_private_key//检查SSL结构中的私钥。

SSL_CIPHER_description//获取SSL加密套件描述。

四、结束语

OpenSSL 篇2

OpenSSL是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库、应用程序、SSL协议库,Openssl实现了SSL协议所需要的大多数算法。

下面介绍使用Openssl进行文件的对称加密操作。

一、Openssl支持的加密算法有:

代码如下:

-aes-128-cbc -aes-128-cfb -aes-128-cfb1

-aes-128-cfb8 -aes-128-ecb -aes-128-ofb

-aes-192-cbc -aes-192-cfb -aes-192-cfb1

-aes-192-cfb8 -aes-192-ecb -aes-192-ofb

-aes-256-cbc -aes-256-cfb -aes-256-cfb1

-aes-256-cfb8 -aes-256-ecb -aes-256-ofb

-aes128 -aes192 -aes256

-bf -bf-cbc -bf-cfb

-bf-ecb -bf-ofb -blowfish

-cast -cast-cbc -cast5-cbc

-cast5-cfb -cast5-ecb -cast5-ofb

-des -des-cbc -des-cfb

-des-cfb1 -des-cfb8 -des-ecb

-des-ede -des-ede-cbc -des-ede-cfb

-des-ede-ofb -des-ede3 -des-ede3-cbc

-des-ede3-cfb -des-ede3-ofb -des-ofb

-des3 -desx -desx-cbc

-rc2 -rc2-40-cbc -rc2-64-cbc

-rc2-cbc -rc2-cfb -rc2-ecb

-rc2-ofb -rc4 -rc4-40

二、OpenSSL加密指令语法:

代码如下:

SYNOPSIS

openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]

[-d] [-a] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]

[-P] [-bufsize number] [-nopad] [-debug]

说明:

-chipername选项:加密算法,Openssl支持的算法在上面已经列出了,你只需选择其中一种算法即可实现文件加密功能,

-in选项:输入文件,对于加密来说,输入的应该是明文文件;对于解密来说,输入的应该是加密的文件。该选项后面直接跟文件名。

-out选项:输出文件,对于加密来说,输出的应该是加密后的文件名;对于解密来说,输出的应该是明文文件名。

-pass选项:选择输入口令的方式,输入源可以是标准输入设备,命令行输入,文件、变量等。

-e选项:实现加密功能(不使用-d选项的话默认是加密选项)。

-d选项:实现解密功能。

-a和-A选项:对文件进行BASE64编解码操作。

-K选项:手动输入加密密钥(不使用该选项,Openssl会使用口令自动提取加密密钥)。

-IV选项:输入初始变量(不使用该选项,Openssl会使用口令自动提取初始变量)。

-salt选项:是否使用盐值,默认是使用的。

-p选项:打印出加密算法使用的加密密钥。

三、用法举例:

1、使用aes-128-cbc算法加密文件:

代码如下:

openssl enc -aes-128-cbc -in install.log -out enc.log

(注:这里install.log是你想要加密的文件,enc.log是加密后的文件,回车后系统会提示你输入密码。)

2、解密刚才加密的文件:

代码如下:

openssl enc -d -aes-128-cbc -in enc.log -out install.log

(注:enc.log是刚才加密的文件,install.log是解密后的文件,-d选项实现解密功能。)

3、加密文件后使用BASE64格式进行编码:

代码如下:

openssl enc -aes-128-cbc -in install.log -out enc.log -a

4、使用多种口令输入方式加密:

代码如下:

openssl enc -des-ede3-cbc -in install.log -out enc.log -pass pass:111111

(这种方法的好处是你可以把它写入到脚本中,自动完成加密功能,不使用pass选项默认系统会提示输入密码并且确认,是需要人工

【OpenSSL】推荐阅读:

上一篇:考核探索下一篇:有机化工中间体

热搜文章

    相关推荐