OpenSSL 中文手册(5)

2019-07-30 13:46

the certificate chain could be built up using the untrusted certificates

but the root could not be found locally.

20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY

有一个证书的签发CA的证书找不到。这说明可能是你的Root CA的证书列表不齐全。 21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 证书链只有一个item, 但又不是字签名的证书。

22 X509_V_ERR_CERT_CHAIN_TOO_LONG (unused) 证书链太长。

23 X509_V_ERR_CERT_REVOKED (unused) 证书已经被CA宣布收回。

24 X509_V_ERR_INVALID_CA 某CA的证书无效。

25 X509_V_ERR_PATH_LENGTH_EXCEEDED 参数basicConstraints pathlentgh超过规定长度 26 X509_V_ERR_INVALID_PURPOSE 提供的证书不能用于请求的用途。

比如链条中某个证书应该是用来做CA证书的,但证书里面的该字段说明该证书不是用做CA证书的,就是这样子的情况。

27 X509_V_ERR_CERT_UNTRUSTED

Root CA的证书如果用在请求的用途是不被信任的。 28 X509_V_ERR_CERT_REJECTED

CA的证书根本不可以用做请求的用途。

29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH 证书颁发者名称和其CA拥有者名称不相同。-issuer_checks被set的时候可以检验出来。 30 X509_V_ERR_AKID_SKID_MISMATCH

证书的密钥标志和其颁发CA为其指定的密钥标志不同. 31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 证书系列号与起颁发CA为其指定的系列号不同。 32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN 某CA的证书用途不包括为其他证书签名。 50 X509_V_ERR_APPLICATION_VERIFICATION 应用程序验证出错。

--------------------------------------------------------------------------------

openssl简介-指令asn1parse

用法:openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename]

[-noout] [-offset number] [-length number] [-i] [- structure filename]

[-strparse offset]

用途:一个诊断工具,可以对ASN1结构的东东进行分析。[/b:710d397eff]

ASN1是什么?一个用来描述对象的标准。要解释的话,文章可以比解释openssl结构的文章更长。有兴趣的话自己去网络上找来看吧。

-inform DER|PEM|TXT

输入的格式,DER是二进制格式,PEM是base64编码格式,TXT不用解释了吧

-in filename

输入文件的名称,缺省为标准输入。

-out filename

输入文件的名称,输入一般都是DER数据。如果没这个项,就没有东西输入咯。该项一般都要和-strparse一起使用。

-noout

不要输出任何东西(不明白有什么用)

-offset number

从文件的那里开始分析,看到offset就应该知道是什么意思了吧。

-length number

一共分析输入文件的长度的多少,缺省是一直分析到文件结束。 -i

根据输出的数据自动缩进。

- structure filename

当你输入的文件包含有附加的对象标志符的时候,使用这个。 这种文件的格式在后面会介绍。

-strparse offset

从由offset指定的偏移量开始分析ASN1对象。当你碰到一个嵌套的对象时,可以反复使用这个项来一直进到里面的结构捏出你需要的东东。 一般分析完之后输入的东东如下:

openssl asn1parse -out temp.ans -i -inform pem < server.crt

0:d=0 hl=4 l= 881 cons: SEQUENCE

4:d=1 hl=4 l= 730 cons: SEQUENCE

... ....

172:d=3 hl=2 l= 13 prim: UTCTIME :000830074155Z

187:d=3 hl=2 l= 13 prim: UTCTIME :010830074155Z

202:d=2 hl=3 l= 136 cons: SEQUENCE

205:d=3 hl=2 l= 11 cons: SET ... ...

359:d=3 hl=3 l= 141 prim: BIT STRING

... ...

本例是一个自签名的证书。每一行的开始是对象在文件里的偏移量。d=xx是结构嵌套的深度。知道ASN1结构的人应该知道,每一个SET或者SEQUENCE都会让嵌套深度增加1.

hl=xx表示当前类型的header的长度。1=xx表示内容的八进制的长度。 -i可以让输出的东西容易懂一点。

如果没有ASN.1的知识,可以省略看这一章。

本例中359行就是证书里的公共密钥。可以用-strparse来看看 openssl asn1parse -out temp.ans -i -inform pem -strparse 359 < server.crt

0:d=0 hl=3 l= 137 cons: SEQUENCE

3:d=1 hl=3 l= 129 prim: INTEGER :C0D802B4C084B20569C619C0FDF

466EEB7980920A408D51DA22C20427AC32488665D931C41E3274912DE2F25C8CA9C97B75

415C01794B622DBEADD92DA068C140C3AD387BF5FDC9A8D2FCEE7F7F3E36B0194994FD67

07897C8969F16F6ECB3F03BF985E910817160FE5DCBF874B1C0DBD06A568E130DA7C9FE3

9FE7A7F421369

135:d=1 hl=2 l= 3 prim: INTEGER :010001

不要试图去看temp.ans的内容,是二进制来的,看不懂的。

--------------------------------------------------------------------------------

openssl简介-指令ca

用途:

模拟CA行为的工具.有了它,你就是一个CA,不过估计是nobody trusted CA.可以用来给各种格式的CSR签名,用来产生和维护CRL(不记得CRL是什么了?去看证书那一章).他还维护着一个文本数据库,记录了所有经手颁发的证书及那些证书的状态。 用法:

openssl ca [-verbose] [-config filename] [-name section] [-gencrl]

[-revoke file] [-crldays days] [-crlhours hours] [-crlexts section]

[-startdate date] [-enddate 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] [/b:f3a6bcf2f5] 哇噻,好复杂也。不过用过GCC的人应该觉得这么点flag还是小case.

-config filename

指定使用的configure文件。

-in filename

要签名的CSR文件。

-ss_cert filename

一个有自签名的证书,需要我们CA签名,就从这里输入文件名。

-spkac filename

这一段实在没有看懂,也没兴趣,估计和SPKAC打交道可能性不大,奉送上英文原文。 a file containing a single Netscape signed public key and challenge and additional field values to be signed by the CA. SPKAC FORMAT

The input to the -spkac command line option is a Netscape signed public key and challenge. This will usually come from the KEYGEN tag in an HTML form to create a new private key. It is however possible to create SPKACs using the spkac utility.

The file should contain the variable SPKAC set to the value of the SPKAC and also the required DN components as name value pairs. If you need to include the same component twice then it can be preceded by a number and a . -infiles

如果你一次要给几个CSR签名,就用这个来输入,但记得这个选项一定要放在最后。

这个项后面的所有东东都被认为是CSR文件名参数。 -out filename

签名后的证书文件名。证书的细节也会给写进去。

-outdir directory

摆证书文件的目录。证书名就是该证书的系列号,后缀是.pem -cert

CA本身的证书文件名 -keyfile filename

CA自己的私有密钥文件

-key password

CA的私有密钥文件的保护密码。

在有的系统上,可以用ps看到你输入的指令,所以这个参数要小心点用。

-passin arg

也是一个输入私有密钥保护文件的保护密码的一种方式,可以是文件名,设备名或者是有名管道。程序会把该文件的第一行作为密码读入。(也蛮危险的)。 -verbose

操作过程被详细printf出来

-notext

不要把证书文件的明文内容输出到文件中去。

-startdate date

指明证书的有效开始日期。格式是YYMMDDHHMMSSZ, 同ASN1的UTCTime结构相同。

-enddate date

指明证书的有效截止日期,格式同上。 -days arg

指明给证书的有效时间,比如365天。 -md alg

签名用的哈希算法,比如MD2, MD5等。

-policy arg

指定CA使用的策略。其实很简单,就是决定在你填写信息生成CSR的时候,哪些信息是我们必须的,哪些不是。看看config文件里面的policy这个item就明白了。

-msie_hack

为了和及其古老的证书版本兼容而做出的牺牲品,估计没人会用的,不解释了。 -preserveDN

和-msie_hack差不多的一个选项。

-batch

设置为批处理的模式,所有的CSR会被自动处理。

-extensions section

我们知道一般我们都用X509格式的证书,X509也有几个版本的。如果你在这个选项后面带的那个参数在config文件里有同样名称的key,那么就颁发X509V3证书,否则颁发X509v1证书。

还有几个关于CRL的选项,但我想一般很少人会去用。我自己也没兴趣去研究。 有兴趣的自己看看英文吧。


OpenSSL 中文手册(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《铁路客运组织》复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: