openssl
gpg
单向加密:
MD4
MD5
SHA1
SHA192, SHA256,SHA384
CRC-32
公钥加密(非对称加密):(加密/签名)
身份认证(数字签名)
数据加密
密钥交换
RSA: 加密,签名
DSA:签名
ELGamal
OpenSSL:SSL的开源实战
libcrpto:通用加密库
libssl:TLS/SSL的实现
基于会话的,实现了身份认证,数据机密性和会话完整性的TLS/SSL库
openssl: 多用途命令行工具
实现私有证书颁发机构,
[[email protected]~]# openssl speed 检查当前系统所有的加密方式的加密速度
[[email protected]~]# openssl speed des 只检查des算法
查看命令帮助
[[email protected]~]# whatis enc
enc (1ssl) - symmetric cipher routines
[[email protected]~]# man enc
[[email protected]~]# whatis passwd
passwd (1) - update user‘s authentication tokens
passwd (5) - password file
passwd[sslpasswd] (1ssl) - compute password hashes
[[email protected]~]# man sslpasswd
[[email protected]~]#
[[email protected] ~]# cp /etc/inittab /tmp
[[email protected] ~]# cd /tmp
[[email protected] tmp]# openssl enc -des3 -salt-a -in inittab -out inittab.des3 (-des3加密算法,-a表示用Base64编码数据)
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryptionpassword:
[[email protected] tmp]# ls
b file.pcI inittab inittab.des3
[[email protected] tmp]#
解密上面的文件。-d解密
[[email protected] tmp]# openssl enc -des3 -d-salt -a -in inittab.des3 -out inittab
enter des-ede3-cbc decryption password:
[[email protected] tmp]# ls
b file.pcI inittab inittab.des3
计算文件的特征码:
md5sum inittab 计算一个文件的Md5的校验码
[[email protected] tmp]# sha
sha1sum sha224sum sha256sum sha384sum sha512sum sharesec shasum
[[email protected] tmp]# sha1sum inittab
7f1a11159e1f44a5b2f2f9de2b99ab3f23e0ef1f inittab
只要加密算法一样无论使用上面工具进行加密得到的结果都是一样。
[[email protected] tmp]# openssl dgst -sha1inittab
SHA1(inittab)=7f1a11159e1f44a5b2f2f9de2b99ab3f23e0ef1f
[[email protected] tmp]# openssl passwd -1 (-1使用MD5算法)
Password:
Verifying - Password:
$1$fy6Z3Qxz$GwSUdSuP92Dy.mRrDbTkm0 第2个$到第3个$之间的字符为‘盐’
[[email protected] tmp]# openssl passwd -1 -saltfy6Z3Qxz (-salt 指定‘盐’)
Password:
$1$fy6Z3Qxz$GwSUdSuP92Dy.mRrDbTkm0 (相同的密码和相同的盐所产生的相同的密码串)
[[email protected] tmp]#
openssl ? 能够查看openssl的选项
rsautl :rsa的加密解密工具
[[email protected] tmp]# whatis rand
rand (3p) - pseudo-random number generator
rand (3) - pseudo-random number generator
rand [sslrand] (1ssl) - generate pseudo-randombytes
[[email protected] tmp]# man sslrand
openssl rand –base64 生成随机数
[[email protected] tmp]# openssl rand -base64 99 后面跟长度
openssl实现私有CA:
- 生成一对密钥
- 生成自签署证书
使用()的命令只对子shell有效果 ,指定私钥长度并保存到server.key文件中
[[email protected]]# (umask 077 ; openssl genrsa 1024 >server1024.key)
提取公钥
[[email protected]]# openssl rsa -in server1024.key -pubout
用密钥生成一个证书 有效期365天
openssl req –new –x509 –key server1024.key –out server.crt –days 365
Country Name (2letter code) [XX]:CN
State or ProvinceName (full name) []:cq
Locality Name(eg, city) [Default City]:jlpq
Organization Name(eg, company) [Default Company Ltd]:cqkj
OrganizationalUnit Name (eg, section) []:IT
Common Name (eg,your name or your server‘s hostname) []:ca.mylinux.com
Email Address[]:[email protected]
[[email protected]]#
查看证书
[[email protected]]# openssl x509 -text -in server.crt
vi /etc/pki/tls/openssl.cnf
配置文件
[[email protected]]# ls CA目录里必须要有这些文件,cacert.pem是生成的证书
cacert.pem certs crl index.txt newcerts private serial
制作私有CA,
在/etc/pki/CA目录里执行
1 (umask 077; openssl genrsa 2048 >server2048.key )
2 openssl rsa -in server2048.key -pubout
3 openssl req -new -x509 -key server2048.key -out cacert.pem -days 365
4 openssl x509 -text -in server2048.key
5 touch index.txt
6 touch serial
7 echo 01> serial
签订证书
1 cd /etc/httpd
2 mkdir httpd
3 cd httpd
4 mkdir ssl
5 cd ssl/
6 (umask 077; openssl genrsa 2048>httpd.key) 服务器端创建一对密钥
8 openssl req -new -key httpd.key -out httpd.csr 填写一个证书
9 openssl ca -in httpd.csr-out httpd.crt -days 365 签订证书