openssl建立私有CA

                                   openssl建立私有CA

一.常见的加密解密算法有

对称加密:加密和解密使用同一个密钥,其依赖于算法和密钥,算法是固定的,而密钥才是  保证文件的安全性的主体,特点是:加密、解密使用同一密钥;将明文分隔成固定大小的块,逐个进行加密;常见的有DESAES,DES3

非对称加密:主要是公钥加密,其特点是存在一个密钥对,即私钥和公钥。私钥仅允许个人使用,公钥是公开给所有人的。常用算法RSADSAELGamal


单向加密:提出数据的特征码,特点是无论原来的数据是多大级别,其加密结果长度一样;原始数据微小改变,将会导致结果巨大变化。常见的算法如md5

二.数字签名

 数字签名是用于密钥交换的,即保证密钥交换双方接受到的密钥是可靠的。

    一般来说,获取证书的办法主要有向RA注册申请以及构建私有CA,不过向RA注册申请不是免费的,需要付费。所以我们如果没有必有,可以用构建私有CA的办法。

构建私有CA,简单的说就是服务器端自己给自己颁发CA(证书)。当有客户端提出需要申请证书时,服务器端经过可靠途径把证书传递到客户端手里。当客户端获得该证书后就可以把它放到本地证书信任库里,当下次访问该服务端时,就可进行信任访问

构建私有CA主要有两个步骤:

       1.服务端建立自己的CA证书

       2.给各客户端分发证书

1.在服务端建立自己的CA

  •  建立私钥文件

       三点建议:

           私钥文件的常用格式为.pem

           一般,我们在openssl的工作目录下进行与之有关的目录,openssl的工作目录在/etc/pki/CA/

           私钥文件只有该文件的建立者有只读权限,其他用户没有任何权限

建立私钥文件的命令:openssl genrsa 

常用选项:-out  /path/to/keyname.pem:将产生的私钥文件放在何处

进入CA工作目录,建立私钥文件

wKiom1U2OwLzsKtzAADbhshpXY8265.jpg

wKioL1U2PG2QYFJ4AACPCxhFZyk838.jpg

注意:第二个命令的最后有一个2048,指的是私钥长度为2048位,可用的有1024,2048

  • 生成自签证书

生成自签证书的命令格式为:

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

其中:

openssl req :生成签发证书命令

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

      -key:私钥文件路径

      -days:证书有效时长

       -out :输出证书名称

       -x509:直接输出自签署的证书文件,通常在构建CA时采用

 

输入以下命令后,会让你填入一些信息,比较注意的一项是common name,一般不填ip地址

wKiom1U2Ox_SOHz5AAHw2NpmvLs769.jpg

同时要参考CA配置文件:/etc/pki/tls/openssl.cnf

需要有一个index.txt,所以我们必须创建一个名为index.txt的文件,以及一个名为serial的文件,并传入证书的初始序列号,放在CA工作目录下,否则后面步奏会报错。

wKioL1U2PIjAYVDCAAEVw119npU010.jpg

 

wKiom1U2Oz7gHfOuAABTc39Nx4U314.jpgwKioL1U2PKXxSlHjAACtSRppEeA085.jpg

wKioL1U2PK7jdi7SAAA1m4JWw88472.jpg

 

注意以下工作是在另外一台主机上工作,作为客户端模拟申请证书的步骤,但是没有多余的机器只能在同一台主机上进行,建议以下步奏在另外一个虚拟机上进行。

2.客户端发证书:

  • 客户端申请证书

 在证书申请的主机上进行如下步骤:

 (1) 生成私钥;

   生成私钥的步奏与在服务端一样

wKiom1U2O17RzfSjAAByeclhqdI809.jpg

 (2) 生成证书签署请求;

与 服务端的命令基本一致,这里注意一个问题,不能有-x509这个选项,因为这里是客户端在申请证书,不是服务器建立证书

 注意:

      (a) 其中的subject信息部分,要与CA的保持一致;

      (b) Common Name要使用此主机在通信真实使用名字;

wKiom1U2O3_w7663AALmV8qQMew966.jpg

wKioL1U2POezlpWeAAFxp3EBhQ4701.jpg

 (3) 把请求发送给CA服务端

  选用可靠途径,将httpd.csr文件传递给服务端

  • CA签发证书

  (1) 验正请求者信息并签署证书

  验证签署用户请求者信息通常用如下命令

  openssl ca -in /path/to/file1  -out  /path/to/file2 -days #

     其中:

         -in :客户端的申请证书,即上面由客户端发来的httpd.csr文件

         -out :证书输出,即发给客户端的证书


wKiom1U2O5nBIIv8AAD9O6HC1gY440.jpg

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

 把httpd.crt发给客户端

wKioL1U2PQCA4--lAAGTaYjP8Js262.jpg


你可能感兴趣的:(安全性,服务器,客户端)