openssl命令中文版

更新时间:2023-07-17 01:29:41 阅读: 评论:0

openssl-指令 verify
用法:
   
    openssl verify -CApath directory -CAfile file -purpo purpo】【-untrusted file -help -issuer_checks -verbo  - certificates
   
     说明:
   
    证书验证工具。
     
    选项
     -CApath directory
    我们信任的CA的证书存放目录。这些证书的名称应该是这样的格式:
    xxxxxxxx.0( xxxxxxxx代表证书的哈希值。 参看x509指令的-hash)
    你也可以在目录里touch一些这样格式文件名的文件,符号连接到真正的证书。
    那么这个xxxxxxxx我怎么知道怎么得到?x509指令有说明。
    其实这样子就可以了:
    openssl x509 -hash -
   
    -CAfile file
    我们信任的CA的证书,里面可以有多个CA的证书。
   
    -untrusted file
    我们不信任的CA的证书。
what are words什么意思   
    -purpo purpo
    证书的用途。如果这个option没有设置,那么不会对证书的CA链进行验证。
   
    现在这个option的参数有以下几个:
    sslclinet
    sslrver
    nssslrver
    smimesign
    smimeencrypt
    等下会详细解释的。
   
    -help
    打印帮助信息。
   
-verbo
   
    打印出详细的操作信息。
   
-issuer_checks
    打印出我们验证的证书的签发CA的证书的之间的联系。
    要一次验证多个证书,把那些证书名都写在后面就好了。
       
    验证操作解释:
    S/MIME和本指令使用完全相同的函数进行验证。
    我们进行的验证和真正的验证有个根本的区别:
    在我们对整个证书链进行验证的时候,即使中途有问题,我们也会验证到最后,而真实的验证一旦有一个环节出问题,那么整个验证过程就告吹。
    验证操作包括几个独立的步骤。
    首先建立证书链,从我们目前的证书为基础,一直上溯到Root CA的证书.
    如果中间有任何问题,比如找不到某个证书的颁发者的证书,那么这个步骤就挂。有任何一个证书是字签名的,就被认为是Root CA的证书。
    寻找一个证书的颁发CA也包过几个步骤。在openssl0.9.5a之前的版本,如果一个证书的颁发者和另一个证书的拥有着相同,就认为后一个证书的拥有者就是前一个证书的签名CA.
    openssl0.9.6及其以后的版本中,即使上一个条件成立,还要进行更多步骤的检验。包括验证系列号等。到底有哪几个我也没看明白。
    得到CA的名称之后首先去看看是否是不信任的CA, 如果不是,那么才去看看是否是信任的CA. 尤其是Root CA, 更是必须是在信任CA列表里面。
    现在得到链条上所有CA的名称和证书了,下一步是去检查第一个证书的用途是否和签发时候批准的一样。其他的证书则必须都是作为CA证书而颁发的。
    证书的用途在x509指令里会详细解释。
    过了第二步,现在就是检查对Root CA的信任了。可能Root CA也是每个都负责不同领域的证书签发。缺省的认为任何一个Root CA都是对任何用途的证书有签发权。
    最后一步,检查整条证书链的合法性。比如是否有任何一个证书过期了?签名是否是正确的?是否真的是由该证书的颁发者签名的?
    任何一步出问题,所有该证书值得怀疑,否则,证书检验通过。
   
    如果验证操作有问题了,那么打印出来的结果可能会让人有点模糊。
agreewith    一般如果出问题的话,会有类似这样子的结果打印出来:
    rver.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
    error 24 at 1 depth lookup:invalid CA certificate
    第一行说明哪个证书出问题,后面是其拥有者的名字,包括几个字段。
    第二行说明错误号,验证出错在第几层的证书,以及错误描述。
    下面是错误号及其描述的详细说明,注意,有的错误虽然有定义,
    但真正使用的时候永远不会出现。用unud标志.
    0 X509_V_OK
    验证操作没有问题
    2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT
    找不到该证书的颁发CA的证书。
    3 X509_V_ERR_UNABLE_TO_GET_CRL (unud)
   找不到和该证书相关的CRL
   4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE
   无法解开证书里的签名。
    5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE (unud)
    无法解开CRLs的签名。
    6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
    无法得到证书里的公共密钥信息。
    7 X509_V_ERR_CERT_SIGNATURE_FAILURE
    证书签名无效
    8 X509_V_ERR_CRL_SIGNATURE_FAILURE (unud)
    证书相关的CRL签名无效
    9 X509_V_ERR_CERT_NOT_YET_VALID
    证书还没有到有效开始时间
    10 X509_V_ERR_CRL_NOT_YET_VALID (unud)
    与证书相关的CRL还没有到有效开始时间
    11 X509_V_ERR_CERT_HAS_EXPIRED
    证书过期
    12 X509_V_ERR_CRL_HAS_EXPIRED (unud)
    与证书相关的CRL过期
    13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD
    证书的notBefore字段格式不对,就是说那个时间是非法格式。
    14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD
    证书的notAfter字段格式不对,就是说那个时间是非法格式。
    15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD (unud)
    CRLlastUpdate字段格式不对。
    16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD (unud)
    CRLnextUpdate字段格式不对
    17 X509_V_ERR_OUT_OF_MEM
    操作时候内存不够。这和证书本身没有关系。
    18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
    需要验证的第一个证书就是字签名证书,而且不在信任CA证书列表中。
    19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
    可以建立证书链,但在本地找不到他们的根??
   
    : lf signed certificate in certificate chain
    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 (unud)
    证书链太长。
    23 X509_V_ERR_CERT_REVOKED (unud)
    证书已经被CA宣布收回。
    24 X509_V_ERR_INVALID_CA
    CA的证书无效。
    25 X509_V_ERR_PATH_LENGTH_EXCEEDED
    参数basicConstraints pathlentgh超过规定长度balance
    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_checkst的时候可以检验出来。
    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-指令asn1par

    用法:openssl asn1par [-inform PEM|DER] [-in filename] [-out filename]
   
    [-noout] [-offt number] [-length number] [-i] [- structure filename]
   
    [-strpar offt]
   
用途:一个诊断工具,可以对ASN1结构的东东进行分析。
    ASN1是什么?一个用来描述对象的标准。要解释的话,文章可以比解释openssl结构的文章更长。有兴趣的话自己去网络上找来看吧。
   
-inform DER|PEM|TXT
    输入的格式,DER是二进制格式,PEMba64编码格式,TXT不用解释了吧
   
-in filename
    输入文件的名称,缺省为标准输入。
   
    -out filename
    输入文件的名称,输入一般都是DER数据。如果没这个项,就没有东西输入咯。该项一般都要和-strpar一起使用。
   
    -noout
        不打印参数编码的版本信息。
-offt number
    从文件的那里开始分析,看到offt就应该知道是什么意思了吧。
   
    -length number
    一共分析输入文件的长度的多少,缺省是一直分析到文件结束。
   
    -i
    fake pass根据输出的数据自动缩进。
   
    - structure filename
    当你输入的文件包含有附加的对象标志符的时候,使用这个。
    这种文件的格式在后面会介绍。
   
    -strpar offt
    从由offt指定的偏移量开始分析ASN1对象。当你碰到一个嵌套的对象时,可以反复使用这个项来一直进到里面的结构捏出你需要的东东。
    一般分析完之后输入的东东如下:
    openssl asn1par -out temp.ans -i -inform pem <
   
    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行就是证书里的公共密钥。可以用-strpar来看看
    openssl asn1par -out temp.ans -i -inform pem -strpar 359 <
   
    0:d=0 hl=3 l= 137 cons: SEQUENCE
   
    3:d=1 hl=3 l= 129 prim: INTEGER :C0D802B4C084B20569C619C0FDF
   
    466EEB7980920A408D51DA22C20427AC32488665D931C41E3274912DE2F25C8CA9C97B75
   
    415C01794B622DBEADD92DA068C140C3AD387BF5FDC9A8D2FCEE7F7F3E36B0194994FD67
   
    07897C8969F16F6ECB3F03BF985E910817160FE5DCBF874B1C0DBD06A568E130DA7C9FE3
   
    9FE7A7F421369
   
pesa    135:d=1 hl=2 l= 3 prim: INTEGER :010001
    不要试图去看temp.ans的内容,是二进制来的,看不懂的。
openssl-指令ca()
用途:
    模拟CA行为的工具.有了它,你就是一个CA,不过估计是nobody trusted CA.可以用来给各种格式的CSR签名,用来产生和维护CRL(不记得CRL是什么了?去看证书那一章).他还维护着一个文本数据库,记录了所有经手颁发的证书及那些证书的状态。
    用法:
    openssl ca [-verbo] [-config filename] [-name ction] [-gencrl]
   
    [-revoke file] [-crldays days] [-crlhours hours] [-crlexts ction]
   
    [-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] [-prerveDN] [-batch] [-msie_hack] [-extensions ction]
    哇噻,好复杂也。不过用过GCC的人应该觉得这么点flag还是小ca.
   
-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 t 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 .
whistle谐音歌词
    -infiles
    如果你一次要给几个CSR签名,就用这个来输入,但记得这个选项一定要放在最后。这个项后面的所有东东都被认为是CSR文件名参数。
    -out filename
    签名后的证书文件名。证书的细节也会给写进去。
    -outdir directory
    摆证书文件的目录。证书名就是该证书的系列号,后缀是.pem
    -cert
    CA本身的证书文件名
    -keyfile filename
    CA自己的私有密钥文件
    -key password
    CA的私有密钥文件的保护密码。
    在有的系统上,可以用ps看到你输入的指令,所以这个参数要小心点用。
    -passin arg
    也是一个输入私有密钥保护文件的保护密码的一种方式,可以是文件名,设备名或者是有名管道。程序会把该文件的第一行作为密码读入。(也蛮危险的)。
    -verbo
    操作过程被详细printf出来
    -notext
    不要把证书文件的明文内容输出到文件中去。
    -startdate date
    指明证书的有效开始日期。格式是YYMMDDHHMMSSZ, ASN1UTCTime结构相同。
    -enddate date
    指明证书的有效截止日期,格式同上。
    -days arg
    指明给证书的有效时间,比如365天。
    -md alg
    签名用的哈希算法,比如MD2, MD5等。
    -policy arg
    指定CA使用的策略。其实很简单,就是决定在你填写信息生成CSR的时候,哪些信息是我们必须的,哪些不是。看看config文件里面的policy这个cup是什么意思item就明白了。
    -msie_hack
    为了和及其古老的证书版本兼容而做出的牺牲品,估计没人会用的,不解释了。
    -prerveDN
    -msie_hack差不多的一个选项。
    -batch
    设置为批处理的模式,所有的CSR会被自动处理。
    -extensions ction
    我们知道一般我们都用X509格式的证书,X509也有几个版本的。如果你在这个选项后面带的那个参数在config文件里有同样名称的key,那么就颁发X509V3证书,否则颁发X509v1证书。
    还有几个关于伴鱼少儿英语CRL的选项,但我想一般很少人会去用。我自己也没兴趣去研究。
    有兴趣的自己看看英文吧。
       
    CRL OPTIONS
     -gencrl
        this option generates a CRL bad on information in the index file.
     -crldays num
        the number of days before the next CRL is due. That is the days from
        now to place in the CRL nextUpdate field.
    -crlhours num     
    the number of hours before the next CRL is due.
  -revoke filename     
    a filename containing a certificate to revoke.         
    -crlexts ction     
    the ction of the configuration file containing CRL extensions to     
    include. If no CRL extension ction is prent then a V1 CRL is created,     
    if the CRL extension ction is prent (even if it is empty) then a V2     
    CRL is created. The CRL extensions specified are CRL extensions and not     
    CRL entry extensions. It should be noted that some software (for example     
    Netscape) can't handle V2 CRLs.
   
    相信刚才大家都看到很多选项都和config文件有关,那么我们来解释一下大连樱花日语config文件make install之后,openssl会生成一个全是缺省值的config文件:opensslf.也长的很,贴出来有赚篇幅之嫌,xgh不屑。简单解释一下其中与CA有关的key.
CA有关的key都在ca这个ction之中。
    [ ca ]
    default_ca = CA_default
    [ CA_default ]
    dir = ./demoCA # Where everything is kept
    certs = $dir/certs # Where the issued certs are kept
    crl_dir = $dir/crl # Where the issued crl are kept
    databa = $ # databa index file.
    new_certs_dir = $dir/newcerts # default place for new certs.
    certificate = $dir/cacert.pem # The CA certificate
    rial = $dir/rial # The current rial number
    crl = $dir/crl.pem # The current CRL
    private_key = $dir/private/cakey.pem# The private key
    RANDFILE = $dir/private/.rand # private random number file you can you up
    x509_extensions = usr_cert # The extentions to add to the cert
    # Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
    # so this is commented out by default to leave a V1 CRL.
    # crl_extensions = crl_ext
    default_days = 365 # how long to certify for
    default_crl_days= 30 # how long before next CRL
    default_md = md5 # which md to u.
    prerve = no # keep pasd DN ordering
    # A few difference way of specifying how similar the request should look
    # For type CA, the listed attributes must be the same, and the optional
    # and supplied fields are just that :-)
    policy = policy_match
    # For the CA policy
    [ policy_match ]
    countryName = match
    stateOrProvinceName = match
    organizationName = match
    organizationalUnitName = optional
    commonName = supplied
    emailAddress = optional
    # At this point in time, you must list all acceptable 'object'
    # types.
    [ policy_anything ]
    countryName = optional
    stateOrProvinceName = optional
    localityName = optional
    organizationName = optional
    organizationalUnitName = optional
    commonName = supplied
    emailAddress = optional
    config文件里CA ction里面的很多key都和命令行参数是对应的。
    如果某个key后面标明mandatory,那就说明这个参数是必须提供的,无论你通过命令行还是通过config文件去提供。
   

本文发布于:2023-07-17 01:29:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1100547.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:证书   文件   验证   输入
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图