openssl用法及实现私有认证

服务器 struggling 1412次浏览 0个评论

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>

DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址