首页 > 代码库 > 一次加密通信和SSL通信,openssl自建CA

一次加密通信和SSL通信,openssl自建CA

一次会话,发邮件,用户和用户之间的数据加密
1、生成数据
2、用单向加密数据生成特征码
3、用自己的私钥加密特征码放在数据后面
4、生成临时会话密钥加密特征码和数据
5、用对方的公钥加密临时密钥
技术分享

OpenSSL构建私有CA

构建私有CA

    1、生成私钥

    2、自签署证书

给节点发放证书

    1、节点申请证书

        节点生成私钥

        生成证书签署请求

        把请求文件发送给CA

    2、CA签署证书

        CA验证请求者的信息

        签署证书

        把签署好的证书发还给请求者


验正证书:

    1、使用CA的公钥的解密证书的数字签名

    2、使用同样的单向加密算法提取证书文件特征码,对比解密的结果
    3、验正主体名称与请求的服务器地址是否相同

SSL的工作过程,Client和Server之间
    1Server已CA申请过证书
    2ClientServer经过TCP3次握手
    3ClientServer请求证书,Server发送证书给Client
    4Client通过CA公钥解密签名验证来源合法性,再用同样的单向加密计算特征码验证完整性,后验证访问的主机是否一致(证书中的common name对比)
    5、协商ssl版本,加密算法,生成临时密钥进行通信
    6、除非连接断开再次建立连接



CentOS 6.6 openssl自建CA

有2台虚拟机,一台CA,一台http服务器

一、建立私有CA

1、在CA上生成私钥文件 在/etc/pki/CA/private

  1. [root@localhost ~]# cd /etc/pki/CA
  2. [root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)  
  3. 用()是为了在子shell中运行,不影响当前的umask  
  4. -out为输出私钥的位置    
  5. 2048为密钥的长度
2、在CA上生成自签署证书  必须在/etc/pki/CA目录下

  1. [root@localhost CA]# openssl req -new -x509 -key ./private/cakey.pem -days 3665 -out cacert.pem    
  2. -new 为生成新的证书,会要求用户填写相关的信息
  3. -x509 通常用于自签署证书,生成测试证书或用于CA自签署 
  4. -key私钥位置  
  5. -days申请的天数(默认30天) 
  6. -out生成位置

技术分享

以上自签时填写的相关信息可以通过/etc/pki/tls/openssl.cnf配置文件添加(以上截图已经填写过的效果),从而可以复制到其他主机生成签署请求的时候重复填写

    countryName_default

    stateOrProvinceName e_default

    0.organizationName_default

    organizationalUnitName_default

  以下2个不能使用默认值

    commonName   

    emailAddress

二、给http服务器发放证书

假设:用httpd服务,其位置为/etc/httpd/conf/certs,certs为自己创建的文件夹

1、http服务器申请证书:在http服务器上进行

生成私钥

  1. # (umask 077; openssl genrsa -out httpd.key 1024)

生成证书签署请求/etc/httpd/conf/certs
  1. # openssl req -new -key httpd.key -out httpd.csr -days 3665
  2. 在HTTP服务器端不需要加-x509,
2、在CA上给http服务器签署证书
需要把http那台主机的证书申请文件拷贝到CA(位置随意)
  1. # scp REQ_HOST:/path/to/somewhere/somefile.csr /path/to    
  2. 源端 目的端

第1次签署在/etc/pki/CA目录下创建以下文件

  1. # touch {index.txt,serial}
  2. # echo "01" > serial 首次必须添加序列号否则会报错unable to load number from /etc/pki/CA/serial    error while loading serial number
CA给http服务器签署证书

  1. # openssl ca -in httpd.crs -out http.crt
确认签署
  1. # cat index.txt
  2. V 151128012240Z 01 unknown /C=CN/ST=JS/O=CJ/OU=ops/CN=www.magedu.com/emailAddress=admin.magedu.com    查看index.txt,最前面有一个大V
  3. # cat serial    serial由01变02
  4. 02
  5. # ll /etc/pki/CA/newcerts/ 会有一个文件生成
  6. total 8
  7. -rw-r--r-- 1 root root 7878 Nov 28 09:23 01.pem
签署时CA的/etc/pki/CAcacert.pem一定要存在,否则会有一下错误
  1. [root@localhost tmp]# openssl ca -in http.csr -out http.crt
  2. Using configuration from /etc/pki/tls/openssl.cnf
  3. Error opening CA certificate /etc/pki/CA/cacert.pem
  4. 140176870549320:error:02001002:system library:fopen:No such file or directory:bss_file.c:39
  5. 140176870549320:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
  6. unable to load certificate
3、查看生成的证书的信息 (http.crt文件)
  1. # openssl x509 -in /path/to/somefile.crt -noout -text|-subject|-serial

  2. # openssl x509 -in http.crt -noout -subject
  3. subject= /C=CN/ST=JS/O=CJ/OU=ops/CN=www.magedu.com/emailAddress=admin.magedu.com
  4. # openssl x509 -in http.crt -noout -serial
  5. serial=01    -subject选项信息比较多,就不贴出来了
4、生成完需要拷贝到http服务器上  也用scp命令
三、吊销证书

1、第一次吊销需创建文件,生成编号,在CA端进行

  1. touch /etc/pki/CA/crlnumber
  2. echo "01" > /etc/pki/CA/crlnumber
如没创建/etc/pki/CA/crlnumber文件会有一下错误

  1. [root@localhost crl]# openssl ca -gencrl -out ca.crl
  2. Using configuration from /etc/pki/tls/openssl.cnf
  3. /etc/pki/CA/crlnumber: No such file or directory
  4. error while loading CRL number
  5. 140175277365064:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen(‘/etc/pki/CA/crlnumber‘,‘r‘)
  6. 140175277365064:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
2、在CA端,吊销证书
  1. # openssl ca -revoke /etc/pki/CA/newcerts/01.pem 吊销证书
  2. Using configuration from /etc/pki/tls/openssl.cnf
  3. Revoking Certificate 01.
  4. Data Base Updated
  1. # cd /etc/pki/CA/crl/
  2. [root@localhost crl]# openssl ca -gencrl -out thisca.crl 更新证书吊销列表
  3. Using configuration from /etc/pki/tls/openssl.cnf
3、查看吊销信息
  1. # cat index.txt 由V变成了R
  2. R 151128012240Z 141128021144Z 01 unknown /C=CN/ST=JS/O=CJ/OU=ops/CN=www.magedu.com/emailAddress=admin.magedu.com
  3. # cat crlnumber   由01变02
  4. 02

附件列表

  • 一次会话.jpg

 

一次加密通信和SSL通信,openssl自建CA