互联网加密及OpenSSL的使用
为了安全,互联网的通讯必须加密,加密有三种:单向加密、对称加密和非对称加密。
0、单向加密(散列算法)
md5
sha1
单向散列函数一般用于产生信息摘要,密钥加密等。
特点:1、输入一样,输出必然一样
2、雪崩效应
3、定长输出,MD5(128位),sha1(160位)
4、不可逆
1、对称加密:
两边使用相同的算法或加密方法,对信息或文件进行加密。常用的算法有:
DES( Data Encryption Standard ): 数据加密标准,速度较快,适用于加密大量数据的场合。
DES3( Triple DES): 基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard): 高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
Blowfish
加密工具openssl、gpg工具。
2、非对称加密:
使用公钥加密,必须使用对应的私钥解密。
使用私钥加密,必须使用对应的公钥加密。
常用的是得到对方的公钥,使用公钥加密后将信息发回给对方,对方使用自己的私钥解密,没有私钥的人解不开。好处是私钥不会在网络中发送,因此安全性大大提高。
常用的算法有:
RSA:加密、签名
DSA
ELGamal
发送方用自己的私钥加密数据,可以实现身份验证;用自己得到的公钥加密数据,可以保证数据机密性。
3、对比
对称加密使用的是公开的算法,计算量小,速度快,但需要将密钥在网络中传输,所以安全性不高。
非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
CA:(Certificate Authority),证书权威
证书中心用自己的私钥,对服务器的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
客户端使用CA的公钥解开数字证书,得到服务器的公钥。如果所有的CA公钥都不能解开这个数字证书,证明这个服务器未得到认证。
常用的证书格式:
x509
http向https:
在应用层和网络层之间增加一层协议,SSL或TLS
SSL: Secure Socket Layer, SSLv2, SSLv3
TLS: Transport Layer Security, TLSv1
OpenSSL是SSL的开源实现,能实现SSL的功能,还有许多的小功能附带。其主要包含3个库:
libcrypto: 加密库
libssl: TLS/SSL的实现。
基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库
openssl: 多用途命令行工具
以下介绍下openssl的一些常用工具和用法:
1、speed
openssl speed des3 测试本机使用加密算法des3的速度
speed 不加算法名,默认测试全部加密算法
2、enc
openssl enc : encodinng with Ciphers
enc - symmetirc cipher routines 对称加密程序
openssl enc -des3 -salt -a -in inittab -out inittab.des3 加密文件inittab
openssl enc -des3 -d -salt -a -in inittab.des3 -out inittab 解密inittab.des3文件
可以使用 -pass PASSWORD 指定密码
3、dgst: message digests
md5sum inittab 相当于openssl dgst -md5 inittab
sha1sum inittab 相当于openssl dgst -sha1 inittab
4、passwd
openssl passwd : 生成passwd加密密码
openssl passwd -1
# openssl passwd -1
Password:
Verifying - Password:
$1$T/FS.Ou7$LMvdp2YmdMGCGAOgkImTx/
$加密算法$salt$加密密码
指定salt:
openssl passwd -1 -salt T/FS.Ou7
5、rand
openssl rand: 获得随机数 man sslrand
openssl rand -base64 12 取得12位随机数
gWVW899eVxzOkFyi
6、genrsa:generate an RSA private key 生成RSA私钥
生成一个1024位的私钥,并输出到1024server.key文件中
openssl genrsa -out 1024server.key 1024
为了安全,文件1024server.key的权限应为600
chmod 600 1024server.key
那么一条综合的命令就是:
(umask 077; openssl genrsa -out 1024server.key 1024)
生成公钥:
公钥是从私钥中提取出来的,所以:
openssl rsa -in 1024server.key -pubout
注:以上可以使用输出重定向>输出到文件
openssl genrsa/rsa : 生成一对密钥
7、生成自签署证书
openssl req
The req command primarily creates and processes certificate requests in PKCS#10 format. It can additionally create self signed certificates for use as root CAs for example.
翻译下就是:生成或认证证书,创建自签署证书
生成自签署证书
openssl req -new -x509 -key server1024.key -out server.crt -days 365
查看证书文件srt
openssl x509 -text -in server.crt
/etc/pki/tls/openssl.cnf:存放证书配置文件
cd /etc/pki/CA
(umask 077; openssl genrsa -out private/cakey.pem 2048)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
touch index.txt
touch serial
echo 01 > serial
证书生成完成
mkdir /etc/httpd
cd /etc/httpd
mkdir /ssl
cd ssl
(umask 077; openssl genrsa -out httpd.key 1024)
http的密钥生成完毕
openssl req -new -key httpd.key -out httpd.csr
证书签署请求文件生成完毕(公司、地址之类的保持一致)
openssl ca -in httpd.csr -out httpd.crt -days 365
证书签署完毕
查看签署之后私有CA数据库的更新
cat /etc/pki/CA/index.txt
cat /etc/pki/CA/serial
注:在申请数字证书之前,您必须先生成证书私钥和证书请求文件(CSR,Cerificate Signing Request),CSR是您的公钥证书原始文件,包含了您的服务器信息和您的单位信息,需要提交给CA认证中心。在生成CSR文件时会同时生成私钥文件,请妥善保管和备份您的私钥。
crt文件:客户端认证的证书、私钥。