Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。 Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用
<code> [root@localhost ~]# openssl ? #openssl后面接任意字符即可查看其选项 openssl:Error: '?' 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 </code>
下面介绍几个常用的选项:
1.使用enc实现加解密
enc的用法可以使用man查看
-in / -out filename #输入待加解密的文件,输出加解密后的文件
-salt #加盐,这是开启的默认选项,使用-nosalt已明确关闭此选项,除非为了兼容性的考虑,否则在新程序中请使用此选项。这是一个神奇的选项,加盐后,相同的明文可以得到不同的密文。默认情况下,盐值是随机生成的,可以使用-S选项明确指定盐值。
-e / -d # encrypt / decrypt 加解密。默认是加密,-d明确指定是解密
-a #对加密后的数据进行base64编码,或解密前,先对数据进行base64解码。 -base64与-a选项相同。
-des3 #加密算法
<code> [root@struggle ~]# openssl enc -des3 -salt -a -in fstab -out fstab1 #加密 [root@struggle ~]# openssl enc -des3 -d -salt -a -in fstab1 -out fstab #解密 #提取文件验证码 [root@struggle ~]# openssl md5 fstab MD5(fstab)= 517b60e2c1edec213ad85c6fcdc5a4e1 [root@struggle ~]# openssl sha1 fstab SHA1(fstab)= 88f8409af35606759344a64ffecc1b615e2dd23a [root@struggle ~]# md5sum fstab 517b60e2c1edec213ad85c6fcdc5a4e1 fstab [root@struggle ~]# sha1sum fstab 88f8409af35606759344a64ffecc1b615e2dd23a fstab [root@struggle ~]# openssl dgst -md5 fstab #加密算法一样结果一样 MD5(fstab)= 517b60e2c1edec213ad85c6fcdc5a4e1 使用passwd加密 [root@struggle ~]# openssl passwd -1 Password: Verifying - Password: $1$RUlHFxFG$fetSQlozOD/eK6qG.w1KI0 [root@struggle ~]# openssl passwd -1 Password: Verifying - Password: $1$QqbdToxJ$TtdYzV853fRh5KiKNOb91. [root@struggle ~]# openssl passwd -1 -salt QqbdToxJ #salt一样加密一样,salt第二字段,第一个字段为加密算法 Password: $1$QqbdToxJ$TtdYzV853fRh5KiKNOb91. #加salt防止逆推 <a href="http://www.tianfeiyu.com/wp-content/uploads/2015/04/12123059_Jrnn.jpg"><img src="http://www.tianfeiyu.com/wp-content/uploads/2015/04/12123059_Jrnn-300x234.jpg" alt="12123059_Jrnn" width="300" height="234" class="alignnone size-medium wp-image-372" /></a> openssl实现私有CA: 1.生成一对密钥,将公钥做成证书 2.生成自签证书 一般用rsa密钥,genrsa genrsa - generate an RSA private key 生成rsa私钥,公钥从私钥中提取的 [root@struggle ~]# (umask 077;openssl genrsa -out server1024.key 1024) #生成私钥 [root@struggle ~]# openssl rsa -in server1024.key -pubout #提取公钥 req:证书生成工具 x509:表示生成自签证书 -new:新的申请 -key:秘钥文件 -days:有效期限 CRL:证书吊销列表 [root@struggle ~]# openssl req -new -x509 -key server1024.key -out server.crt -days 356 生成自签证书 [root@struggle ~]# openssl x509 -text -in server.crt 输出证书文本信息 私有CA准备好了,然后就可以给别人发证了 1,[root@localhost tmp]# cd /etc/pki/CA/ 2,[root@localhost CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048) 生成私钥保存在private目录下 3,[root@localhost CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem 生成自签证书 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN string is too long, it needs to be less than 2 bytes long Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:shanxi Locality Name (eg, city) [Default City]:xian Organization Name (eg, company) [Default Company Ltd]:RUANXIE Organizational Unit Name (eg, section) []:tech Common Name (eg, your name or your server's hostname) []:www.tianfeiyu.com Email Address []:xupt@.com 4,[root@localhost CA]# ls 在CA目录下创建好这几个文件 cacert.pem certs crl index.txt newcerts private serial 5,[root@localhost CA]# echo 01>serial 申请用户起始数 三,证书申请 1,[root@localhost httpd]# mkdir ssl;cd ssl 在/etc/httpd创建ssl目录 2,[root@localhost ssl]# (umask 077;openssl genrsa -out vsftpd.key 1024) 申请生成私钥 3,[root@localhost ssl]# openssl req -new -key vsftpd.key -out vsftpd.csr 证书签署请求(主机单位保持一致) 不需要-x509,其为生成 自签证书用的,其他都一样 4,[root@localhost ssl]#openssl rsa -in vsftpd.key -pubout 提取公钥 </code>