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:签名指令