数据的加密解密对于Linux系统来说,是至关重要的一个概念,必须懂的对数据进行保护,上次我们详细说了关于数据加密的种种方式,如公钥加密,单向加密,密钥交换等,以及认证机构CA的存在;而OpenSSL命令就是一个可以帮助我们实现公钥加密,创建私钥,并根据私钥创建出公钥;还可以进行单向加密,生成随机数,对用户的密码进行加密操作;还有一点,就是可以利用OpenSSL自己认证生成私人CA,用户可以根据OpenSSL命令生成CA请求证书,并将此证书发给有公信力的CA进行认证,产生一个CA证书用来证明用户;
openssl enc:加密解密命令,可以指定加密算法加密文件;
in filename:加密文件路径;
out filename:输出的加密文件路径;
-ciphername:算法名称,des3,des,aes,rc4;
-e:加密;
-d:解密;
-a/-base64:纯文本格式的加密;
-salt:随机盐;
加密实例:
解密实例:
openssl rand:生成随机数
-hex:生成十六进制的随机数;
-base64:生成纯文本格式的随机数;
实例:
openssl dgst:单向加密,只能加密,不能解密;
-ciphername:指定单向加密算法,sha,md5等;
实例:
openssl passwd:用户密码加密;
openssl passwd -1 -salt (盐可自写)
openssl passwd [-1] [-salt string]
实例:
openssl genrsa:公钥加密,首先创建私钥;
-out filename:将私钥放入文件中;
私钥文件最好是将权限设置为600,这样其他用户就无法访问修改,只有创建这个私钥文件的用户 可以访问修改;
实例:
设置权限:
openssl rsa:根据私钥文件生成公钥
一个私钥只能生成同一种公钥,除非私钥文件遭到修改,否则公钥文件不会产生变化;
-in filename:私钥文件作为输入;
-out filename:公钥文件作为输出;
实例:
建立私有的CA
建立一个私有的CA文件首先要创建几个固定的CA配置文件,这些配置文件都是在CA专有的配置文件中有对应的位置的,如果要修改文件名的话,也要将CA专有的配置文件/etc/pki/tls/openssl.cnf中的文件名;
目录级文件:
/etc/pki/CA/certs
/etc/pki/CA/newcerts
/etc/pki/CA/crl
文本级文件:
/etc/pki/CA/index.txt
/etc/pki/CA/serial
需要在文件serial中输入01,其余文件如果没有就创建,放空即可;
CA创建的公钥私钥必须放在指定路径下的文件中;
公钥:/etc/pki/CA/cacert.pem
私钥:/etc/pki/private/cakey.pem
创建CA私钥:
生成自检的证书
openssl req -new -x509 -key filename -out filename
-new:生成一个新的证书;
-x509:当是CA生成这个自签证书时使用x509;
-key:CA的私钥;
-out filename:输出的公钥文件即自签证书;
-days:自签证书的有效期限,以天为单位;
实例:
CA对外来用户的证书申请,需要经过严格的审核,而在审核过后,CA就可以通过openssl ca来对用户签发证书,证书完成后,发送给用户即可;
用户的证书申请的生成也同CA的证书生成一样,都是使用openssl req生成的;
用户将自己生成的证书,发送给CA
openssl ca -in 用户证书路径 -out 生成的用户证书路径 -days 有效期限