OpenSSL cookbook 1——简介

本文介绍了OpenSSL项目的发展历程,包括其起源、主要组成部分及应用领域。此外还提供了如何检查和配置OpenSSL版本的方法,以及如何从源码编译安装OpenSSL的步骤。

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

英文版地址:https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html

 

1. OpenSSL

   OpenSSL 是一个开源项目,由加密算法库和SSL/TLS工具两部分组成。下面一段是OpenSSL项目网站上给出的定义:

The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured,and Open Source toolkit implementing the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols as well as a full-strength general purpose cryptography library. The project is managed by a worldwide community of volunteersthat use the Internet to communicate, plan, and develop the OpenSSL toolkit and its related documentation.

    OpenSSL最早起源于Eric A. Young和Tim J. Hudson在1995年共同开发的SSLeay。1998年快要结束的时候Eric A. Young和Tim J. Hudson停止了SSLeay的开发工作,并将其作为开源项目提交给了开源社区,由此SSLeay便更名为OpenSSL了。

   发展到现在,OpenSSL已经普遍应用于服务端以及客户端。其命令行工具作为证书和秘钥管理及测试工具更是被广泛使用。但是,作为客户端工具的最重要的一支——浏览器却一支使用着其他的SSL库。然而这一现象慢慢开始有所转变了,特别是在chrome使用了新的SSL库BoringSSL后,因为BoringSSL是从OpenSSL中分支出来的。

 OpenSSL是双重许可证的,都是类BSD的许可证,有一个广告条。长久以来这个许可证都是有争议的,因为这两个许可证与GPL系列的许可证是不兼容的。因此,你经常会发现GPL许可的程序更倾向于用GnuTLS。

 

 

2. Getting Started

如果你用的是unix系统,那么基本上不用做任何事就可以使用openssl了,唯一需要关心或者说经常碰到的问题就是你系统里的openssl不是最新的版本。接下来的行文中用的环境都是unix系统,因为unix环境是OpenSSL最常用也是最直接的环境。

如果你用的是windows系统,那么需要你自行去OpenSSL的官网上下载安装,安装很简单直接,这里就不赘述了。

 

 

3. OpenSSL的版本选择以及配置

a. openssl version查看openssl的版本。结果类似:OpenSSL 1.0.1e-fips 11 Feb 2013

版本结果很直接,基本没啥好说的,唯一注意的一点就是1.0.1这个版本是最开始支持TLS1.1和TLS1.2的,之前的版本都不支持TLS1.1和TLS1.2

b. openssl version -a 查看openssl版本的详细信息,很多操作系统自带的openssl都是有修改的,虽然版本号一致,但是和标准的还是有一些区别,光用openssl version查看不出来,这时候就要用-a选项了,结果类似:

OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Tue Jun 23 11:11:37 EDT 2015
platform: linux-x86_64
options:  bn(64,64) md2(int) rc4(8x,char) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/etc/pki/tls"
engines:  dynamic

需要特别注意的是OPENSSLDIR: "/etc/pki/tls",这里可查看openssl的配置信息已经证书和秘钥放置的位置。

/etc/pki/tls
|-- cert.pem -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
|-- certs
|   |-- ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
|   |-- ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
|   |-- make-dummy-cert
|   |-- Makefile
|   `-- renew-dummy-cert
|-- misc
|   |-- CA
|   |-- c_hash
|   |-- c_info
|   |-- c_issuer
|   `-- c_name
|-- openssl.cnf
`-- private

4. 自己build OpenSSL

$ wget http://www.openssl.org/source/openssl-1.0.1p.tar.gz
$ ./config \
--prefix=/opt/openssl \
--openssldir=/opt/openssl \
enable-ec_nistp_64_gcc_128
$ make depend
$ make
$ sudo make install

You’ll get the following in /opt/openssl:

drwxr-xr-x 2 root root  4096 Jun  3 08:49 bin
drwxr-xr-x 2 root root  4096 Jun  3 08:49 certs
drwxr-xr-x 3 root root  4096 Jun  3 08:49 include
drwxr-xr-x 4 root root  4096 Jun  3 08:49 lib
drwxr-xr-x 6 root root  4096 Jun  3 08:48 man
drwxr-xr-x 2 root root  4096 Jun  3 08:49 misc
-rw-r--r-- 1 root root 10835 Jun  3 08:49 openssl.cnf
drwxr-xr-x 2 root root  4096 Jun  3 08:49 private
 
 

5. 检测OpenSSL是否正常

$ openssl help openssl:Error: 'help' is an invalid command. Standard commands asn1parse         ca                ciphers           cms                crl               crl2pkcs7         dgst              dh                 dhparam           dsa               dsaparam          ec                 ecparam           enc               engine            errstr             gendh             gendsa            genpkey           genrsa             nseq              ocsp              passwd            pkcs12             pkcs7             pkcs8             pkey              pkeyparam          pkeyutl           prime             rand              req                rsa               rsautl            s_client          s_server           s_time            sess_id           smime             speed              spkac             ts                verify            version            x509               Message Digest commands (see the `dgst' command for more details) md2               md4               md5               rmd160             sha               sha1               Cipher commands (see the `enc' command for more details) aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb        aes-256-cbc       aes-256-ecb       base64            bf                 bf-cbc            bf-cfb            bf-ecb            bf-ofb             camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb   camellia-256-cbc  camellia-256-ecb  cast              cast-cbc           cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb          des               des-cbc           des-cfb           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              idea               idea-cbc          idea-cfb          idea-ecb          idea-ofb           rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc            rc2-cfb           rc2-ecb           rc2-ofb           rc4                rc4-40            seed              seed-cbc          seed-cfb           seed-ecb          seed-ofb          zlib              

 

看到上面输出的信息,基本确认你的OpenSSL环境可以工作了。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值