<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    捕風(fēng)之巢

    統(tǒng)計(jì)

    留言簿(3)

    java友情鏈接

    閱讀排行榜

    評論排行榜

    openssl簡介(二十五)--指令x509

    ?

    二十五.???? 指令 x509

    用法:
    ? ?
    ? ? openssl x509 [-inform DER|PEM|NET] [-outform DER|PEM|NET]
    ? ?
    ? ???[-keyform DER|PEM][-CAform DER|PEM] [-CAkeyform DER|PEM]
    ? ?
    ? ???[-in filename][-out filename] [-serial] [-hash] [-subject]
    ? ?
    ? ???[-issuer] [-nameopt option] [-email] [-startdate] [-enddate]
    ? ?
    ? ???[-purpose] [-dates] [-modulus] [-fingerprint] [-alias]
    ? ?
    ? ???[-noout] [-trustout] [-clrtrust] [-clrreject] [-addtrust arg]
    ? ?
    ? ???[-addreject arg] [-setalias arg] [-days arg]
    ? ?
    ? ???[-signkey filename][-x509toreq] [-req] [-CA filename]
    ? ?
    ? ???[-CAkey filename] [-CAcreateserial] [-CAserial filename]
    ? ?
    ? ???[-text] [-C] [-md2|-md5|-sha1|-mdc2] [-clrext]
    ? ?
    ? ???[-extfile filename] [-extensions section]
    ? ?
    ? ?
    ? ?
    說明:
    ? ?
    本指令是一個功能很豐富的證書處理工具。可以用來顯示證書的內(nèi)容,轉(zhuǎn)換其格式,給 CSR 簽名等等。由于功能太多,我們按功能分成幾部分來講。

    ? ?
    輸入,輸出等一些一般性的 option
    ? ? -inform DER|PEM|NET
    ? ?
    指定輸入文件的格式。
    ? ? -outform DER|PEM|NET
    ? ?
    指定輸出文件格式
    ? ? -in filename
    ? ?
    指定輸入文件名
    ? ? -out filename
    ? ?
    指定輸出文件名
    ? ? -md2|-md5|-sha1|-mdc2
    ? ?
    指定使用的哈希算法。缺省的是 MD5 于打印有關(guān)的 option
    ? ? -text
    ? ?
    用文本方式詳細(xì)打印出該證書的所有細(xì)節(jié)。
    ? ? -noout
    ? ?
    不打印出請求的編碼版本信息。
    ? ? -modulus
    ? ?
    打印出公共密鑰的系數(shù)值。沒研究過 RSA 就別用這個了。
    ? ? -serial
    ? ?
    打印出證書的系列號。
    ? ? -hash
    ? ?
    把證書的擁有者名稱的哈希值給打印出來。
    ? ? -subject
    ? ?
    打印出證書擁有者的名字。
    ? ? -issuer
    ? ?
    打印證書頒發(fā)者名字。
    ? ? -nameopt option
    ? ?
    指定用什么格式打印上倆個 option 的輸出。
    ? ?
    后面有詳細(xì)的介紹。
    ? ? -email
    ? ?
    如果有,打印出證書申請者的 email 地址
    ? ? -startdate
    ? ?
    打印證書的起始有效時間
    ? ? -enddate
    ? ?
    打印證書的到期時間
    ? ? -dates
    ? ?
    把上倆個 option 都給打印出來
    ? ? -fingerprint
    ? ?
    打印 DER 格式的證書的 DER 版本信息。
    ? ? -C
    ? ?
    C 代碼風(fēng)格打印結(jié)果。
    ? ?
    與證書信任有關(guān)的 option
    ? ?
    一個可以信任的證書的就是一個普通證書,但有一些附加項(xiàng)指定其可以用于哪些用途和不可以用于哪些用途 , 該證書還應(yīng)該有一個 " 別名 "
    ? ?
    一般來說驗(yàn)證一個證書的合法性的時候,相關(guān)的證書鏈上至少有一個證書必須是一個可以信任的證書。缺省的認(rèn)為如果該證書鏈上的 Root CA 的證書可以信任,那么整條鏈上其他證書都可以用于任何用途。
    ? ?
    以下的幾個 option 只用來驗(yàn)證 Root CA 的證書。 CA 在頒發(fā)證書的時候可以控制該證書的用途,比如頒發(fā)可以用于 SSL client 而不能用于 SSL server 的證書。
    ? ? -trustout
    ? ?
    打印出可以信任的證書。
    ? ? -setalias arg
    ? ?
    設(shè)置證書別名。比如你可以把一個證書叫 "fordesign's certificate", 那么以后就可以使用這個別名來引用這個證書。
    ? ? -alias
    ? ?
    打印證書別名。
    ? ?-clrtrust
    ? ?
    清除證書附加項(xiàng)里所有有關(guān)用途允許的內(nèi)容。
    ? ?-clrreject
    ? ?
    清除證書附加項(xiàng)里所有有關(guān)用途禁止的內(nèi)容。
    ? ?-addtrust arg
    ? ?
    添加證書附加項(xiàng)里所有有關(guān)用途允許的內(nèi)容。
    ? ?-addreject arg
    ? ?
    添加證書附加項(xiàng)里所有有關(guān)用途禁止的內(nèi)容。
    ? ?-purpose
    ? ?
    打印出證書附加項(xiàng)里所有有關(guān)用途允許和用途禁止的內(nèi)容。
    ? ?
    與簽名有關(guān)的 otpion
    ? ?
    本指令可以用來處理 CSR 和給證書簽名,就象一個 CA
    ? ? -signkey filename
    ? ?
    使用這個 option 同時必須提供私有密鑰文件。這樣把輸入的文件變成字簽名的證書。
    ? ?
    如果輸入的文件是一個證書,那么它的頒發(fā)者會被 set 成其擁有者 . 其他相關(guān)的項(xiàng)也會被改成符合自簽名特征的證書項(xiàng)。
    ? ?
    如果輸入的文件是 CSR, 那么就生成自簽名文件。
    ? ? -clrext
    ? ?
    把證書的擴(kuò)展項(xiàng)刪除。
    ? ? -keyform PEM|DER
    ? ?
    指定使用的私有密鑰文件格式。
    ? ? -days arg
    ? ?
    指定證書的有效時間長短。缺省為 30 天。
    ? ? -x509toreq
    ? ?
    把一個證書轉(zhuǎn)化成 CSR. -signkey 指定私有密鑰文件
    ? ? -req
    ? ?
    缺省的認(rèn)為輸入文件是證書文件, set 了這個 option 說明輸入文件是 CSR.
    ? ? -CA filename
    ? ?
    指定簽名用的 CA 的證書文件名。
    ? ? -CAkey filename
    ? ?
    指定 CA 私有密鑰文件。如果這個 option 沒有參數(shù)輸入,那么缺省認(rèn)為私有密鑰在 CA 證書文件里有。
    ? ? -CAserial filename
    ? ?
    指定 CA 的證書系列號文件。證書系列號文件在前面介紹過,這里不重復(fù)了。
    ? ? -CAcreateserial filename
    ? ?
    如果沒有 CA 系列號文件,那么本 option 將生成一個。
    ? ? -extfile filename
    ? ?
    指定包含證書擴(kuò)展項(xiàng)的文件名。如果沒有,那么生成的證書將沒有任何擴(kuò)展項(xiàng)。
    ? ? -extensions section
    ? ?
    指定文件中包含要增加的擴(kuò)展項(xiàng)的 section
    ? ?
    上面?zhèn)z個 option 有點(diǎn)難明白是吧?后面有舉例。
    ? ?
    與名字有關(guān)的 option. 這些 option 決定證書擁有者 / 頒發(fā)者的打印方式。缺省方式是印在一行中。
    ? ?
    這里有必要解釋一下這個證書擁有者 / 頒發(fā)者是什么回事。它不是我們常識里的一個名字,而是一個結(jié)構(gòu),包含很多字段。
    ? ?
    英文分別叫 subject name/issuer name. 下面是一個 subject name 的例子
    ? ? subject=
    ? ? countryName = AU
    ? ? stateOrProvinceName = Some-State
    ? ? localityName = gz
    ? ? organizationName = ai ltd
    ? ? organizationalUnitName = sw
    ? ? commonName = fordesign
    ? ? emailAddress = xxx@xxx.xom


    -nameopt
    ? ?
    這個 option 后面的參數(shù)就是決定打印的方式,其參數(shù)有以下可選:
    ? ? compat
    ? ?
    使用以前版本的格式,等于沒有設(shè)置任何以下 option
    ? ? RFC2253
    ? ?
    使用 RFC2253 規(guī)定的格式。
    ? ? oneline
    ? ?
    所有名字打印在一行里面。
    ? ?multiline
    ? ?
    名字里的各個字段用多行打印出來。
    ? ?
    上面那幾個是最常用的了,下面的這些我怎么用怎么不對,也許以后研究 source 在完善這里了。
    ? ? esc_2253 esc_ctrl esc_msb use_quote utf8 no_type show_type dump_der
    ? ? dump_nostr dump_all dump_unknown sep_comma_plus sep_comma_plus_space
    ? ? sep_semi_plus_space sep_multiline dn_rev nofname, sname, lname, oid spc_eq
    ? ?
    舉例時間:
    ? ?
    打印出證書的內(nèi)容:
    ? ? openssl x509 -in cert.pem -noout -text
    ? ?
    打印出證書的系列號
    ? ? openssl x509 -in cert.pem -noout -serial
    ? ?
    打印出證書的擁有者名字
    ? ? openssl x509 -in cert.pem -noout -subject
    ? ?
    RFC2253 規(guī)定的格式打印出證書的擁有者名字
    ? ? openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
    ? ?
    在支持 UTF8 的終端一行過打印出證書的擁有者名字
    ? ? openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
    ? ?
    打印出證書的 MD5 特征參數(shù)
    ? ? openssl x509 -in cert.pem -noout -fingerprint
    ? ?
    打印出證書的 SHA 特征參數(shù)
    ? ? openssl x509 -sha1 -in cert.pem -noout -fingerprint
    ? ?
    PEM 格式的證書轉(zhuǎn)化成 DER 格式
    ? ? openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
    ? ?
    把一個證書轉(zhuǎn)化成 CSR
    ? ? openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
    ? ?
    給一個 CSR 進(jìn)行處理,頒發(fā)字簽名證書,增加 CA 擴(kuò)展項(xiàng)
    ? ? openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
    ? ?
    給一個 CSR 簽名,增加用戶證書擴(kuò)展項(xiàng)
    ? ? openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial
    ? ?
    把某證書轉(zhuǎn)化成用于 SSL client 可信任證書 , 增加別名 alias
    ? ? openssl x509 -in cert.pem -addtrust sslclient -alias "Steve's Class 1 CA" -out trust.pem
    ? ?
    上面有很多地方涉及到證書擴(kuò)展 / 證書用途,這里解釋一下:
    ? ?
    我們知道一個證書是包含很多內(nèi)容的,除了基本的那幾個之外,還有很多擴(kuò)展的項(xiàng)。比如證書用途,其實(shí)也只是證書擴(kuò)展項(xiàng)中的一個。
    ? ?
    我們來看看一個 CA 證書的內(nèi)容:
    ? ? openssl x509 -in ca.crt -noout -text
    ? ? Certificate:
    ? ? Data:
    ? ? Version: 3 (0x2)
    ? ? Serial Number: 0 (0x0)
    ? ? Signature Algorithm: md5WithRSAEncryption
    ? ? Issuer: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd,
    ? ? CN=fordesign/Email=fordeisgn@21cn.com
    ? ? Validity
    ? ? Not Before: Nov 9 04:02:07 2000 GMT
    ? ? Not After : Nov 9 04:02:07 2001 GMT
    ? ? Subject: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd,
    ? ? CN=fordesign/Email=fordeisgn@21cn.com
    ? ? Subject Public Key Info:
    ? ? Public Key Algorithm: rsaEncryption
    ? ? RSA Public Key: (1024 bit)
    ? ? Modulus (1024 bit):
    ? ? 00:e7:62:1b:fb:78:33:d7:fa:c4:83:fb:2c:65:c1:
    ? ? 08:03:1f:3b:79:b9:66:bb:31:aa:77:d4:47:ac:be:
    ? ? e5:20:ce:ed:1f:b2:b5:4c:79:c9:9b:ad:1d:0b:7f:
    ? ? 84:49:03:6b:79:1a:fd:05:ca:36:b3:90:b8:5c:c0:
    ? ? 26:93:c0:02:eb:78:d6:8b:e1:91:df:85:39:33:fc:
    ? ? 3d:59:e9:7f:58:34:bf:be:ef:bd:22:a5:be:26:c0:
    ? ? 16:9b:41:36:45:05:fe:f9:b2:05:42:04:c9:3b:28:
    ? ? c1:0a:48:f4:c7:d6:a8:8c:f9:2c:c1:1e:f5:8b:dc:
    ? ? 19:59:7c:47:f7:91:cc:5d:75
    ? ? Exponent: 65537 (0x10001)
    ? ? X509v3 extensions:
    ? ? X509v3 Subject Key Identifier:
    ? ? 69:41:87:55:BD:52:990:F5:EC:11:7F:0A:01:53:58:4E:0B:7C:F7
    ? ? X509v3 Authority Key Identifier:
    ? ? keyid:69:41:87:55:BD:52:990:F5:EC:11:7F:0A:01:53:58:
    ? ? 4E:0B:7C:F7
    ? ? DirName:/C=AU/ST=Some-State/O=Internet Widgits Pty
    ? ? Ltd/CN=fordesign/Email=fordeisgn@21cn.com
    ? ? serial:00
    ? ? X509v3 Basic Constraints:
    ? ? CA:TRUE
    ? ? Signature Algorithm: md5WithRSAEncryption
    ? ? 79:14:99:4a:8f:64:63:ab:fb:ad:fe:bc:ba:df:53:97:c6:92:
    ? ? 41:4d:de:fc:59:98:39:36:36:8e:c6:05:8d:0a:bc:49:d6:20:
    ? ? 02:9d:a2:5f:0f:03:12:1b:f2:af:23:90:7f:b1:6a:86:e8:3e:
    ? ? 0b:2c:fd:11:89:86:c3:21:3c:25:e2:9c:de:64:7a:14:82:32:
    ? ? 22:e1:35:be:39:90:f5:41:60:1a:77:2e:9f:d9:50:f4:81:a4:
    ? ? 67:b5:3e:12:e5:06:da:1f:d9:e3:93:2d:fe:a1:2f:a9:f3:25:
    ? ? 05:03:00:24:00:f1:5d:1f:d7:77:8b:c8:db:62:82:32:66:fd:
    ? ? 10:fa
    ? ?
    是否看到我們先提到過的 subject name/issuer name. 本證書中這倆個字段是一樣的,明顯是自簽名證書,是一個 Root CA 的證書。從 X509v3 extension 開始就是證書擴(kuò)展項(xiàng)了。
    ? ?
    這里有個 X509v3 Basic constraints. 里面的 CA 字段決定該證書是否可以做 CA 的證書,這里是 TURE 。如果這個字段沒有,那么會根據(jù)其他內(nèi)容決定該證書是否可以做 CA 證書。
    ? ?
    如果是 X509v1 證書,又沒有這個擴(kuò)展項(xiàng),那么只要 subject name issuer name 相同,就認(rèn)為是 Root CA 證書了。
    ? ?
    本例的證書沒有證書用途擴(kuò)展項(xiàng),它是一個叫 keyUseage 的字段。
    ? ?
    舉個例子就可以看出該字段目前可以有以下值
    ? ? openssl x509 -purpose -in server.crt
    ? ? Certificate purposes:
    ? ? SSL client : Yes
    ? ? SSL client CA : No
    ? ? SSL server : Yes
    ? ? SSL server CA : No
    ? ? Netscape SSL server : Yes
    ? ? Netscape SSL server CA : No
    ? ? S/MIME signing : Yes
    ? ???S/MIME signing CA : No
    ? ? S/MIME encryption : Yes
    ? ???S/MIME encryption CA : No
    ? ???CRL signing : Yes
    ? ? CRL signing CA : No
    ? ? Any Purpose : Yes
    ? ? Any Purpose CA : Yes
    ? ? SSL Client
    ? ? SSL Client CA
    ? ?
    ? ?
    每個值的具體意義應(yīng)該可以看名字就知道了吧?
    ? ? X509
    指令在轉(zhuǎn)化證書成 CSR 的時候沒有辦法把證書里的擴(kuò)展項(xiàng)轉(zhuǎn)化過去給 CSR 簽名做證書的時候,如果使用了多個 option, 應(yīng)該自己保證這些 option 沒有沖突。

    posted on 2006-10-17 15:51 捕風(fēng) 閱讀(977) 評論(0)  編輯  收藏 所屬分類: java安全

    主站蜘蛛池模板: 亚洲色精品三区二区一区| 亚洲成综合人影院在院播放| 高潮内射免费看片| 免费激情网站国产高清第一页 | 亚洲综合色丁香麻豆| 亚洲人成网男女大片在线播放| 亚洲av中文无码字幕色不卡| 一级毛片人与动免费观看| 亚洲国产成人精品激情| 日本亚洲高清乱码中文在线观看| 一级一片免费视频播放| 久久精品一本到99热免费| 色视频色露露永久免费观看| 亚洲人成在线免费观看| 国产成人免费高清在线观看| 国产亚洲精品AA片在线观看不加载 | 亚洲欧洲自拍拍偷午夜色无码| 亚洲精品**中文毛片| 国产精品亚洲AV三区| 成人电影在线免费观看| 丁香花在线观看免费观看| 国产成人精品曰本亚洲79ren| 久久精品国产精品亚洲毛片| 国产亚洲一卡2卡3卡4卡新区| 精品国产麻豆免费人成网站| 成人免费一区二区三区| 全免费毛片在线播放| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲精品成人区在线观看| 亚洲AV无码之日韩精品| 亚洲欧洲国产精品你懂的| 亚洲aⅴ无码专区在线观看春色| 99久久成人国产精品免费| 成年人免费观看视频网站| 亚洲无线观看国产精品| 亚洲视频无码高清在线| 天黑黑影院在线观看视频高清免费 | 午夜视频在线观看免费完整版| 久久乐国产精品亚洲综合| 亚洲中文久久精品无码1| 国产精品免费在线播放|