天天看点

openssl实现证书申请

一.openssl

      openssl 由3部分组成:

           openssl: 多用途的命令行工具

           libcrypto: 加密算法库

           libssl:加密模块应用库,实现了ssl及tls

      openssl子命令:

      1. 对称加密工具:enc,gpg

           常用算法: 3des,aes,blowfish,twofish

            openssl enc:

                 加密: openssl enc -e -des3 -a-salt -in anaconda-ks.cfg -out anaconda-ks.cfg.des3       

openssl实现证书申请

                 查看加密后的文件是乱码

                 解密:openssl enc -d -des3 -a-salt -in anaconda-ks.cfg.des3 -out anaconda-ks.cfg        

openssl实现证书申请

      2.单向加密

           单向加密工具::md5sum, sha1sum,sha224sum,sha256sum…

                          openssldgst

           算法: md5, sha1

           openssldgst-md5 [-hex默认]/PATH/SOMEFILE

           openssldgst-md5 testfile

           md5sum /PATH/TO/SOMEFILE

           如: openssl dgst -md5 f1

openssl实现证书申请

      3. 生成用户密码:

           passwd命令:man sslpasswd

           openssl passwd-1 -salt SALT(最多8位)

           openssl passwd-1 –salt centos

      4.生成随机数: man sslrand

            openssl rand -hex|-base64 num

                 num:表示字节数,-hex:每个字节4位,出现的字符数为num*2

openssl实现证书申请

      5.公钥加密

           算法: RSA,ELGamal,DSA

           工具: gpg,openssl rsautl

           密钥交换:

                 公钥加密,DH

           生成密钥对:

                 openssl genrsa-out/PATH/TO/PRIVATEKEY.FILE NUM_BITS

                 (umask 077; openssl genrsa -outkey –des 1024)      注意:-des 为加密               

openssl实现证书申请

           从私钥中提取公钥:

                 openssl rsa -in PRIVATEKEYFILE –pubout –outPUBLICKEYFILE                    

openssl实现证书申请

二. 创建CA和申请证书

      2.1 创建私有CA:

           1. 生成私钥

           2. 生成自签署证书

                 (1)私钥用于签发证书时,向证书添加数字签名使用

                 (2)证书:每个通信方都导入此证书至"受信任的证书颁发机构"

           openssl的配置文件:/etc/pki/tls/openssl.cnf

           工作目录: /etc/pki/CA

      2.2 建立私有CA步骤:

           1. 创建所需要的文件

                 touch/etc/pki/CA/index.txt  ---颁发证书时写入内容

                 echo 01 >/etc/pki/CA/serial  ---序列号文件,从1开始

           2. 生成私钥文件:/etc/pki/CA/private/cakey.pem

           (umask 077; openssl genrsa -out/etc/pki/CA/private/cakey.pem 2048)

           3. 生成自签证书

           openssl req -new -x509 -key/etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365         

openssl实现证书申请

           其中:

                 -new: 生成新的证书签署请求

                 -key: 私有文件路径,用于提取公钥

                 -days N : 证书有效时长

                 -out: 输出文件保存路径

                 -x509: 直接输出自签署的证书文件,通常只有构建CA时,才这么用

      2.3. 给客户端颁发证书

           在需要使用证书的主机上生成证书请求

                 1. 给web服务器生成私钥

                 (umask 066; openssl genrsa -out/etc/httpd/ssl/httpd.key 2048)    注意:-out指定的路径是需要使用证书的服务的路径

                 2. 生成证书申请文件

                 openssl req -new -key/etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr    注意:httpd.csr就是请求文件

                 3.将证书请求文件传输给CA

                 4. CA签署证书,并将证书颁发给请求者:

                      openssl ca -in/root/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365      注意:httpd.crt为生成的证书

                      注意:默认国家,省,公司名称必须和CA一致,如果是公有CA,那么公司的地址不一定在一个城市,那么久需要修改配置文件了

                            vim/etc/pki/tls/openssl.cnf

openssl实现证书申请

                 5.查看生成的证书的信息:

                      openssl x509 -in/etc/pki/CA/certs/httpd.crt  -noout-text|subject|serial|dates

                 6.吊销证书

                      (1)在客户端获取要吊销的证书的serial

                            openssl  x509 -in /PATH/FROM/CERT_FILE  -noout -serial -subject

                      (2)在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致

                            吊销证书:

                                  openssl ca-revoke /etc/pki/CA/newcerts/01.pem                           

openssl实现证书申请

                            生成吊销证书的编号(第一次吊销一个证书时才需要执行)

                                  echo 01 >/etc/pki/CA/crlnumber

                            更新证书吊销列表

                                  openssl ca crl-gencrl -out /etc/pki/CA/crl/ca.crl

继续阅读