openssl服务:SSL(Secure Sockets Layer)的开源实现,官方站点 www.openssl.org

组成:

libcrypto:通用加密库

libssl:TLS/SSL的实现库

基于会话的,实现了身份认证,数据机密性和会话完整性的TLS/SSL库

openssl:多用途命令工具

可以实现私有证书颁发机构

openssl常用子命令:

    openssl version:查看openssl的版本

[root@localhost named]# openssl versionOpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

    openssl speed 单向加密算法:单向加密算法测速

[root@localhost named]# openssl speed md5 Doing md5 for 3s on 16 size blocks: 4905896 md5's in 3.00sDoing md5 for 3s on 64 size blocks: 4222480 md5's in 2.99sDoing md5 for 3s on 256 size blocks: 2771350 md5's in 3.00sDoing md5 for 3s on 1024 size blocks: 1160221 md5's in 3.00sDoing md5 for 3s on 8192 size blocks: 178612 md5's in 3.00sOpenSSL 0.9.8e-fips-rhel5 01 Jul 2008built on: Wed Jan 18 10:10:56 EST 2012options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx) compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=generic -fasynchronous-unwind-tables -Wa,--noexecstack -DOPENSSL_USE_NEW_FUNCTIONS -fno-strict-aliasing -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASMavailable timing options: TIMES TIMEB HZ=100 [sysconf value]timing function used: timesThe 'numbers' are in 1000s of bytes per second processed.type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytesmd5              26164.78k    90380.84k   236488.53k   396022.10k   487729.83k

    openssl enc

        -加密算法

        -e:加密

        -d:解密

        -salt:加盐,默认选项

        -a:加密结果进行base64转换,解密前先进行base64解码

        -in /path/to/file:指定输入文件,默认为标准输入

        -out /path/to/file:指定输出文件,默认为标准输出

    例子:openssl enc -des3 -e -salt -a -in /etc/inittab -out ~/inittab.des3

    openssl dgst -单向机密算法 /path/to/file

    例子:openssl dgst -sha1 /etc/inittab

[root@localhost named]# openssl dgst -sha1 /etc/inittabSHA1(/etc/inittab)= 78ef239097844c223671e99a79d6b533dced8d3b

    openssl passwd -# -salt xxxxxxxx:生成加密密码串

[root@localhost named]# openssl passwd -1 -salt 12345678Password: $1$12345678$C3C9l9H37oIWJAgmmNMUr0

    

    openssl rand -base64 #:生成#位的随机数

[root@localhost named]# openssl rand -base64 10QDasm9KQTvntgQ==[root@localhost named]# openssl rand -base64 10nNyIpygE2Qmnsg==

    openssl genrsa #:指定输出#位的密钥,默认512位

    -out /path/to/file:指定输出文件

x509证书内包含的内容:

公钥信息

证书有效期

证书合法拥有者的信息

证书用途和该如何被使用

CA的信息

CA的签名

openssl实现私有CA:

1.服务器端生成CA自签署证书

cd /etc/pki/CA

(umask 077;openssl genrsa -out private/cakey.pem #):在指定目录生成#位的私钥文件,默认512位

openssl req -new -x509 -key /private/cakey.pem -out cacert.pem:生成CA自签署证书

openssl x509 -text -in cacert.pem:查看证书

mkdir certs newcerts crl

touch index.text serial

echo 01 > serial

2.客户端生成证书请求,并发送给服务器端

cd /etc/httpd/ssl

(umask 077;openssl genrsa -out httpd.key #):生成客户端的私钥文件

openssl req -new -key httpd.key -out httpd.csr:生成客户端的证书请求

3.服务器端签署客户端的证书请求,并发回给客户端

openssl ca -in httpd.csr -out httpd.crt:签名指令