零全零美(www.zzgwt.com)
          生活中的很多事情,并不像If...Else那么簡單!
          posts - 96,comments - 52,trackbacks - 0
          用法:

          openssl verify 【-CApath directory】 【-CAfile file】 【-purpose purpose】【-untrusted file】 【-help】 【-issuer_checks】 【-verbose】 【-】 【certificates】

          說明:

          證書驗證工具。

          選項
          -CApath directory
          我們信任的CA的證書存放目錄。這些證書的名稱應(yīng)該是這樣的格式:
          xxxxxxxx.0( xxxxxxxx代表證書的哈希值。 參看x509指令的-hash)
          你也可以在目錄里touch一些這樣格式文件名的文件,符號連接到真正的證書。
          那么這個xxxxxxxx我怎么知道怎么得到?x509指令有說明。
          其實這樣子就可以了:
          openssl x509 -hash -in server.crt

          -CAfile file
          我們信任的CA的證書,里面可以有多個CA的證書。

          -untrusted file
          我們不信任的CA的證書。

          -purpose purpose
          證書的用途。如果這個option沒有設(shè)置,那么不會對證書的CA鏈進(jìn)行驗證。

          現(xiàn)在這個option的參數(shù)有以下幾個:
          sslclinet
          sslserver
          nssslserver
          smimesign
          smimeencrypt
          等下會詳細(xì)解釋的。

          -help
          打印幫助信息。

          -verbose

          打印出詳細(xì)的操作信息。

          -issuer_checks
          打印出我們驗證的證書的簽發(fā)CA的證書的之間的聯(lián)系。
          要一次驗證多個證書,把那些證書名都寫在后面就好了。

          驗證操作解釋:
          S/MIME和本指令使用完全相同的函數(shù)進(jìn)行驗證。
          我們進(jìn)行的驗證和真正的驗證有個根本的區(qū)別:
          在我們對整個證書鏈進(jìn)行驗證的時候,即使中途有問題,我們也會驗證到最后,而真實的驗證一旦有一個環(huán)節(jié)出問題,那么整個驗證過程就告吹。
          驗證操作包括幾個獨立的步驟。
          首先建立證書鏈,從我們目前的證書為基礎(chǔ),一直上溯到Root CA的證書.
          如果中間有任何問題,比如找不到某個證書的頒發(fā)者的證書,那么這個步驟就掛。有任何一個證書是字簽名的,就被認(rèn)為是Root CA的證書。
          尋找一個證書的頒發(fā)CA也包過幾個步驟。在openssl0.9.5a之前的版本,如果一個證書的頒發(fā)者和另一個證書的擁有著相同,就認(rèn)為后一個證書的擁有者就是前一個證書的簽名CA.
          openssl0.9.6及其以后的版本中,即使上一個條件成立,還要進(jìn)行更多步驟的檢驗。包括驗證系列號等。到底有哪幾個我也沒看明白。
          得到CA的名稱之后首先去看看是否是不信任的CA, 如果不是,那么才去看看是否是信任的CA. 尤其是Root CA, 更是必須是在信任CA列表里面。
          現(xiàn)在得到鏈條上所有CA的名稱和證書了,下一步是去檢查第一個證書的用途是否和簽發(fā)時候批準(zhǔn)的一樣。其他的證書則必須都是作為CA證書而頒發(fā)的。
          證書的用途在x509指令里會詳細(xì)解釋。
          過了第二步,現(xiàn)在就是檢查對Root CA的信任了。可能Root CA也是每個都負(fù)責(zé)不同領(lǐng)域的證書簽發(fā)。缺省的認(rèn)為任何一個Root CA都是對任何用途的證書有簽發(fā)權(quán)。
          最后一步,檢查整條證書鏈的合法性。比如是否有任何一個證書過期了?簽名是否是正確的?是否真的是由該證書的頒發(fā)者簽名的?
          任何一步出問題,所有該證書值得懷疑,否則,證書檢驗通過。

          如果驗證操作有問題了,那么打印出來的結(jié)果可能會讓人有點模糊。
          一般如果出問題的話,會有類似這樣子的結(jié)果打印出來:
          server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
          error 24 at 1 depth lookup:invalid CA certificate
          第一行說明哪個證書出問題,后面是其擁有者的名字,包括幾個字段。
          第二行說明錯誤號,驗證出錯在第幾層的證書,以及錯誤描述。
          下面是錯誤號及其描述的詳細(xì)說明,注意,有的錯誤雖然有定義,
          但真正使用的時候永遠(yuǎn)不會出現(xiàn)。用unused標(biāo)志.
          0 X509_V_OK
          驗證操作沒有問題
          2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT
          找不到該證書的頒發(fā)CA的證書。
          3 X509_V_ERR_UNABLE_TO_GET_CRL (unused)
          找不到和該證書相關(guān)的CRL
          4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE
          無法解開證書里的簽名。
          5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE (unused)
          無法解開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 (unused)
          證書相關(guān)的CRL簽名無效
          9 X509_V_ERR_CERT_NOT_YET_VALID
          證書還沒有到有效開始時間
          10 X509_V_ERR_CRL_NOT_YET_VALID (unused)
          與證書相關(guān)的CRL還沒有到有效開始時間
          11 X509_V_ERR_CERT_HAS_EXPIRED
          證書過期
          12 X509_V_ERR_CRL_HAS_EXPIRED (unused)
          與證書相關(guān)的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 (unused)
          CRL的lastUpdate字段格式不對。
          16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD (unused)
          CRL的nextUpdate字段格式不對
          17 X509_V_ERR_OUT_OF_MEM
          操作時候內(nèi)存不夠。這和證書本身沒有關(guān)系。
          18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
          需要驗證的第一個證書就是字簽名證書,而且不在信任CA證書列表中。
          19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
          可以建立證書鏈,但在本地找不到他們的根??

          : self 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
          有一個證書的簽發(fā)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)
          證書已經(jīng)被CA宣布收回。
          24 X509_V_ERR_INVALID_CA
          某CA的證書無效。
          25 X509_V_ERR_PATH_LENGTH_EXCEEDED
          參數(shù)basicConstraints pathlentgh超過規(guī)定長度
          26 X509_V_ERR_INVALID_PURPOSE
          提供的證書不能用于請求的用途。
          比如鏈條中某個證書應(yīng)該是用來做CA證書的,但證書里面的該字段說明該證書不是用做CA證書的,就是這樣子的情況。
          27 X509_V_ERR_CERT_UNTRUSTED
          Root CA的證書如果用在請求的用途是不被信任的。
          28 X509_V_ERR_CERT_REJECTED
          CA的證書根本不可以用做請求的用途。
          29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH
          證書頒發(fā)者名稱和其CA擁有者名稱不相同。-issuer_checks被set的時候可以檢驗出來。
          30 X509_V_ERR_AKID_SKID_MISMATCH
          證書的密鑰標(biāo)志和其頒發(fā)CA為其指定的密鑰標(biāo)志不同.
          31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH
          證書系列號與起頒發(fā)CA為其指定的系列號不同。
          32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN
          某CA的證書用途不包括為其他證書簽名。
          50 X509_V_ERR_APPLICATION_VERIFICATION
          應(yīng)用程序驗證出錯。
          posted on 2009-11-27 17:33 零全零美 閱讀(682) 評論(0)  編輯  收藏 所屬分類: 安全相關(guān)
          主站蜘蛛池模板: 咸阳市| 宁城县| 青铜峡市| 新建县| 丰城市| 子长县| 阳城县| 孟州市| 林周县| 博湖县| 象山县| 周宁县| 吉水县| 新巴尔虎右旗| 临沂市| 如皋市| 岢岚县| 尉犁县| 麻江县| 靖西县| 龙南县| 台安县| 绥棱县| 平遥县| 津市市| 阿合奇县| 班戈县| 乐清市| 东安县| 永定县| 定日县| 公主岭市| 安顺市| 镇沅| 姜堰市| 义马市| 石泉县| 乌恰县| 丹东市| 抚顺县| 任丘市|