OpenSSL命令行工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenSSL命令行工具相关的知识,希望对你有一定的参考价值。

  数据的加密解密对于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 有效期限

   

以上是关于OpenSSL命令行工具的主要内容,如果未能解决你的问题,请参考以下文章

Linux自学笔记——OpenSSL命令行工具

OpenSSL库开发:命令行使用

linux-openssl命令行

做CA证书嫌OpenSSL命令行麻烦吗

linux中openssl工具

openssl命令