openssl命令中文版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1openssl-指令verify用法:opensslverify【-CApathdirectory】【-CAfilefile】【-purposepurpose】【-untrustedfile】【-help】【-issuer_checks】【-verbose】【-】【certificates】说明:证书验证工具。选项-CApathdirectory我们信任的CA的证书存放目录。这些证书的名称应该是这样的格式:xxxxxxxx.0(xxxxxxxx代表证书的哈希值。参看x509指令的-hash)你也可以在目录里touch一些这样格式文件名的文件,符号连接到真正的证书。那么这个xxxxxxxx我怎么知道怎么得到?x509指令有说明。其实这样子就可以了:opensslx509-hash-inserver.crt-CAfilefile我们信任的CA的证书,里面可以有多个CA的证书。-untrustedfile我们不信任的CA的证书。-purposepurpose证书的用途。如果这个option没有设置,那么不会对证书的CA链进行验证。现在这个option的参数有以下几个:sslclinetsslservernssslserversmimesignsmimeencrypt等下会详细解释的。-help打印帮助信息。2-verbose打印出详细的操作信息。-issuer_checks打印出我们验证的证书的签发CA的证书的之间的联系。要一次验证多个证书,把那些证书名都写在后面就好了。验证操作解释:S/MIME和本指令使用完全相同的函数进行验证。我们进行的验证和真正的验证有个根本的区别:在我们对整个证书链进行验证的时候,即使中途有问题,我们也会验证到最后,而真实的验证一旦有一个环节出问题,那么整个验证过程就告吹。验证操作包括几个独立的步骤。首先建立证书链,从我们目前的证书为基础,一直上溯到RootCA的证书.如果中间有任何问题,比如找不到某个证书的颁发者的证书,那么这个步骤就挂。有任何一个证书是字签名的,就被认为是RootCA的证书。寻找一个证书的颁发CA也包过几个步骤。在openssl0.9.5a之前的版本,如果一个证书的颁发者和另一个证书的拥有着相同,就认为后一个证书的拥有者就是前一个证书的签名CA.openssl0.9.6及其以后的版本中,即使上一个条件成立,还要进行更多步骤的检验。包括验证系列号等。到底有哪几个我也没看明白。得到CA的名称之后首先去看看是否是不信任的CA,如果不是,那么才去看看是否是信任的CA.尤其是RootCA,更是必须是在信任CA列表里面。现在得到链条上所有CA的名称和证书了,下一步是去检查第一个证书的用途是否和签发时候批准的一样。其他的证书则必须都是作为CA证书而颁发的。证书的用途在x509指令里会详细解释。过了第二步,现在就是检查对RootCA的信任了。可能RootCA也是每个都负责不同领域的证书签发。缺省的认为任何一个RootCA都是对任何用途的证书有签发权。最后一步,检查整条证书链的合法性。比如是否有任何一个证书过期了?签名是否是正确的?是否真的是由该证书的颁发者签名的?任何一步出问题,所有该证书值得怀疑,否则,证书检验通过。如果验证操作有问题了,那么打印出来的结果可能会让人有点模糊。一般如果出问题的话,会有类似这样子的结果打印出来:server.pem:/C=AU/ST=Queensland/O=CryptSoftPtyLtd/CN=TestCA(1024bit)error24at1depthlookup:invalidCAcertificate第一行说明哪个证书出问题,后面是其拥有者的名字,包括几个字段。第二行说明错误号,验证出错在第几层的证书,以及错误描述。下面是错误号及其描述的详细说明,注意,有的错误虽然有定义,但真正使用的时候永远不会出现。用unused标志.0X509_V_OK3验证操作没有问题2X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT找不到该证书的颁发CA的证书。3X509_V_ERR_UNABLE_TO_GET_CRL(unused)找不到和该证书相关的CRL4X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE无法解开证书里的签名。5X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE(unused)无法解开CRLs的签名。6X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY无法得到证书里的公共密钥信息。7X509_V_ERR_CERT_SIGNATURE_FAILURE证书签名无效8X509_V_ERR_CRL_SIGNATURE_FAILURE(unused)证书相关的CRL签名无效9X509_V_ERR_CERT_NOT_YET_VALID证书还没有到有效开始时间10X509_V_ERR_CRL_NOT_YET_VALID(unused)与证书相关的CRL还没有到有效开始时间11X509_V_ERR_CERT_HAS_EXPIRED证书过期12X509_V_ERR_CRL_HAS_EXPIRED(unused)与证书相关的CRL过期13X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD证书的notBefore字段格式不对,就是说那个时间是非法格式。14X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD证书的notAfter字段格式不对,就是说那个时间是非法格式。15X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD(unused)CRL的lastUpdate字段格式不对。16X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD(unused)CRL的nextUpdate字段格式不对17X509_V_ERR_OUT_OF_MEM操作时候内存不够。这和证书本身没有关系。18X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT需要验证的第一个证书就是字签名证书,而且不在信任CA证书列表中。19X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN可以建立证书链,但在本地找不到他们的根??:selfsignedcertificateincertificatechainthecertificatechaincouldbebuiltupusingtheuntrustedcertificatesbuttherootcouldnotbefoundlocally.20X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY4有一个证书的签发CA的证书找不到。这说明可能是你的RootCA的证书列表不齐全。21X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE证书链只有一个item,但又不是字签名的证书。22X509_V_ERR_CERT_CHAIN_TOO_LONG(unused)证书链太长。23X509_V_ERR_CERT_REVOKED(unused)证书已经被CA宣布收回。24X509_V_ERR_INVALID_CA某CA的证书无效。25X509_V_ERR_PATH_LENGTH_EXCEEDED参数basicConstraintspathlentgh超过规定长度26X509_V_ERR_INVALID_PURPOSE提供的证书不能用于请求的用途。比如链条中某个证书应该是用来做CA证书的,但证书里面的该字段说明该证书不是用做CA证书的,就是这样子的情况。27X509_V_ERR_CERT_UNTRUSTEDRootCA的证书如果用在请求的用途是不被信任的。28X509_V_ERR_CERT_REJECTEDCA的证书根本不可以用做请求的用途。29X509_V_ERR_SUBJECT_ISSUER_MISMATCH证书颁发者名称和其CA拥有者名称不相同。-issuer_checks被set的时候可以检验出来。30X509_V_ERR_AKID_SKID_MISMATCH证书的密钥标志和其颁发CA为其指定的密钥标志不同.31X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH证书系列号与起颁发CA为其指定的系列号不同。32X509_V_ERR_KEYUSAGE_NO_CERTSIGN某CA的证书用途不包括为其他证书签名。50X509_V_ERR_APPLICATION_VERIFICATION应用程序验证出错。5openssl-指令asn1parse用法:opensslasn1parse[-informPEM|DER][-infilename][-outfilename][-noout][-offsetnumber][-lengthnumber][-i][-structurefilename][-strparseoffset]用途:一个诊断工具,可以对ASN1结构的东东进行分析。ASN1是什么?一个用来描述对象的标准。要解释的话,文章可以比解释openssl结构的文章更长。有兴趣的话自己去网络上找来看吧。-informDER|PEM|TXT输入的格式,DER是二进制格式,PEM是base64编码格式,TXT不用解释了吧-infilename输入文件的名称,缺省为标准输入。-outfilename输入文件的名称,输入一般都是DER数据。如果没这个项,就没有东西输入咯。该项一般都要和-strparse一起使用。-noout不打印参数编码的版本信息。-offsetnumber从文件的那里开始分析,看到offset就应该知道是什么意思了吧。-lengthnumber一共分析输入文件的长度的多少,缺省是一直分析到文件结束。-i根据输出的数据自动缩进。-structurefilename当你输入的文件包含有附加的对象标志符的时候,使用这个。这种文件的格式在后面会介绍。-strparseoffset从由offset指定的偏移量开始分析ASN1对象。当你碰到一个嵌套的对象时,可以反复使用这个项来一直进到里面的结构捏出你需要的东东。一般分析完之后输入的东东如下:opensslasn1parse-outtemp.ans-i-informpemserver.crt0:d=0hl=4l=881cons:SEQUENCE4:d=1hl=4l=730cons:SEQUENCE.......6172:d=3hl=2l=13prim:UTCTIME:000830074155Z187:d=3hl=2l=13prim:UTCTIME:010830074155Z202:d=2hl=3l=136cons:SEQUENCE205:d=3hl=2l=11cons:SET......359:d=3hl=3l=141prim:BITSTRING......本例是一个自签名的证书。每一行的开始是对象在文件里的偏移量。d=xx是结构嵌套的深度。知道ASN1结构的人应该知道,每一个SET或者SEQUENCE都会让嵌套深度增加1.hl=xx表示当前类型的header的长度。1=xx表示内容的八进制的长度。-i可以让输出的东西容易懂一点。如果没有ASN.1的知识,可以省略看这一章。本例中359行就是证书里的公共密钥。可以用-strparse来看看opensslasn1parse-outtemp.ans-i-informpem-strparse359server.crt0:d=0hl=3l=137cons:SEQUENCE3:d=1hl=3l=129prim:INTEGER:C0D802B4C084B20569C619C0FDF466EEB7980920A408D51DA22C20427AC32488665D931C41E3274912DE2F25

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功