OpenSSL、创建CA及证书申请与管理

OpenSSL
  OpenSSL:开源项目
  三个组件:

  • openssl: 多用途的命令行工具,包openssl
  • libcrypto: 加密算法库,包openssl-libs
  • libssl:加密模块应用库,实现了ssl及tls,包nss

openssl命令:

  • 两种运行模式:交互模式和批处理模式
  • openssl version:程序版本号
  • 标准命令、消息摘要命令、加密命令
  • 标准命令:
  •        enc, ca, req, ...

openssl命令

对称加密:

  • 工具:openssl enc, gpg
  • 算法:3des, aes, blowfish, twofish

enc命令:

  • 帮助:man enc
  • 加密:
  • openssl enc -e -des3 -a -salt -in testfile-out testfile.cipher
  • 解密:
  • openssl enc -d -des3 -a -salt –in testfile.cipher-out testfile
  • openssl ?

单向加密:

  • 工具:md5sum, sha1sum, sha224sum,sha256sum…
  • openssl dgst

dgst命令:

  • 帮助:man dgst
  • openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
  • openssl dgst -md5 testfile
  • md5sum /PATH/TO/SOMEFILE

MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制
     CBC-MAC
     HMAC:使用md5或sha1算法

生成用户密码:

  • passwd命令:
  • 帮助:man sslpasswd
  • openssl passwd -1 -salt SALT(最多8位)
  • openssl passwd -1 –salt centos

生成随机数:

  • 帮助:man sslrand
  • openssl rand -base64|-hex NUM
  • NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2

公钥加密:

  • 算法:RSA, ELGamal
  • 工具:gpg, openssl rsautl(man rsautl)

数字签名:

  • 算法:RSA, DSA, ELGamal

密钥交换:

  • 算法:dh
  • DSA: Digital Signature Algorithm
  • DSS:Digital Signature Standard
  • RSA:

生成密钥对儿:man genrsa
生成私钥

  • openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
  • (umask 077; openssl genrsa –out test.key –des 2048)
  • openssl rsa -in test.key –out test2.key 将加密key解密

从私钥中提取出公钥

  • openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
  • openssl rsa –in test.key –pubout –out test.key.pub

随机数生成器:伪随机数字

  • 键盘和鼠标,块设备中断
  • /dev/random:仅从熵池返回随机数;随机数用尽,阻塞
  • /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

PKI:Public Key Infrastructure

  • CA
  • RA
  • CRL
  • 证书存取库

建立私有CA:

  • OpenCA
  • openssl

证书申请及签署步骤:

  1. 生成申请请求
  2.  RA核验
  3.  CA签署
  4. 获取证书

创建CA和申请证书


创建私有CA:

  • openssl的配置文件:/etc/pki/tls/openssl.cnf
  • 三种策略:匹配、支持和可选
  • 匹配指要求申请填写的信息跟CA设置信息必须一致,支持指必须填写这项申请信息,可选指可有可无

1、创建所需要的文件

  • touch /etc/pki/CA/index.txt 生成证书索引数据库文件
  • echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号

2、 CA自签证书
生成私钥
    cd /etc/pki/CA/
    (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

生成自签名证书

  • openssl req -new -x509 –key
  • /etc/pki/CA/private/cakey.pem -days 7300 -out
  • /etc/pki/CA/cacert.pem
  • -new: 生成新证书签署请求
  • -x509: 专用于CA生成自签证书
  • -key: 生成请求时用到的私钥文件
  • -days n:证书的有效期限
  • -out /PATH/TO/SOMECERTFILE: 证书的保存路径

3、颁发证书
在需要使用证书的主机生成证书请求

  • 给web服务器生成私钥
  • (umask 066; openssl genrsa -out/etc/pki/tls/private/test.key 2048)
  • 生成证书申请文件
  • openssl req -new -key /etc/pki/tls/private/test.key
  • -days 365 -out etc/pki/tls/test.csr

将证书请求文件传输给CA

  • CA签署证书,并将证书颁发给请求者
  • openssl ca -in /tmp/test.csr –out/etc/pki/CA/certs/test.crt -days 365
  • 注意:默认国家,省,公司名称三项必须和CA一致

创建CA和证书管理


 查看证书中的信息:

  • openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates
  • openssl ca -status SERIAL 查看指定编号的证书状态

 4、吊销证书
  在客户端获取要吊销的证书的serial
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
   在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,
吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
   指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行
echo 01 > /etc/pki/CA/crlnumber
   更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl.pem
   查看crl文件:
openssl crl -in /etc/pki/CA/crl.pem -noout -text
 

你可能感兴趣的:(CA,证书,OpenSSL)