OpenSSL

合集下载

openssl操作手册

openssl操作手册

OpenSSL 是一个开源的加密库,提供了各种加密算法、数字证书、SSL/TLS 协议等功能,被广泛用于网络安全和加密通信领域。

以下是OpenSSL 的一些常见用法和操作:1. 生成证书:使用OpenSSL 可以生成各种类型的数字证书,包括自签名证书、CA 证书、服务器证书、客户端证书等。

您可以使用OpenSSL 提供的命令行工具或API 接口来生成证书。

2. 加密和解密:OpenSSL 提供了各种加密算法,包括对称加密和非对称加密。

您可以使用OpenSSL 提供的命令行工具或API 接口来进行加密和解密操作。

3. 签名和验证:OpenSSL 提供了数字签名和验证的功能,可以用于保证数据的完整性和真实性。

您可以使用OpenSSL 提供的命令行工具或API 接口来进行签名和验证操作。

4. SSL/TLS 安全通信:OpenSSL 提供了SSL/TLS 协议的实现,可以用于安全通信。

您可以使用OpenSSL 提供的命令行工具或API 接口来实现SSL/TLS 安全通信。

5. 网络安全工具:OpenSSL 提供了各种网络安全工具,包括OpenSSL s_server、OpenSSL s_client、OpenSSL speed、OpenSSL rand 等。

这些工具可以用于测试和评估网络安全性能。

要使用OpenSSL,您需要安装OpenSSL 库,并包含相应的头文件。

在编写代码时,您可以调用OpenSSL 提供的函数和数据结构来实现您需要的加密、签名、SSL/TLS 安全通信等功能。

OpenSSL 提供了详细的文档和使用手册,您可以在OpenSSL 官方网站上找到完整的文档和参考手册。

在文档中,您可以找到各种函数的使用说明、示例代码和详细的接口说明,以帮助您更好地使用OpenSSL 库。

openssl代码结构

openssl代码结构

openssl代码结构OpenSSL代码结构是一个开源的密码库,提供了一系列的加密和安全相关功能。

它被广泛用于安全通信和数据传输领域,包括网站服务器、网络设备、操作系统等。

本文将为您介绍OpenSSL代码结构的主要组成部分和其功能。

OpenSSL代码结构由多个模块组成,每个模块负责不同的功能。

首先,我们来看下它的主要模块。

1. 加密算法模块(crypto):这个模块包含了各种加密和散列算法的实现,比如对称加密算法(如AES、DES)、非对称加密算法(如RSA、ECC)和哈希算法(如SHA1、SHA256)。

它们提供了加密和解密、签名和验证、以及生成和验证哈希值等操作。

2. SSL/TLS模块(ssl):OpenSSL的这个模块实现了SSL和TLS协议,用于保护网络通信的安全。

它提供了加密和解密、握手和重协商、以及证书验证等功能,确保数据的机密性、完整性和可信度。

3. 证书和密钥管理模块(x509):这个模块负责处理数字证书和密钥的生成、存储、解析和验证。

它支持多种证书格式(PEM、DER等),并提供了用于创建和操作证书和密钥的函数。

4. 运行时库模块(libcrypto/libssl):这些模块是OpenSSL的核心组件,提供了一些基本的功能和数据结构,如内存管理、数据编码和解码、随机数生成、时间和日期处理等。

其他模块依赖于它们来实现高级的功能。

OpenSSL代码结构的设计使得它易于使用和扩展。

除了主要模块之外,还有一些次要的模块和工具,如网络模块(bio)、随机数模块(rand)和密码学工具(crypto),它们提供了更多特定的功能和工具,可以根据需要进行选择和使用。

在使用OpenSSL时,我们需要了解一些基本概念和术语。

首先是上下文对象(context object),它是代码执行的环境和状态的容器,保存了必要的信息和参数。

下一是使用函数(USE_*)和配置函数(CONF_*),它们用于指定和创建上下文对象的设置和配置。

openssl 操作手册

openssl 操作手册

OpenSSL 是一个强大的安全套接字层密码库,包含了各种加密算法的实现,提供了通用的密码安全服务。

下面是一个简要的OpenSSL 操作手册,包括一些常用的命令和选项:1. 生成密钥对:```openssl genpkey -algorithm RSA -out private_key.pemopenssl rsa -pubout -in private_key.pem -out public_key.pem```2. 生成自签名证书:```cssopenssl req -new -x509 -key private_key.pem -out cert.pem -days 365```3. 生成证书签名请求(CSR):```openssl req -new -key private_key.pem -out request.csr```4. 验证证书签名:```bashopenssl x509 -in cert.pem -text -noout```5. 导出证书为PEM 格式:```bashopenssl x509 -in cert.der -inform DER -outform PEM -out cert.pem```6. 加密数据:```cssopenssl enc -aes-256-cbc -salt -in plaintext.txt -out ciphertext.enc```7. 解密数据:```cssopenssl enc -aes-256-cbc -d -in ciphertext.enc -out plaintext.txt```8. 生成随机数:```openssl rand -out random.bin 1024```9. 验证数字签名:```cssopenssl dgst -sha256 -sign private_key.pem -in file.txt -out signature.bin openssl dgst -sha256 -verify public_key.pem -signature signature.bin file.txt```10. 生成Diffie-Hellman 密钥交换参数:```openssl dhparam -out dhparam.pem 2048```11. 生成CA 证书:```cssopenssl req -new -x509 -days 365 -extensions v3_ca -key private_ca_key.pem -out ca.pem```12. 生成服务器证书:```cssopenssl req -new -key private_server_key.pem -out server.reqopenssl x509 -req -days 365 -in server.req -CA ca.pem -CAkey private_ca_key.pem -CAcreateserial -out server.pem```13. 生成客户端证书:```cssopenssl req -new -key private_client_key.pem -out client.reqopenssl x509 -req -days 365 -in client.req -CA ca.pem -CAkey private_ca_key.pem -CAcreateserial -out client.pem```这只是一些常见的OpenSSL 命令示例,OpenSSL 还提供了许多其他功能和选项,具体可以参考官方文档或使用`man openssl` 命令来获取完整的操作手册。

openssl 用法

openssl 用法

openssl 用法1. 简介OpenSSL是一个开源的加密库,它提供了一套丰富的加密算法和工具,可以用于安全通信、数字证书、密码学等领域。

本文将详细介绍OpenSSL的用法,包括生成证书、对称加密、非对称加密以及数字签名等方面。

2. 生成证书2.1 创建自签名证书使用OpenSSL可以创建自签名证书,自签名证书是一种不依赖于第三方机构签发的信任证书。

生成自签名证书的步骤如下:1.生成私钥:openssl genrsa -out private.key 20482.生成证书签名请求:openssl req -new -key private.key -out csr.csr3.使用私钥签名证书请求:openssl x509 -req -in csr.csr -signkeyprivate.key -out certificate.crt2.2 使用CA签发证书除了自签名证书,还可以向证书颁发机构(CA)申请证书。

步骤如下:1.生成私钥:openssl genrsa -out private.key 20482.生成证书签名请求:openssl req -new -key private.key -out csr.csr3.将证书签名请求发送给CA机构进行签发4.收到由CA签发的证书后,使用私钥对其进行验证:openssl x509 -req -incsr.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out certificate.crt3. 对称加密对称加密是一种加密算法,使用相同的密钥进行加密和解密。

OpenSSL支持多种对称加密算法,包括DES、AES等。

3.1 对称加密示例以下是使用AES对称加密算法进行加密和解密的示例:# 生成密钥openssl rand -out key.key 16# 加密文件openssl enc -aes-256-cbc -e -in plaintext.txt -out ciphertext.enc -pass file:. /key.key# 解密文件openssl enc -aes-256-cbc -d -in ciphertext.enc -out plaintext.txt -pass file:. /key.key4. 非对称加密与对称加密不同,非对称加密使用一对公钥和私钥进行加密和解密。

openssl用法

openssl用法

openssl用法OpenSSL是一款广泛使用的加密库,它提供了许多加密和安全功能的实现。

本篇文章将介绍OpenSSL的基本用法,包括生成和管理证书、加解密数据、生成密码散列等常见功能。

1. 生成公私钥对OpenSSL可以用来生成公私钥对,用于加密数据。

生成公私钥对的命令如下:openssl genpkey -algorithm RSA -out private.keyopenssl rsa -in private.key -pubout -out public.key 其中,-algorithm指定算法,-out指定输出的文件名,-in指定输入的文件名。

2. 生成证书OpenSSL可以生成自签名证书,命令如下:openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem其中,-newkey指定生成新的私钥,-nodes表示不加密私钥,-keyout指定私钥输出文件名,-x509指定生成自签名证书,-days指定证书有效期,-out指定证书输出文件名。

3. 加解密数据OpenSSL可以使用公私钥对加解密数据,命令如下:openssl rsautl -encrypt -in plaintext.txt -out ciphertext.txt -inkey public.keyopenssl rsautl -decrypt -in ciphertext.txt -out plaintext.txt -inkey private.key其中,-encrypt表示加密,-decrypt表示解密,-in指定输入文件名,-out指定输出文件名,-inkey指定输入的私钥或公钥。

4. 生成密码散列OpenSSL可以生成各种密码散列,包括MD5、SHA-1、SHA-256等,命令如下:openssl dgst -md5 -out message.md5 message.txtopenssl dgst -sha1 -out message.sha1 message.txtopenssl dgst -sha256 -out message.sha256 message.txt 其中,-md5表示使用MD5算法,-sha1表示使用SHA-1算法,-sha256表示使用SHA-256算法,-out指定输出文件名,message.txt 为输入文件名。

openssl简介

openssl简介

opensslopensslSSL,Security Socket Layer,是一个安全传输协议,在Internet网上进行数据保护和身份确认。

OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。

OpenSSL的官方网站为/,源代码可以从ftp:///source/opensslSSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。

Netscape 公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。

SSL采用公开密钥技术。

其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。

openssl利用公开密钥技术的SSL协议已成为Internet上保密通讯的工业标准。

安全套接层协议能使C/S应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。

SSL协议要求建立在可靠的传输层协议(TCP)之上。

SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。

opensslSSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。

在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。

通过以上叙述,SSL协议提供的安全信道有以下三个特性:1.数据的保密性信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。

加密的过程需要用到密匙来加密数据然后再解密。

没有了密钥,就无法解开加密的数据。

数据加密之后,只有密匙要用一个安全的方法传送。

加密过的数据可以公开地传送。

2.数据的一致性加密也能保证数据的一致性。

例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。

openssl 证书种类

openssl 证书种类OpenSSL 是一个开源的密码学工具库,它支持众多的证书种类和协议。

下面将介绍一些常用的OpenSSL 证书种类。

1. X.509 证书:X.509 证书是最常见的SSL/TLS 数字证书,用于验证网站、服务器和客户端的身份。

它们使用非对称加密算法,授权身份验证机构(CA)颁发和撤销证书。

X.509 证书包含公钥、标识信息(如域名或组织名称)和数字签名。

2. PEM 证书:PEM(Privacy Enhanced Mail)是一种常见的编码格式,用于存储公钥和证书。

PEM 格式的证书使用Base64 编码,并以"BEGIN CERTIFICATE" 和"END CERTIFICATE" 字符串包围。

PEM 证书可以存储在文件中或直接嵌入到程序中。

3. PKCS#12 证书:PKCS#12(Personal Information Exchange Syntax Standard)是一种证书格式,用于存储加密私钥、公钥和证书。

它通常使用 .p12 或 .pfx 扩展名,并使用密码保护私钥。

PKCS#12 证书可用于导出和导入证书和私钥,并在不同的软件和系统之间共享。

4. DER 证书:DER(Distinguished Encoding Rules)是一种二进制格式,用于表示X.509 证书。

DER 格式的证书通常使用 .cer 或 .der 扩展名,并用于编码和解码证书。

DER 证书适用于网络传输,因为它们比PEM 格式更紧凑且易于解析。

5. CSR:CSR(Certificate Signing Request)是一种用于申请数字证书的文件。

它包含希望获得证书的主题组织或个人的相关信息,如域名、公钥等。

CSR 文件可以通过OpenSSL 生成,并将其发送给CA 以获取相应的证书。

6. CRL:CRL(Certificate Revocation List)是一种用于撤销证书的列表。

openssl使用流程

openssl使用流程OpenSSL使用流程介绍OpenSSL 是一个开源的加密工具包和安全通信协议实现库,提供了一系列的加密算法、SSL/TLS 防护和各种安全工具,广泛应用于网络通信、服务器配置、数字证书管理等各个领域。

本文将以OpenSSL 的使用流程为主题,一步一步详细回答。

一、准备工作1. 下载和安装OpenSSL:首先,我们需要从OpenSSL 的官方网站或其他可信来源下载并安装OpenSSL。

根据操作系统的不同,选择相应的版本进行下载和安装。

2. 生成RSA 密钥对:在开始使用OpenSSL 之前,建议先生成一对RSA 密钥对,用于后续的加密和解密操作。

在命令行中输入以下命令可以生成一个2048 位的RSA 密钥对:openssl genrsa -out private.key 2048该命令将生成一个名为private.key 的私钥文件,其中包含了生成的RSA 私钥。

接着,可以使用以下命令生成对应的公钥文件:openssl rsa -in private.key -pubout -out public.key这将生成一个名为public.key 的公钥文件,其中包含了与私钥对应的RSA 公钥。

二、公钥加密和私钥解密1. 加密数据:使用公钥加密数据是一种常见的操作,可以保证数据在传输过程中的机密性。

在命令行中输入以下命令可以使用公钥对数据进行加密:openssl rsautl -encrypt -pubin -inkey public.key -in plaintext.txt -out ciphertext.enc该命令将使用public.key 中的公钥对plaintext.txt 中的明文数据进行加密,并将密文数据存储到ciphertext.enc 文件中。

2. 解密数据:解密数据需要使用对应的私钥进行操作。

在命令行中输入以下命令可以使用私钥对密文数据进行解密:openssl rsautl -decrypt -inkey private.key -in ciphertext.enc -out plaintext.txt该命令将使用private.key 中的私钥对ciphertext.enc 中的密文数据进行解密,并将解密后的明文数据存储到plaintext.txt 文件中。

openssl做证书的方法

openssl做证书的方法
使用 OpenSSL 工具生成证书的方法有多种,以下是其中一种常见的方法:
1. 生成私钥:首先使用 OpenSSL 生成一个私钥文件,可以使用以下命令生成一个 2048 位的 RSA 私钥文件:
openssl genrsa -out private.key 2048。

2. 生成证书签名请求(CSR):接下来使用私钥生成证书签名请求文件,可以使用以下命令生成 CSR 文件:
openssl req -new -key private.key -out csr.pem.
3. 自签名证书:如果您需要生成自签名的证书,可以使用以下命令生成一个有效期为一年的自签名证书:
openssl req -x509 -days 365 -key private.key -in csr.pem -out certificate.pem.
以上是使用 OpenSSL 工具生成证书的简单方法,您还可以根据具体需求使用 OpenSSL 工具进行更复杂的证书操作,如创建 CA 证书、签发证书等。

希望这些信息能够帮助到您。

openssl国密验签函数

openssl国密验签函数
openssl是一个开放源代码的加密工具包,它提供了一系列的加密和解密函数,包括国密算法的支持。

国密算法是中国政府推动的一种密码算法标准,主要包括SM2、SM3和SM4算法。

在openssl 中,对国密算法的支持是在1.1.1版本中加入的。

要使用openssl进行国密验签,你可以使用以下步骤:
1. 首先,你需要安装支持国密算法的openssl版本,确保你的openssl版本是1.1.1或以上的版本。

2. 确保你的openssl库已经编译了国密算法的支持,你可以通过openssl的官方文档或者源码编译选项来确认。

3. 使用openssl的API调用,你可以使用openssl提供的函数来进行国密验签操作。

具体的函数调用取决于你使用的编程语言,比如C语言、C++、Python等。

4. 在进行验签操作时,你需要准备好验签所需的数据、签名和公钥等信息,然后调用openssl提供的相应函数来进行验签操作。

5. 在进行国密验签操作时,需要注意国密算法的特殊性,比如SM2算法需要使用公钥进行验签,而SM3算法是消息摘要算法,需要对消息进行摘要后再进行验签。

总的来说,要使用openssl进行国密验签操作,首先需要确保你的openssl版本支持国密算法,然后使用相应的API函数来进行验签操作,同时要注意国密算法的特殊性和验签所需的数据准备工作。

希望这些信息能够帮助到你。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

V(valid)表示01序列号表示的证书是有效的,060524084846z表示 它创建的时间是2006年50月24日8点48分46秒(采用的时间是格 林威治时间);R(revoked)表示02序列号的证书被撤销了,其中 一个时间表示撤销时间,另一个时间表示本来到期的时间。
END
THANKS
private目录下的ca.key文件中;
–rand private\.rnd:在RSA算法中,伪随机数产生器
用的种子是放在private\.rnd中的;里面的种子管理显然,上面的.key文件是明文保存的,是很不安全的。 而密钥一旦泄漏,响应的证书也就失效。所以CA提供了一 个可选配置,通过配置,使得每次生成一个新的密钥对的 时候,必须用一个口令对响应的.key文件进行加密(加密算 法是DES)。这在一定程度上提高了系统的可靠性。
证书撤销列表的具体形式:
五、数据库的更新
在这个简易的CA系统中,所有的系统活动都在index.txt文 件中有记录。主要记录的是创建用户证书和撤销用户证书活动。 创建两个用户证书(序列号分别为01和02),然后撤销其 中一个之(02)后,数据库(index.txt)里的数据:
V 060524084846Z 01 unknown
/C=US/ST=WDC/L=WDC/O=Haverd/OU=CS/CN=Bear/Email=xiaoxiong1983@ R 060524091852Z 050524092357Z 02 unknown
/C=Us/ST=NY/L=MH/O=CS/OU=CS/CN=xiong/Email=hello@
四、发布证书撤销列表
命令: ca -gencrl -crldays 7 -config f -out crl\ca.crl
命令解释:由CA产生(gen)一个crl列表,有效期是7天(crldays 7), 产生的撤销列表是crl/ca.crl。
证书列表的主要内容:
证书列表的有效期 下次发布证书列表的时间 被撤销的证书的序列号
newcerts:在这个目录中存放的是那些等待被CA签名的用户 证书,这些证书还是没有被签名的,暂时无效。不过这些用 户的申请信息已经告知了CA系统,系统管理员可以通过对这 些信息的分析,决定是否对这个证书签名,使其生效。 private:这个目录中存放的是所有用户包括CA的私钥,里 面的文件格式是.key格式的。每一个证书对应一个.key文件。 这个目录起到一个简单的密钥归档作用。
-config f:产生证书的时候采用的配置策略,里
面可能包括证书的版本信息、扩展信息等。
1.5
•版本(V3) •序列号(00)
CA证书的详细内容
•加密算法(RSA、MD5) •有效期(2005年5月24日 至 2015年5月22日)
•公钥
•自签名 (2048位) •颁发者 •证书申请者信息 (注册过程中的全部信息) 证书形式: 完整证书如下:
二、
生成用户证书
2.1 生成用户证书的基本步骤
1、在原来创建的. rnd文件中输入随机数;
2、利用1中的随机数和RSA算法为CA生成一个CA密钥对;
3、向CA系统提出证书申请,输入系统要求的个人信息; 系统根据用户的注册信息生成一个未签名的用户证书; 4、CA对用户的信息进行检查,对用户证书进行签名或不响 应用户请求。
1.3 生成CA密钥对
命令:
genrsa –out private\ca.key –rand private\.rnd 2048
生成的密钥对存放在ca.key中。
生成密钥对命令的详细解释:
genrsa:用RSA算法产生(gen)密钥对;
–out private\ca.key:生成的密钥对存放(-out)在
1.1
创建CA的准备工作
1、创建一个数据库(index.txt文件)
记录根CA创建证书或者撤销证书的事件; 每次创建或者撤销证书事件发生时,它是自动更新的;
2、创建一个序列号(serial)文件
记录下次即将创建的用户证书的序列号;
每次创建一个新证书时,将其中的序列号赋给证书;
证书创建完成后,自动将序列号加1;
二、OpenSSL的组成 虽然OpenSSL使用SSL作为其名字的重要组成部分,但 其实现的功能确远远超出了SSL协议本身。OpenSSL事实上 包括了三部分:SSL协议、密码算法库和应用程序库。 SSL协议部分完全实现和封装了SSL协议的三个版本和 TLS 协议, SSL 协议库的实现是在密码算法库的基础上实 现的。使用该库,你完全可以建立一个 SSL 服务器和 SSL 客户端。 密码算法库是一个强大完整的密码算法库,它是 OpenSSL的基础部分,也是很值得一般密码安全技术人员 研究的部分,它实现了目前大部分主流的密码算法和标准。 主要包括公开密钥算法、对称加密算法、散列函数算法、 X509 数字证书标准、 PKCS12 、 PKCS7 等标准。事实上, OpenSSL 的 SSL 协议部分和应用程序部分都是基于这个库 开发的。
根证书的序列号默认为 00;
1.2 创建CA证书的基本步骤
1、在原来创建的. rnd文件中输入一个数做为伪随机数发生器 的种子; 2、利用1中的种子和RSA算法为CA生成一个CA密钥对; 3、申请创建CA证书,输入系统要求的必要的注册信息; 系统会用2中生成的CA密钥对对这个证书进行自签名;
4、安装生成的CA证书,即让本机信任这个CA证书;
1.4
创建CA证书(自签名)
命令格式: C:\CARoot\req -new -x509 –days 3650 -key
private\ca.key -out private\ca.crt -config f
命令详细解释:
req -new -x509:申请(req)一个新的(new)的x509证书; –days 3650:证书的有效期是3650天。一般CA证书的有效期
2.2 对用户的证书进行签名
命令:ca –ss_cert cert_new.crt –key private\ca.key –config f –policy policy_anything –out signedcert.crt
生成的用户证书:如下
三、撤销用户证书
命令: ca –revoke signedcert.crt –config f
较长,而用户证书的有效期相对来说较短;
-key private\ca.key:对这个证书进行签名的CA密钥存放在
private\ca.key中(我们上一步产生CA密钥对的时候就是放 在这里的);
-out private\ca.crt:生成的证书放在(-out)private目录
下,证书的名字是ca.crt;
一、创建自己的CA
CA的目录结构
certs目录:存放的是有效的用户证书,里面的文件格式 是.cert格式,每一个用户对应一个证书。这些证书已经被 CA签名了,是有效的。证书的具体格式在后面会有叙述和 实例。
Crl目录:在这个目录中存放的是证书撤销列表,里面的文 件格式是.crl格式。一个.crl文件记录了一段时期内被撤销的 证书的序列号。所有这些撤销列表合起来记录了所有的被撤 销的用户证书。证书撤销列表的具体格式见后面的分析。
三、基于OpenSSL的应用 基于OpenSSL指令的应用 基 于 OpenSSL 指 令 的 应 用 很 容 易 , 只 要 安 装 好 了 OpenSSL ,就可以开始使用了。 最简单的应用就是使用 Req、CA 以及X509 指令来签发一个证书了,该证书可以用 于各种目的,比如很多 Apache 服务器就是使用 OpenSSL 的 指令生成的证书作为服务器证书。 基于OpenSSL加密库和协议库的应用 基于OpenSSL函数库的应用相比与基于OpenSSL指令 的应用开发的工作量会大很多,但这并不意味着其应用会 更少。事实上,基于OpenSSL的应用大部分是这种方式的, 这种方式使得开发者能够根据自己的需求灵活地进行选择, 而不必受OpenSSL有限的指令的限制。
OpenSSL
张海剑
姜凡
周雪强
前言
一、什么是OpenSSL
OpenSSL是一个开放源代码的 SSL协议的产品实现,它采用 C 语言作为开发语言,具备了跨系统的性能,支持 Linux 、 Unix 、 Windows、Mac和VMS等多种平台。 OpenSSL最早的版本在1995年发布,1998年后开始由OpenSSL 项目组维护和开发。当前最新的版本是0.9.7b版本,完全实现了 对 SSLv1 、 SSLv2 、 SSLv3 和 TLS 的支持。。目前, OpenSSL 已经得 到了广泛的应用,许多类型的软件中的安全部分都使用了 OpenSSL的库,如VOIP的OpenH323协议、Apache服务器、Linux安 全模块等等。
目前,这个库除了可以使用本身的缺省算法外,在0.9.6版 本之后,还提供了Engine机制,用于将如加密卡这样外部的加 密算法实现集成到OpenSSL中。 应用程序部分是OpenSSL最生动的部分,也是OpenSSL使用 入门部分。该部分基于上述的密码算法库和 SSL协议库实现了 很多实用和范例性的应用程序,覆盖了众多的密码学应用。主 要包括了各种算法的加密程序和各种类型密钥的产生程序(如 RSA 、 Md5 、 Enc 等等 ) 、证书签发和验证程序(如 Ca 、 X509 、 Crl等)、SSL连接测试程序(如S_client和S_server等)以及 其它的标准应用程序(如Pkcs12 和Smime 等)。在某些时候, 不需要做二次开发,仅仅使用这些应用程序便能得到我们的应 用要求,比如采用Ca程序就能基本上实现一个小型的CA功能。
生成用户证书的步骤和生成CA证书大致上是一样的,用 户证书和CA证书的格式大致上也是相同的。其区别主要如下:
首先,用户证书必须要被CA签名才会有效。因为,两个用 户相互信任的基础是都信任同一个CA; 具体到证书格式上,x509证书的v3版本中,有一个选项表 示证书的类型是否是CA证书(具体的内容见证书实例); 另外,在一个根CA证书中是没有证书链的,因为它不需要 别的更高级别的机构来保证它的有效性;而用户证书中是有 一个证书链的,用户之间的相互认证是需要对这个证书链进 行查找的。 下面我们来看看CA对用户证书签名的命令。
相关文档
最新文档