当前位置: 主页 > 服务器技术 > 安全防护 > OpenSSL应用简介

OpenSSL应用简介

时间:2010-4-13来源:互联网 点击:


例:对数据文件进行签名、验证

    * 利用私钥对rsa.txt加密(签名作用 -sign)
          o Openssl rsautl –sign –in rsa.txt –inkey my.key -out rsa
    * 利用公钥对rsa文件进行验证(使用公钥 -verify)
          o Openssl rsautl –verify –in rsa –inkey my.key –out rsa3.txt

      或openssl rsautl –verify –in rsa –inkey mykey.pem –raw –hexdump

                + 用来检查原始的签过名的数据,一般不用


7.3.2利用openssl生成证书

    * 与证书生成有关的几个命令
          o Req命令:本指令用来创建和处理PKCS#10格式的证书.它还能够建立自签名证书,做Root CA.
                + openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-noout][-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits] [-newkey dsa:file] [-nodes] [-key filename] [-keyform PEM|DER][-keyout filename] [-[md5|sha1|md2|mdc2]] [-config filename] [-x509] [-days n] [-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section]
                      # 参数说明见备注

1、与证书生成有关的几个命令

          o X509命令:用来显示证书的内容、转换证书格式,给CSR请求签名等。
                + openssl X509 [-inform PEM|DER|NET] [-outform PEM|DER|NET] [-keyform DER|PEM][-CAform DER|PEM] [-CAkeyform DER|PEM] [-in filename] [-out filename] [-serial] [-hash][-subject] [-issuer] [-nameopt option] [-email] [-startdate] [-enddate] [-purpose] [-dates] [-modulus] [-fingerprint] [-alias] [-noout] [-trustout] [-clrtrust] [-clrreject] [-addtrust arg] [-addreject arg] [-setalias arg] [-days arg] [-signkey filename] [-x509toreq] [-req] [-CA filename] [-Cakey filename] [-Cacreateserial] [-Caserial filename] [-text] [-C] [-md2|-md5|shal|mdc2] [-clrext] [-extfile filename] [-extensions section]

1、与证书生成有关的几个命令

    * CA命令:模拟CA中心行为,模拟CA给各种格式的CSA请求签名,产生和维护CRL列表,显示证书的状态等。其命令格式如下。
                + openssl CA [-verbose] [-config filename] [-name section] [-gencrl] [-revoke file] [-crldays days] [-crlhours hours] [-crlexts section] [-startdate date] [--endate date] [-days arg] [-md arg] [-policy arg] [-keyfile arg] [-key arg] [-passin arg] [-cert file] [-in file] [-out file] [-notext] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file] [-preserveDN] [-batch] [-msie_hack] [-extensions section]

2、证书生成的步骤描述

    * 在openssl目录下创建一子目录,用于放置四个文件:openssl.cnf,index.txt, index.txt.attr,serial
          o openssl.cnf内容见书P/183-184
    * 从openssl \apps\demoCA目录中其余三个文件到创建子目录
          o 本课程提供软件中已包含,在openssl\out32dll文件夹中
    * 为CA创建一个RSA私钥

      set path=c:\openssl\out32dll;%path%

      openssl genrsa –des3 –out ca.key 1024      //保护码设:123456

                + 说明:此时DOS界面已工作在c:\openssl\创建子目录名
          o 若根证书名不是ca.key及cacert.crt,则对openssl.cnf文件中相应的语句作修改
                + P/183页:default_keyfile=ca.key
                + P/184页:certificate =$dir/cacert.crt

                             private_key=$dir/ca.key

2、证书生成的步骤描述

    * 利用CA的RSA私钥创建一个自签名的CA根证书

      openssl req –new –x509 –days 3650 –key ca.key –out cacert.crt –config openssl.cnf

                + 输入对根证书的保护码
                + 国家、省份、城市、公司、部门等可选缺省值

      cacert.crt是根证书名

    * 为客户颁发证书
          o 先用genrsa命令生成私钥,再用req命令生成证书签署请求CRS,最后用X509生成证书

      openssl genrsa –des3 –out user.key 1024          //设保护码为147852

                      # 执行命令时需输入密码,此是对user.key保护码

      openssl req –new –key user.key –out user.crs –config openssl.cnf

                      # 提示输入密码,是user.key的保护码;再有一些个人信息输入(如同根证书)

      openssl x509 –req –in user.csr –out user.crt –CA cacert.crt –CAkey ca.key –days 600

                      # 注意大小写,同时输入的保护码是根证书的。user.crt是用户证书名

2、证书生成的步骤描述

          o 将user.crt转换为个人私钥证书

      openssl pkcs12 –export –clcerts –in user.crt –inkey user.key –out user.p12

                      # 命令执行过程中需输入三次密码
                            * 第一次是user.key的保护码   147852
                            * 第二、三次是根证书保护码   123456
                + 磁盘上将得到一个含有私钥的证书user.p12
    * 使用CA命令来模拟CA中心,进行证书签发和产生CRL列表
          o 证书签发:

      openssl ca –config openssl.cnf –in user.csr –out newuser.crt

                      # 执行时输入根证书保护码:123456,相应回答y/N时选Y,同一目录下生成几个文件。
          o 产生CRL列表
                + openssl ca –config openssl.cnf –gencrl –out crl.pem
                      # 输入根证书保护码:123456

7.3.3 证书内容的查看

    * 查看用户证书内容
          o openssl x509 –in user.crt –noout –text
    * 复制user.crt证书中公钥,存放于其他.key文件中
          o openssl x509 –in user.crt –pubkey –noout>user.key
    * 对签名证书user.crt进行详细分析
          o openssl asn1parse –in user.crt
    * 获得签名内容
          o openssl asn1parse –in user.crt –out usig -noout

有关证书过程

    * 使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程

1. 首先建立CA密钥:

                + openssl genrsa -des3 -out ca.key 1024 (创建密钥)
                + openssl rsa -noout -text -in ca.key (查看创建的证书)

2. 利用CA密钥自签署CA证书:

                + openssl req -new -x509 -days 3650 -key ca.key -out cacert.crt
                  -config openssl.cnf
                + openssl x509 -noout -text -in cacert.crt (查看创建的证书)

3. 创建服务器证书签署申请:

                + openssl genrsa -des3 -out client.key 1024
                + openssl rsa -noout -text -in client.key (查看创建的证书)

4. 利用证书签署申请生成请求

                + Openssl req –new –key client.key –out client.csr -config openssl.cnf
                + openssl req -noout -text -in client.csr (查看创建的请求)

有关证书过程

    * 使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程

      5. 进行证书签署:

                + openssl ca -keyfile ca.key -cert cacert.crt -in client.csr -out client.pem -config openssl.cnf (输入根证书保护码)

      6. 证书撤销:

                + openssl ca -keyfile ca.key -cert cacert.crt -revoke client.pem -config openssl.cnf
                      # 这时数据库被更新证书被标记上撤销的标志,需要生成新的证书撤销列表
                + 证书撤销列表文件要在WEB站点上可以使用,必须将crldays或crlhours和crlexts加到证书中:
                      # openssl ca -gencrl -config openssl.cnf -crldays 7 -crlexts crl_ext -out crl/sopac-ca.crl

7.3.4 证书的使用

    * 证书的使用
          o 文件传输
          o Web浏览
          o 电子邮件发送
                + 例outlook express使用证书签名、解密邮件
                + 步骤
                      # 配置outlook express收发邮件

第一步:设置邮件账号

第二步:导入证书

    * 双击存在磁盘上.p12文件,导入证书。
    * 在outlook express窗口“工具”/选项/安全/数字标识à导入个人证书,根据步骤执行

第三步:将证书赋给帐号

    * Outlook express窗口中à工具/帐号à选中一账号/属性à服务器(选中“我的服务器要求身份验证”)à安全(分别在签署证书、加密首选项/选择


思考题

    * 在openssl中实现对称加密/解密的命令是什么?
          o 对于DES加密,有哪几种形式
    * 利用哪些常用命令可产生不对称密钥对?
          o 用来管理私有密钥文件的命令是什么?
    * 进行数据加/解密、签名和验证用的命令是?
    * 生成证书常用的有关命令是?
    * 证书生成步骤有什么?
    * 根据实验要求验证各命令的使用,并提交实验结果。



Reg命令参数说明:

    * -inform DER|PEM :指定输入的格式是DEM还是DER. DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式.你去看看你做出来的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明内容,中间就是经过编码的东西。
    * -outform DER|PEM : 和上一个差不多,不同的是指定输出格式
    * -in filename :    要处理的CSR的文件名称,只有-new和-newkey俩个option没有被set,本option才有效
    * -passin arg :    查看有关CA中关于这个option的解释。
    * -out filename :    要输出的文件名
    * -passout arg :    参看dsa指令里的passout这个option的解释.
    * -text :   将CSR文件里的内容以可读方式打印出来
    * -noout   :    不要打印CSR文件的编码版本信息.
    * -modulus :    将CSR里面的包含的公共米要的系数打印出来
    * -verify : 检验请求文件里的签名信息
    * -new :    本参数产生一个新的CSR, 它会要用户输入创建CSR的一些必须的信息.至于需要哪些信息,是在config文件里面定义好了的.如果-key没有被set, 那么就将根据config文件里的信息先产生一对新的RSA密钥
    * -rand file(s) : 产生key的时候用过seed的文件,可以把多个文件用冒号分开一起做seed.
    * -newkey arg :同时生成新的私有密钥文件和CSR文件. 本option是带参数的.如果是产生RSA的私有密钥文件,参数是一个数字, 指明私有密钥bit的长度. 如果是产生DSA的私有密钥文件,参数是DSA密钥参数文件的文件名
    * -key filename   : 参数filename指明私有密钥文件名.允许该文件的格式是PKCS#8
    * -keyform DER|PEM :指定输入的私有密钥文件的格式是DEM还是DER. DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式..key, .crt文件一般都是PEM格式的,第一行和最后一行指明内容,中间就是经过编码的东西。
    * -outform DER|PEM   :    和上一个差不多,不同的是指定输出格式
    * -keyform PEM|DER :    私有密钥文件的格式, 缺省是PEM
    * -keyout filename :    指明创建的新的私有密钥文件的文件名. 如果该option没有被set, 将使用config文件里面指定的文件名.
    * -nodes   :    本option被set的话,生成的私有密钥文件将不会被加密
    * -[md5|sha1|md2|mdc2] : 指明签发的证书使用什么哈希算法.如果没有被set, 将使用config文件里的相应item的设置. 但DSA的CSR将忽略这个option, 而采用SHA1哈希算法.
    * -config filename   : 使用的config文件的名称. 本option如果没有set, 将使用缺省的config文件
    * -x509 : 本option将产生自签名的证书. 一般用来错测试用,或者自己玩下做个Root CA.证书的扩展项在 config文件里面指定
    * -days n   :   如果-509被set, 那么这个option的参数指定自己的CA给人家签证书的有效期.缺省是30天
    * -extensions section -reqexts section   :    这俩个option指定config文件里面的与证书扩展和证书请求扩展有关的俩个section的名字(如果-x509这个option被set).这样你可以在config文件里弄几个不同的与证书扩展有关的section, 然后为了不同的目的给CSR签名的时候指明不同的section来控制签名的行为.

站长资讯网
.
分页: [1] [2]
TAG: openSSL 应用
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言