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

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

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

    捕風之巢

    統計

    留言簿(3)

    java友情鏈接

    閱讀排行榜

    評論排行榜

    openssl簡介(十八)--指令req

    ?

    十八.???? 指令 req

    用法 :
    ? ?
    ? ? openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename]
    ? ?
    ? ? [-passin arg] [-out filename] [-passout arg] [-text] [-noout]
    ? ?
    ? ? [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa]
    ? ?
    ? ? [-newkey dsa] [-nodes] [-key filename] [-keyform PEM|DER]
    ? ?
    ? ? [-keyout filename] [-[md5|sha1|md2|mdc2]] [-config filename]
    ? ?
    ? ? [-x509] [-days n] [-asn1-kludge] [-newhdr] [-extensions section]
    ? ?
    ? ? [-reqexts section]
    ? ?
    ? ???
    描述 :
    ? ?
    本指令用來創建和處理 PKCS#10 格式的證書 . 它還能夠建立自簽名證書 , Root CA.
    ? ?? ?? ?
    ? ? OPTIONS
    ? ? -inform DER|PEM
    ? ?
    指定輸入的格式是 DEM 還是 DER. DER 格式采用 ASN1 DER 標準格式。一般用的多的都是 PEM 格式,就是 base64 編碼格式 . 你去看看你做出來的那些 .key, .crt 文件一般都是 PEM 格式的,第一行和最后一行指明內容,中間就是經過編碼的東西。
    ? ? -outform DER|PEM
    ? ?
    和上一個差不多,不同的是指定輸出格式
    ? ? -in filename
    ? ?
    要處理的 CSR 的文件名稱 , 只有 -new -newkey 倆個 option 沒有被 set, option 才有效
    ? ? -passin arg
    ? ?
    去看看 CA 那一章關于這個 option 的解釋吧。
    ? ???-out filename
    ? ?
    要輸出的文件名
    ? ? -passout arg
    ? ?
    參看 dsa 指令里的 passout 這個 option 的解釋吧 .
    ? ?-text
    ? ?
    CSR 文件里的內容以可讀方式打印出來
    ? ? -noout
    ? ?
    不要打印 CSR 文件的編碼版本信息 .
    ? ? -modulus
    ? ?
    CSR 里面的包含的公共米要的系數打印出來 .
    ? ? -verify
    ? ?
    檢驗請求文件里的簽名信息 .
    ? ? -new
    ? ?
    option 產生一個新的 CSR, 它會要用戶輸入創建 CSR 的一些必須的信息 . 至于需要哪些信息 , 是在 config 文件里面定義好了的 . 如果 -key 沒有被 set, 那么就將根據 config 文件里的信息先產生一對新的 RSA 密鑰
    ? ? -rand file(s)
    ? ?
    產生 key 的時候用過 seed 的文件,可以把多個文件用冒號分開一起做 seed.
    ? ? -newkey arg
    ? ?
    同時生成新的私有密鑰文件和 CSR 文件 . option 是帶參數的 . 如果是產生 RSA 的私有密鑰文件 , 參數是一個數字 , 指明私有密鑰 bit 的長度 . 如果是產生 DSA 的私有密鑰文件 , 參數是 DSA 密鑰參數文件的文件名 .
    ? ? -key filename
    ? ?
    參數 filename 指明我們的私有密鑰文件名 . 允許該文件的格式是 PKCS#8.
    ? ? -keyform DER|PEM
    ? ?
    指定輸入的私有密鑰文件的格式是 DEM 還是 DER. DER 格式采用 ASN1 DER 標準格式。一般用的多的都是 PEM 格式,就是 base64 編碼格式 . 你去看看你做出來的那些 .key, .crt 文件一般都是 PEM 格式的,第一行和最后一行指明內容,中間就是經過編碼的東西。
    ? ? -outform DER|PEM
    ? ?
    和上一個差不多,不同的是指定輸出格式
    ? ? -keyform PEM|DER
    ? ?
    私有密鑰文件的格式 , 缺省是 PEM
    ? ? -keyout filename
    ? ?
    指明創建的新的私有密鑰文件的文件名 . 如果該 option 沒有被 set, 將使用 config 文件里面指定的文件名 .
    ? ? -nodes
    ? ?
    option set 的話 , 生成的私有密鑰文件將不會被加密 .
    ? ? -[md5|sha1|md2|mdc2]
    ? ?
    指明簽發的證書使用什么哈希算法 . 如果沒有被 set, 將使用 config 文件里的相應 item 的設置 . DSA CSR 將忽略這個 option, 而采用 SHA1 哈希算法 .
    ? ? -config filename
    ? ?
    使用的 config 文件的名稱 . option 如果沒有 set, 將使用缺省的 config 文件 .
    ? ? -x509
    ? ?
    option 將產生自簽名的證書 . 一般用來錯測試用 , 或者自己玩下做個 Root CA. 證書的擴展項在 config 文件里面指定 .
    ? ?-days n
    ? ?
    如果 -509 set, 那么這個 option 的參數指定我們自己的 CA 給人家簽證書的有效期 . 缺省是 30 .
    ? ? -extensions section -reqexts section
    ? ?
    這倆個 option 指定 config 文件里面的與證書擴展和證書請求擴展有關的倆個 section 的名字 ( 如果 -x509 這個 option set). 樣你可以在 config 文件里弄幾個不同的與證書擴展有關的 section, 然后為了不同的目的給 CSR 簽名的時候指明不同的 section 來控制簽名的行為 .
    ? ? -asn1-kludge
    ? ?
    缺省的 req 指令輸出完全符合 PKCS10 格式的 CSR, 但有的 CA 僅僅接受一種非正常格式的 CSR, 這個 option set 就可以輸出那種格式的 CSR. 要解釋這倆種格式有點麻煩 , 需要用到 ASN1 PKCS 的知識 , 而且現在這樣子怪的 CA 幾乎沒有 , 所以省略解釋
    ? ? -newhdr
    ? ?
    CSR 問的第一行和最后一行中加一個單詞 "NEW", 有的軟件 (netscape certificate server) 和有的 CA 就有這樣子的怪癖嗜好 . 如果那些必須要的 option 的參數沒有在命令行給出,那么就會到 config 文件里去查看是否有缺省 值, 然后時候。 config 文件中相關的一些 KEY 的解釋與本指令有關的 KEY 都在 [req] 這個 section 里面 .
    ? ? input_password output_password
    ? ?
    私有密鑰文件的密碼和把密碼輸出的文件名 . 同指令的 passin, passout 的意義相同 .
    ? ? default_bits
    ? ?
    指定產生的私有密鑰長度 , 如果為空 , 那么就用 512. 只有 -new set, 這個設置才起作用 , 意義同 -newkey 相同 .
    ? ? default_keyfile
    ? ?
    指定輸出私有密鑰文件名 , 如果為空 , 將輸出到標準輸入 , 意義同 -keyout 相同 .
    ? ? oid_file
    ? ? oid_section
    ? ?
    oid 文件有關的項 , oid 不清楚是什么東西來的 .
    ? ? RANDFILE
    ? ?
    產生隨機數字的時候用過 seed 的文件,可以把多個文件用冒號分開一起做 seed.
    ? ? encrypt_key
    ? ?
    如果本 KEY 設置為 no, 那么如果生成一個私有密鑰文件 , 將不被加密 . 同命令行的 -nodes 的意義相同 .
    ? ? default_md
    ? ?
    指定簽名的時候使用的哈希算法 , 缺省為 MD5. 命令行里有同樣的功能輸入 .
    ? ? string_mask
    ? ?
    屏蔽掉某些類型的字符格式 . 不要亂改這個 KEY 的值 !! 有的字符格式 netscape 不支持 , 所以亂改這個 KEY 很危險 .
    ? ? req_extensions
    ? ?
    指明證書請求擴展 section, 然后由那個 secion 指明擴展的特性 . openssl 的缺省 config 文件里 , 擴展的是 X509v3, 不擴展的是 x509v1. 這個 KEY 的意義和命令行里 -reqexts 相同 .
    ? ? x509_extensions
    ? ?
    同命令行的 -extension 的意義相同 . 指明證書擴展的 sesion, 由那個 section 指明證書擴展的特性 .
    ? ? prompt
    ? ?
    如果這個 KEY 設置為 no, 那么在生成證書的時候需要的那些信息將從 config 文件里讀入 , 而不是從標準輸入由用戶去輸入 , 同時改變下倆個 KEY 所指明的 section 的格式 .
    ? ? attributes
    ? ?
    一個過時了的東西 , 不知道也罷 . 不過它的意義和下一個 KEY 有點類似 ,
    ? ?
    格式則完全相同 .

    distinguished_name
    ? ?
    指定一個 section, 由那個 section 指定在生成證書或者 CRS 的時候需要的資料 . section 的格式如下 :
    ? ?
    其格式有倆種 , 如果 KEY prompt set no( 看看 prompt 的解釋 ), 那么這個 secion 的格式看起來就是這樣子的 :
    ? ???CN=My Name
    ? ? OU=My Organization
    ? ? emailAddress=someone@somewhere.org
    ? ?
    就說只包括了字段和值。這樣子可以可以讓其他外部程序生成一個摸板文件 , 包含所有字段和值 , 把這些值提出來 . 等下舉例時間會有詳細說明 . 如果 prompt 沒有被 set no, 那么這個 section 的格式則如下 :
    ? ? fieldName="please input ur name"
    ? ?
    ? ???fieldName_default="fordesign"
    ? ?
    ? ???fieldName_min= 3
    ? ?
    ? ???fieldName_max= 18
    ? ?
    ? ? "fieldname"
    就是字段名 , 比如 commonName( 或者 CN). fieldName( 本例中是 "prompt" 是用來提示用戶輸入相關的資料的 . 如果用戶什么都不輸 , 那么就使用確省值 . 如果沒有缺省值 , 那么該字段被忽略 . 用戶如果輸入 '.' , 也可以讓該字段被忽略 .
    ? ?
    用戶輸入的字節數必須在 fieldName_min fieldName_max 之間 . 不同的 section 還可能對輸入的字符有特殊規定 , 比如必須是可打印字符 . 那么在本例里面 , 程序的表現將如下 :
    ? ?
    首先把 fieldName 打印出來給用戶以提示
    ? ? please input ur name:
    ? ?
    之后如果用戶必須輸入 3 18 之間的一個長度的字符串 , 如果用戶什么也不輸入 , 那么就把 fieldName_default 里面的值 "fordesign" 作為該字段的值添入 .
    ? ?
    有的字段可以被重復使用 . 這就產生了一個問題 , config 文件是不允許同樣的 section 文件里面有多于一個的相同的 key . 其實這很容易解決 , 比如把它們的名字分別叫做 "1.organizationName", "2.organizationName"
    ? ? openssl
    在編譯的時候封裝了最必須的幾個字段, 比如 commonName, countryName, localityName, organizationName,organizationUnitName, stateOrPrivinceName 還增加了 emailAddress surname, givenName initials dnQualifier.
    ? ?
    舉例時間 :
    ? ?
    就使用確省值 . 如果沒有缺省值 , 那么該字段被忽略 . 用戶如果輸入 '.' , 也可以讓該字段被忽略 . 用戶輸入的字節數必須在 fieldName_min fieldName_max 之間 . 不同的 section 還可能對輸入的字符有特殊規定 , 比如必須是可打印字符 . 那么在本例里面 , 程序的表現將如下 :
    ? ?
    首先把 fieldName 打印出來給用戶以提示
    ? ? please input ur name:
    ? ?
    之后如果用戶必須輸入 3 18 之間的一個長度的字符串 , 如果用戶什么也不輸入 , 那么就把 fieldName_default 里面的值 "fordesign" 作為該字段的值添入 .
    ? ?
    有的字段可以被重復使用 . 這就產生了一個問題 , config 文件是不允許同樣的 section 文件里面有多于一個的相同的 key . 其實這很容易解決 , 比如把它們的名字分別叫做 "1.organizationName", "2.organizationName" openssl 在編譯的時候封裝了最必須的幾個字段,比如 commonName,countryName,localityName, organizationName,organizationUnitName, stateOrPrivinceName 還增加了 emailAddress surname, givenName initials dnQualifier.
    ? ?
    舉例時間 :
    ? ? Examine and verify certificate request:
    ? ?
    檢查和驗證 CSR 文件 .
    ? ? openssl req -in req.pem -text -verify -noout
    ? ?
    做自己的私有密鑰文件 , 然后用這個文件生成 CSR 文件 .
    ? ? openssl genrsa -out key.pem 1024
    ? ? openssl req -new -key key.pem -out req.pem
    ? ?
    也可以一步就搞定 :
    ? ? openssl req -newkey rsa:1024 -keyout key.pem -out req.pem
    ? ?
    做一個自簽名的給 Root CA 用的證書 :
    ? ? openssl req -x509 -newkey rsa:1024 -keyout key.pem -out crt.pem
    ? ?
    下面是與本指令有關的 config 文件中相關的部分的一個例子 :
    ? ? [ req ]
    ? ? default_bits = 1024
    ? ? default_keyfile = privkey.pem
    ? ? distinguished_name = req_distinguished_name
    ? ? attributes = req_attributes
    ? ? x509_extensions = v3_ca
    ? ? dirstring_type = nobmp
    ? ? [ req_distinguished_name ]
    ? ? countryName = Country Name (2 letter code)
    ? ? countryName_default = AU
    ? ? countryName_min = 2
    ? ? countryName_max = 2
    ? ? localityName = Locality Name (eg, city)
    ? ? organizationalUnitName = Organizational Unit Name (eg, section)
    ? ? commonName = Common Name (eg, YOUR name)
    ? ? commonName_max = 64
    ? ? emailAddress = Email Address
    ? ? emailAddress_max = 40
    ? ? [ req_attributes ]
    ? ? challengePassword = A challenge password
    ? ? challengePassword_min = 4
    ? ? challengePassword_max = 20
    ? ???[ v3_ca ]
    ? ???subjectKeyIdentifier=hash
    ? ? authorityKeyIdentifier=keyid:always,issuer:always
    ? ? basicConstraints = CA:true
    ? ? RANDFILE = $ENV::HOME/.rnd
    ? ? [ req ]
    ? ? default_bits = 1024
    ? ? default_keyfile = keyfile.pem
    ? ? distinguished_name = req_distinguished_name
    ? ? attributes = req_attributes
    ? ? prompt = no
    ? ? output_password = mypass
    ? ? [ req_distinguished_name ]
    ? ? C = GB
    ? ? ST = Test State or Province
    ? ? L = Test Locality
    ? ? O = Organization Name
    ? ? OU = Organizational Unit Name
    ? ? CN = Common Name
    ? ? emailAddress = test@email.address
    ? ? [ req_attributes ]
    ? ? challengePassword = A challenge password
    ? ?
    一般的 PEM 格式的 CSR 文件的開頭和結尾一行如下
    ? ? -----BEGIN CERTIFICATE REQUEST----
    ? ? -----END CERTIFICATE REQUEST----
    ? ?
    但個把變態軟件和 CA 硬是需要 CSR 的文件要這樣子 :
    ? ? -----BEGIN NEW CERTIFICATE REQUEST----
    ? ? -----END NEW CERTIFICATE REQUEST----
    ? ?
    -newhdr 就可以啦 , 或者你自己手工加也中 .openssl 對倆種格式都承認 .
    ? ? openssl
    config 文件也可以用環境變量 OPENSSL_CONF 或者 SSLEAY_CONF 來指定 .

    ?

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

    主站蜘蛛池模板: 永久免费观看的毛片的网站| 免费乱码中文字幕网站| 亚洲成a人片在线看| 成人永久免费高清| 99在线免费视频| 亚洲乱码在线观看| 亚洲午夜精品一级在线播放放| 很黄很污的网站免费| 亚洲男人天堂2022| 亚洲日韩欧洲乱码AV夜夜摸| 国产电影午夜成年免费视频| 国产亚洲情侣久久精品| 亚洲视频精品在线| jjzz亚洲亚洲女人| 18级成人毛片免费观看| 人妻巨大乳hd免费看| 亚洲国产成人手机在线电影bd| 亚洲精品99久久久久中文字幕| 99re6在线精品视频免费播放 | 亚洲国产视频久久| 亚洲男女内射在线播放| 免费毛片在线看片免费丝瓜视频 | 中文字幕av无码不卡免费| 亚洲中文久久精品无码1| 亚洲精品一级无码中文字幕| 亚洲一区二区三区免费视频| 国产V片在线播放免费无码| 亚洲综合久久一本伊伊区| 国产亚洲精品一品区99热| 国产伦精品一区二区三区免费下载 | 亚洲色丰满少妇高潮18p| 亚洲av无码国产精品色午夜字幕| 天天摸夜夜摸成人免费视频| 久久精品视频免费看| 午夜成人无码福利免费视频| 亚洲人配人种jizz| 久久狠狠高潮亚洲精品| 亚洲永久精品ww47| 午夜亚洲av永久无码精品| 夭天干天天做天天免费看| 91免费在线播放|