分享

基于OpenSS 的CA 建立及证书签发

 vclyin 2009-12-10
1、建立CA目录结构
按照 OpenSSL 的默认配置建立 CA ,需要在文件系统中建立相应的目录结构。安装完openssl后,相关配置文件在/etc/ssl/openssl.cnf中进行设置。在debian下安装的
openssl,所以修改配置文件/etc/ssl/openssl.cnf

    dir=./demoCA # Where everything is kept  

修改为   dir=/home/democa # Where everything is kept

    终端操作:

        #mkdir -p /home/democa/{private,newcerts}

        #touch /home/democa/index.txt

        #echo 01 > /home/democa/serial
2、生成CA证书的RSA密钥对

#openssl genrsa -des3 -out /home/democa/private/cakey.pem 2048

    参数解释:

        genrsa

           用于生成 RSA 密钥对的 OpenSSL 命令。

        -des3

           使用 3-DES 对称加密算法加密密钥对,该参数需要用户在密钥生成过程中输入一个口令用于加密。今后使用该密钥对时,需要输入相应的口令。如果不加该选项,则不对密钥进行加密。

        -out /home/democa/private/cakey.pem

           令生成的密钥对保存到文件 ./demoCA/private/cakey.pem

        2048

           RSA 模数位数,在一定程度上表征了密钥强度。
3、生成CA证书请求

为了获取一个 CA 根证书,我们需要先制作一份证书请求。先前生成的 CA 密钥对被用于对证书请求签名。

      #openssl req -new -days 365 -key /home/democa/private/cakey.pem -out careq.pem

      参数解释:

         req

            用于生成证书请求的 OpenSSL 命令。

         -new

            生成一个新的证书请求。该参数将令 OpenSSL 在证书请求生成过程中要求用户填写一些相应的字段。

         -days 365

            从生成之时算起,证书时效为 365 天。

         -key /home/democa/private/cakey.pem

            指定 /home/democa/private/cakey.pem 为证书所使用的密钥对文件。

         -out careq.pem

            令生成的证书请求保存到文件 careq.pem
4、对CA证书请求进行签名

     在实际应用中,用户可以通过向知名 CA 递交证书请求来申请证书。但是在这里,我们需要建立的是一个根 CA ,只能由我们自己来对证书请求进行签名。所以我们让 OpenSSL 使用证书请求中附带的密钥对对该请求进行签名,也就是所谓的“ self sign

     #openssl ca -selfsign -in careq.pem -out /home/democa/cacert.pem

     参数说明:

        ca

           用于执行 CA 相关操作的 OpenSSL 命令。

        -selfsign

           使用对证书请求进行签名的密钥对来签发证书。

        -in careq.pem

           指定 careq.pem 为证书请求文件。

        -out /home/democa/cacert.pem

           指定 /home/democa/cacert.pem 为输出的证书。
5、一步完成CA证书请求生成及签名

     以上两个步骤可以合二为一。利用 ca 命令的 -x509 参数,通过以下命令同时完成证书请求生成和签名从而生成 CA 根证书

     #openssl req -new -x509 -days 365 -key /home/democa/private/cakey.pem -out /home/democa/cacert.pem

     参数说明:     

         req

            用于生成证书请求的 OpenSSL 命令。

         -new

            生成一个新的证书请求。该参数将令 OpenSSL 在证书请求生成过程中要求用户填写一些相应的字段。

         -x509

            生成一份 X.509 证书。

         -days 365

            从生成之时算起,证书时效为 365 天。

         -key ./demoCA/private/cakey.pem

            指定 cakey.pem 为证书所使用的密钥对文件。

         -out ./demoCA/cacert.pem

            令生成的证书保存到文件 ./demoCA/cacert.pem

   注:如果在 CA 建立过程中跳过证书请求生成的步骤,则不会产生 careq.pem 文件。

 

   以上就是建立好的CA系统,以后就可以用CA系统来签发用户证书使用了。
6、生成用户证书RSA密钥对

参照 CA RSA 密钥对生成过程,使用如下命令生成新的密钥对

      #openssl genrsa -des3 -out userkey.pem

      参数解释:

          genrsa

             用于生成RSA密钥对的openssl命令

          -des3

             使用 3-DES 对称加密算法加密密钥对,该参数需要用户在密钥生成过程中输入一个口令用于加密。今后使用该密钥对时,需要输入相应的口令。如果不加该选项,则不对密钥进行加密。

          -out

             生成的密钥对保存在当前目录下。
7、生成用户证书请求

   #openssl req -new -days 365 -key userkey.pem -out userreq.pem

      参数解释:

          req

             用于生成证书请求的 OpenSSL 命令。

          -new

             生成一个新的证书请求。该参数将令 OpenSSL 在证书请求生成过程中要求用户填写一些相应的字段。

          -days 365

             从生成之时算起,证书时效为 365 天。

          -key userkey.pem

             指定 userkey.pem 为证书所使用的密钥对文件。

          -out userreq.pem

             令生成的证书请求保存到文件 userreq.pem
8、签发用户证书

现在,我们可以用先前建立的 CA 来对用户的证书请求进行签名来为用户签发证书了。

      #openssl ca -in userreq.pem -out usercert.pem

      参数解释:

           ca

              用于执行 CA 相关操作的 OpenSSL 命令。

           -in userreq.pem

              指定用户证书请求文件为 userreq.pem

           -out usercert.pem

              指定输出的用户证书文件为 usercert.pem

    第678步就是使用CA签发用户的密钥和证书。用户就可以使用密钥和证书进行ssl协议编程了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多