[bingo]openssl文档笔记一

发表于:2007-07-04来源:作者:点击数: 标签:
概述: OpenSSL是一个实现了SSL(Secure Sockets Layer v2/v3)和TLS(Transport Layer Security v1)协议以及相关密码标准的工具包。 openssl程序用来在命令行模式下使用OpenSSL的密码函数。它的功能有: a) 创建RSA、DH、DSA密钥 b) 创建X.509证书、CSRs以及CRL
概述: OpenSSL是一个实现了SSL(Secure Sockets Layer v2/v3)和TLS(Transport Layer Security v1)协议以及相关密码标准的工具包。
   openssl程序用来在命令行模式下使用OpenSSL的密码函数。它的功能有:
    a) 创建RSA、DH、DSA密钥
    b) 创建X.509证书、CSRs以及CRLs
    c) 计算摘要
    d) 对称密钥的加解密
    e) SSL/TLS的客户端、服务端的测试
    f) 处理S/MIME签名或加密标准的邮件

http://www.openssl.org/docs/apps/openssl.html

[bingo]openssl文档笔记一
MSN: lubin_cn@hotmail.com

概述: OpenSSL是一个实现了SSL(Secure Sockets Layer v2/v3)和TLS(Transport Layer Security v1)协议以及相关密码标准的工具包。
   openssl程序用来在命令行模式下使用OpenSSL的密码函数。它的功能有:
    a) 创建RSA、DH、DSA密钥
    b) 创建X.509证书、CSRs以及CRLs
    c) 计算摘要
    d) 对称密钥的加解密
    e) SSL/TLS的客户端、服务端的测试
    f) 处理S/MIME签名或加密标准的邮件


1. asn1parse 用来解析ASN1编码的数据
    asn1parse [options]<infile
    -inform DER|TXT|PEM 输入格式
    -in filename
    -out filename 通常是DER编码
    -noout 不输出
    -offset number 开始解析的位置
    -length number 需要解析的字节数
    -i 缩进(indent)
    -dump 对不可见数据显示16进制
   asn1parse -inform DER -in ca.cer -i
   显示结果:xx: 冒号前的代表起始字节数,d: 深度(用于缩进),hl: TLV种的TL,l: TLV中的L
    0:d=0  hl=3 l= 137 cons: SEQUENCE
    3:d=1  hl=3 l= 129 prim: INTEGER           :E5D21E1F5C8D20.....
  135:d=1  hl=2 l=   3 prim: INTEGER           :010001

2. ca 一个很小的CA应用程序,可以签发证书,产生CRL,将状态等信息保存在TXT中。
    ca args
   a) CA OPTIONS
    -config filename 指定配置文件
    -name 指定配置文件中的哪一部分被使用
    -in filename 需要被CA签发的证书请求
    -infiles file1 file2 对多个文件的处理
    -ss_cert filename 用于自签名self signed..
    -out filename 默认为标准输出
    -outdir directory
    -cert filename CA证书文件
    -keyfile filename 用于签名的私钥文件
    -key password 保护私钥的口令(不推荐使用该参数)
    -verbose 打印详细的过程
    -startdate date 格式YYMMDDHHMMSSZ
    -enddate date 格式YYMMDDHHMMSSZ
    -days arg 过期的天数
    -md alg 摘要算法。md5,sha1等
    -policy arg 指定配置文件中使用哪部分策略
    -preserveDN 反转DN。。 :)
    -noemailDN DN中去掉email
    -batch 系统将不再需要用户干预(输入)自动处理
    -extensions section 指定扩展信息使用配置文件中的哪部分
    -extfile file 扩展信息从文件中读取
   b) CRL OPTIONS
    -gencrl
    -crldays num 下个CRL发布的时间间隔
    -crlhours num
    -revoke filename 撤销一个证书
    -crl_reason reason 撤销的原因
    -crl_hold instruction 撤销的原因代码

3. crl 处理DER和PEM编码的CRL文件
    crl [options]
    -inform DER|PEM
    -outform DER|PEM
    -in filename
    -out filename
    -text 文本方式显示出CRL
    -noout
    -issuer 输出签发者DN
    -lastupdate
    -nextupdate
    -CAfile file 给出CA验证CRL
    -CApath dir 在给定目录下验证CRL,该目录必须是标准的证书目录(x509 -hash)

4. dgst 计算摘要,并用来进行签名和验签。
    dgst [-md5|-md4|-md2|-sha1|-sha|-dss1] [options] [file...]
    -c 分开显示摘要值,16进制的被使用
    -d 打印BIO调试信息
    -hex 摘要用16进制输出
    -binary 摘要用2进制输出
    -out filename
    -sign filename 使用该文件(私钥)签名摘要值
    -passin arg 私钥的口令
    -verify filename 使用该文件(公钥)验证签名。输出验签成功或者失败的信息。
    -prverify filename 使用该文件(私钥)验证签名。
    -signature filename
    -rand file(s) 一个或多个用来产生随机数种子的文件数据
    file(s)... 需要进行摘要的文件

5. enc 对数据进行对称算法的加解密,以及Base64的编码解码。
 enc -ciphername [options]
   a) ciphername用来标识算法,支持的算法有base64, bf, cast, des, des3, idea, rc2, rc4, rc5等。
   b) options
    -in filename
    -out filename
    -e / -d 加密 / 解密
    -a 对输入(加密后)/输出(解密后)的数据进行Base64后再处理
    -k password 口令被用来产生密钥
    -kfile filename
    -K arg 密钥通过16进制输入
    -iv arg iv通过16进制输入
    -[pP] 打印出key以及iv

6. errstr 解释openssl运行中返回的错误代码。
    返回:27594:error:2006D080:lib(32):func(109):reason(128):bss_file.c:107:
    解释:openssl errstr 2006D080

7. genrsa 用来产生RSA公私钥对
 genrsa [options] numbits
    -out filename
    -des|-des3|-ides... 保护私钥的方式
    -F4|-3 指定e是65537或者3
    numbits 模长,1024,2048等

8. pkcs12 产生或解析PKCS#12(.pfx)文件
 pkcs [options]
   a) 解析参数
    -in filename 输入P12文件
    -out filename 以PEM输出证书和私钥文件
    -noout
    -clcerts 只输出用户证书
    -cacerts 只输出CA证书
    -nokeys 不输出私钥
    -des / -des3 / -idea 加密输出私钥
    -nodes 不加密私钥输出
    -nomacver 不做MAC验证
   b) 创建文件参数
    -export 用来创建P12文件而非解析
    -out filename
    -in filename 以PEM输入证书和私钥文件
    -inkey filename 指定私钥文件,如果不使用,则私钥包含在-in中
    -name friendlyname 为证书以及私钥指定一个别名
    -caname friendlyname 为其余的证书指定一个别名
    -certfile filename 读入额外的证书文件
    -chain 将加入用户证书的整条证书链
    -descert 使用3DES加密证书

9. pkcs7 处理DER或PEM的PKCS7文件
 pkcs7 [options]
    -inform DER|PEM 默认为PEM
    -outform DER|PEM
    -in filename
    -out filename
    -print_certs 打印出文件中所有的证书和CRL
    -text 显示出证书的详细信息,不只是subject和issuer name
    -noout

10. req 处理和创建PKCS#10标准的证书请求,也能做为根CA创建根证书。
 req [options]
    -inform DER|PEM
    -outform DER|PEM
    -in filename
    -out filename
    -text 以文本方式打印出证书请求信息
    -pubkey 输出公钥
    -noout
    -modulus 输出证书请求中公钥的模长
    -verify 验证证书请求
    -new 创建证书请求。如果没有-key参数,那么将产生一对新的RSA私钥。
    -newkey arg 创建新的证书请求和新的私钥。参数可以为rsa:nbits,nbits为密钥长度。
    -key filename 指定私钥文件,默认为PKCS#8的PEM格式。
    -keyform PEM|DER 和-key对应,指定私钥格式。
    -keyout filename 用于输出新创建的私钥文件。
    -nodes 输出的私钥不加密
    -md5|sha1|md2|mdc2 签名请求所使用的摘要算法。
    -config filename 从中读取配置文件
    -subj arg 设置新证书请求的subject
    -x509 用来表明创建自签的根证书,而不是证书请求。
    -days n 当-x509使用时,用来标识证书的过期时间。默认为30天。
    -set_serial n 当产生根证书的时候,用来指定证书序列号
    -reqexts section 用来指明使用的证书扩展项或者证书请求扩展项
    -batch 无交互模式non-interactive mode
    openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -out ca.pem  产生一个CA根证

11. rsa 用来处理RSA密钥,能在不同的格式之间转换,并打印出其中的参数。
 rsa [options]
    -inform DER|PEM|NET
    -outform DER|PEM|NET
    -in filename
    -out filename
    -des|-des3|-idea 导出私钥所使用的加密算法
    -text 以文本方式打印出公私钥的详细信息
    -modulus 输出模长
    -check 检查私钥的健壮性
    -pubin 默认是私钥在-in中被读入,该参数指定公钥被读入
    -pubout 当-pubin时,默认就使用了-pubout

12. rsautl 可以用RSA来进行签名、验签、加解密。
 rsautl [options]
    -in filename
    -out filename
    -inkey file 输入的密钥文件,默认为私钥
    -pubin 指明-inkey中输入的是公钥
    -certin 指明-inkey中输入的是证书(包含公钥)
    -sign 签名-in,输出到-out
    -verify 验签
    -encrypt 使用RSA公钥加密
    -decrypt 使用RSA私钥解密
    -pkcs|-oaep|-ssl|-raw 填充方式,默认为PKCS#1 v1.5的填充
    -hexdump 16进制输出
    -asn1parse 使用ASN.1解析输出数据,经常和-verify连起来用

13. smime 用来处理S/MIME邮件,包括加解密,签名验签。
 smime [options]
    五种操作中需要选择一种,其余的参数和该操作相关联:
    -encrypt
    -decrypt
    -sign
    -verify
    -pk7out
    其余参数:
    -in filename 输入MIME消息,或者是被加密、签名过的消息
    -inform SMIME|PEM|DER 当输入为P7格式时,使用该参数,默认为SMIME
    -out filename
    -outform SMIME|PEM|DER
    -content filename 在-verify中使用,指定的文件包含额外的文件内容。用于不包含原文的P7签名。
    -text 为加密或者签名后的数据添加MIME的TEXT文头
    -CAfile file 在-verify中使用
    -CApath dir 在-verify中使用,给定目录下包含CA证书,该目录必须是标准的证书目录(x509 -hash)
    -des|-rc2-64|-aes128|... 指定加密算法
    -nointern 在-verify一个消息时,证书不包含在输入中,用-certfile指定。
    -nochain 不进行证书链的验证
    -nosigs 不验签
    -nocerts 消息中不包含证书,需要用-certfile指定
    -noattr 不包含属性,比如签名时间,算法等
    -binary 当MIME中包含不规范的二进制数据的时候使用
    -nodetach 使用opaque签名。
    -certfile file 指定额外的证书,PEM格式。
    -signer file 签名时指定签名者证书,验签时输出签名者证书
    -recip file 指定解密消息时候的接收者证书,该证书必须和消息中包含的证书匹配
    -inkey file 指定签名或者解密时候的私钥
    cert.pem... 加密消息时候,指定一个或多个接收者证书
    -to, -from, -subject SMIME中相关的邮件头信息

14. verify 验证证书链
 verify [options]
    -CApath directory 一个可信的证书存放目录。证书或者其链接的名字格式为hash.0(hash为证书subject的hash值),在UNIX中的c_rehash脚本就可以完成这些操作(redhat里好像没有? -_-!)。
    -CAfile file 一个可信证书的文件,该文件可以存放多个PEM格式的证书。
    -untrusted file 一个不可信的证书文件。
    -purpose purpose 证书用途。
    -issuer_check 打印出当前证书签发者证书的验证信息。
    - 标识最后的参数。后面的参数都为需要验证的证书。
    certificates 需要验证的证书

15. x509 显示证书信息,转换证书格式,签发证书。
 x509 [options]
   a) 输入、输出,以及通用的参数
    -inform DER|PEM|NET
    -outform DER|PEM|NET
    -in filename 默认输入的是证书,而非证书请求
    -out filename
    -md2|-md5|-sha1|-mdc2
   b) 显示选项
    -text 文本方式显示证书信息
    -certopt option 定制-text的输出格式,option之间可以用逗号分隔
    -noout
    -modulus 显示证书里面公钥的模长
    -serial 显示证书序列号
    -subject_hash 输出证书中subject DN的HASH值,OpenSSL通过这个来在一个目录中检索证书
    -issuer_hash 输出证书中签发者DN的HASH值
    -nameopt option 决定是谁的DN被显示
    -email 输出email地址
    -startdate 输出证书起始时间
    -enddate 输出证书中止时间
    -dates 输出证书起止时间
    -fingerprint 输出整个证书的DER编码的摘要
    -C 用Cpp的形式输出证书
   c) 签名参数
    -signkey filename 用指定的私钥文件进行自签名。如果-in输入一个证书,那么就将subject DN替换成issuer DN,并且修改公钥和起止时间,如果没有-clrext那么所有的证书扩展项被保留。如果-in输入一个证书请求,那么就产生一个自签名的证书。
    -clrext 删除-signkey签名证书时候的证书扩展项。
    -keyform PEM|DER 标识-signkey指定的私钥格式
    -days arg 标识证书过期的时间。默认为30天。
    -x509toreq 将一个证书转换成证书请求,-signkey指定证书请求使用的私钥。
    -req 标识输入的是一个证书请求,而非证书
    -set_serial n 设置证书序列号
    -CA filename 标识被用来签名的CA证书,它的subject DN将被做为签发证书的issuer DN。
    -CAkey filename 和CA证书对应的CA私钥
    -CAserial filename 用来标识存放CA序列号的文件,产生证书时需要的序列号可以从该文件中取出,并自增。
    -CAcreateserial 如果CA序列号文件不存在,将创建。
    -extfile filename 指定签发证书时候使用的扩展项。
    -extensions section 扩展项文件中使用的section

原文转自:http://www.ltesting.net