openssl簡(jiǎn)介-指令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]
描述:
本指令用來(lái)創(chuàng)建和處理PKCS#10格式的證書(shū).它還能夠建立自簽名證書(shū),做Root CA.
OPTIONS
-inform DER|PEM
指定輸入的格式是DEM還是DER. DER格式采用ASN1的DER標(biāo)準(zhǔn)格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來(lái)的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過(guò)編碼的東西。
-outform DER|PEM
和上一個(gè)差不多,不同的是指定輸出格式
-in filename
要處理的CSR的文件名稱,只有-new和-newkey倆個(gè)option沒(méi)有被set,本option才有效
-passin arg
去看看CA那一章關(guān)于這個(gè)option的解釋吧。
-out filename
要輸出的文件名
-passout arg
參看dsa指令里的passout這個(gè)option的解釋吧.
-text
將CSR文件里的內(nèi)容以可讀方式打印出來(lái)
-noout
不要打印CSR文件的編碼版本信息.
-modulus
將CSR里面的包含的公共米要的系數(shù)打印出來(lái).
-verify
檢驗(yàn)請(qǐng)求文件里的簽名信息.
-new
本option產(chǎn)生一個(gè)新的CSR, 它會(huì)要用戶輸入創(chuàng)建CSR的一些必須的信息.至于需要哪些信息,是在config文件里面定義好了的.如果-key沒(méi)有被set, 那么就將根據(jù)config文件里的信息先產(chǎn)生一對(duì)新的RSA密鑰
-rand file(s)
產(chǎn)生key的時(shí)候用過(guò)seed的文件,可以把多個(gè)文件用冒號(hào)分開(kāi)一起做seed.
-newkey arg
同時(shí)生成新的私有密鑰文件和CSR文件. 本option是帶參數(shù)的.如果是產(chǎn)生RSA的私有密鑰文件,參數(shù)是一個(gè)數(shù)字, 指明私有密鑰bit的長(zhǎng)度. 如果是產(chǎn)生DSA的私有密鑰文件,參數(shù)是DSA密鑰參數(shù)文件的文件名.
-key filename
參數(shù)filename指明我們的私有密鑰文件名.允許該文件的格式是PKCS#8.
-keyform DER|PEM
指定輸入的私有密鑰文件的格式是DEM還是DER. DER格式采用ASN1的DER標(biāo)準(zhǔn)格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來(lái)的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過(guò)編碼的東西。
-outform DER|PEM
和上一個(gè)差不多,不同的是指定輸出格式
-keyform PEM|DER
私有密鑰文件的格式, 缺省是PEM
-keyout filename
指明創(chuàng)建的新的私有密鑰文件的文件名. 如果該option沒(méi)有被set, 將使用config文件里面指定的文件名.
-nodes
本option被set的話,生成的私有密鑰文件將不會(huì)被加密.
-[md5|sha1|md2|mdc2]
指明簽發(fā)的證書(shū)使用什么哈希算法.如果沒(méi)有被set, 將使用config文件里的相應(yīng)item的設(shè)置. 但DSA的CSR將忽略這個(gè)option, 而采用SHA1哈希算法.
-config filename
使用的config文件的名稱. 本option如果沒(méi)有set, 將使用缺省的config文件.
-x509
本option將產(chǎn)生自簽名的證書(shū). 一般用來(lái)錯(cuò)測(cè)試用,或者自己玩下做個(gè)Root CA.證書(shū)的擴(kuò)展項(xiàng)在 config文件里面指定.
-days n
如果-509被set, 那么這個(gè)option的參數(shù)指定我們自己的CA給人家簽證書(shū)的有效期.缺省是30天.
-extensions section -reqexts section
這倆個(gè)option指定config文件里面的與證書(shū)擴(kuò)展和證書(shū)請(qǐng)求擴(kuò)展有關(guān)的倆個(gè)section的名字(如果-x509這個(gè)option被set).這樣你可以在config文件里弄幾個(gè)不同的與證書(shū)擴(kuò)展有關(guān)的section, 然后為了不同的目的給CSR簽名的時(shí)候指明不同的section來(lái)控制簽名的行為.
-asn1-kludge
缺省的req指令輸出完全符合PKCS10格式的CSR, 但有的CA僅僅接受一種非正常格式的CSR, 這個(gè)option的set就可以輸出那種格式的CSR. 要解釋這倆種格式有點(diǎn)麻煩, 需要用到ASN1和PKCS的知識(shí),而且現(xiàn)在這樣子怪的CA幾乎沒(méi)有,所以省略解釋
-newhdr
在CSR問(wèn)的第一行和最后一行中加一個(gè)單詞"NEW", 有的軟件(netscape certificate server)和有的CA就有這樣子的怪癖嗜好.如果那些必須要的option的參數(shù)沒(méi)有在命令行給出,那么就會(huì)到config文件里去查看是否有缺省值, 然后時(shí)候。config文件中相關(guān)的一些KEY的解釋與本指令有關(guān)的KEY都在[req]這個(gè)section里面.
input_password output_password
私有密鑰文件的密碼和把密碼輸出的文件名.同指令的passin, passout的意義相同.
default_bits
指定產(chǎn)生的私有密鑰長(zhǎng)度, 如果為空,那么就用512.只有-new被set, 這個(gè)設(shè)置才起作用,意義同-newkey相同.
default_keyfile
指定輸出私有密鑰文件名,如果為空, 將輸出到標(biāo)準(zhǔn)輸入,意義同-keyout相同.
oid_file
oid_section
與oid文件有關(guān)的項(xiàng), oid不清楚是什么東西來(lái)的.
RANDFILE
產(chǎn)生隨機(jī)數(shù)字的時(shí)候用過(guò)seed的文件,可以把多個(gè)文件用冒號(hào)分開(kāi)一起做seed.
encrypt_key
如果本KEY設(shè)置為no, 那么如果生成一個(gè)私有密鑰文件,將不被加密.同命令行的-nodes的意義相同.
default_md
指定簽名的時(shí)候使用的哈希算法,缺省為MD5. 命令行里有同樣的功能輸入.
string_mask
屏蔽掉某些類型的字符格式. 不要亂改這個(gè)KEY的值!!有的字符格式netscape不支持,所以亂改這個(gè)KEY很危險(xiǎn).
req_extensions
指明證書(shū)請(qǐng)求擴(kuò)展section, 然后由那個(gè)secion指明擴(kuò)展的特性. openssl的缺省config文件里, 擴(kuò)展的是X509v3, 不擴(kuò)展的是x509v1.這個(gè)KEY的意義和命令行里-reqexts相同.
x509_extensions
同命令行的-extension的意義相同.指明證書(shū)擴(kuò)展的sesion, 由那個(gè)section指明證書(shū)擴(kuò)展的特性.
prompt
如果這個(gè)KEY設(shè)置為no, 那么在生成證書(shū)的時(shí)候需要的那些信息將從config文件里讀入,而不是從標(biāo)準(zhǔn)輸入由用戶去輸入, 同時(shí)改變下倆個(gè)KEY所指明的section的格式.
attributes
一個(gè)過(guò)時(shí)了的東西, 不知道也罷. 不過(guò)它的意義和下一個(gè)KEY有點(diǎn)類似,
格式則完全相同.
distinguished_name
指定一個(gè)section, 由那個(gè)section指定在生成證書(shū)或者CRS的時(shí)候需要的資料.該section的格式如下:
其格式有倆種, 如果KEY prompt被set成no(看看prompt的解釋), 那么這個(gè)secion的格式看起來(lái)就是這樣子的:
CN=My Name
OU=My Organization
emailAddress=someone@somewhere.org
就說(shuō)只包括了字段和值。這樣子可以可以讓其他外部程序生成一個(gè)摸板文件,包含所有字段和值, 把這些值提出來(lái).等下舉例時(shí)間會(huì)有詳細(xì)說(shuō)明.如果prompt沒(méi)有被set成no, 那么這個(gè)section的格式則如下:
fieldName="please input ur name"
fieldName_default="fordesign"
fieldName_min= 3
fieldName_max= 18
"fieldname"就是字段名, 比如commonName(或者CN). fieldName(本例中是"prompt"
是用來(lái)提示用戶輸入相關(guān)的資料的.如果用戶什么都不輸, 那么就使用確省值.如果沒(méi)有缺省值, 那么該字段被忽略.用戶如果輸入 '.' ,也可以讓該字段被忽略.
用戶輸入的字節(jié)數(shù)必須在fieldName_min和fieldName_max之間. 不同的section還可能對(duì)輸入的字符有特殊規(guī)定,比如必須是可打印字符.那么在本例里面, 程序的表現(xiàn)將如下:
首先把fieldName打印出來(lái)給用戶以提示
please input ur name:
之后如果用戶必須輸入3到18之間的一個(gè)長(zhǎng)度的字符串, 如果用戶什么也不輸入,那么就把fieldName_default里面的值"fordesign"作為該字段的值添入.
有的字段可以被重復(fù)使用.這就產(chǎn)生了一個(gè)問(wèn)題, config文件是不允許同樣的section文件里面有多于一個(gè)的相同的key的.其實(shí)這很容易解決,比如把它們的名字分別叫做 "1.organizationName", "2.organizationName"
openssl在編譯的時(shí)候封裝了最必須的幾個(gè)字段, 比如commonName, countryName, localityName, organizationName,organizationUnitName, stateOrPrivinceName還增加了emailAddress surname, givenName initials 和 dnQualifier.
舉例時(shí)間:
就使用確省值.如果沒(méi)有缺省值, 那么該字段被忽略.用戶如果輸入 '.' ,也可以讓該字段被忽略.用戶輸入的字節(jié)數(shù)必須在fieldName_min和fieldName_max之間. 不同的section還可能對(duì)輸入的字符有特殊規(guī)定,比如必須是可打印字符.那么在本例里面, 程序的表現(xiàn)將如下:
首先把fieldName打印出來(lái)給用戶以提示
please input ur name:
之后如果用戶必須輸入3到18之間的一個(gè)長(zhǎng)度的字符串, 如果用戶什么也不輸入,那么就把fieldName_default里面的值"fordesign"作為該字段的值添入.
有的字段可以被重復(fù)使用.這就產(chǎn)生了一個(gè)問(wèn)題, config文件是不允許同樣的section文件里面有多于一個(gè)的相同的key的.其實(shí)這很容易解決,比如把它們的名字分別叫做 "1.organizationName", "2.organizationName" openssl在編譯的時(shí)候封裝了最必須的幾個(gè)字段,比如commonName,countryName,localityName, organizationName,organizationUnitName, stateOrPrivinceName還增加了emailAddress surname, givenName initials 和 dnQualifier.
舉例時(shí)間:
Examine and verify certificate request:
檢查和驗(yàn)證CSR文件.
openssl req -in req.pem -text -verify -noout
做自己的私有密鑰文件, 然后用這個(gè)文件生成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
做一個(gè)自簽名的給Root CA用的證書(shū):
openssl req -x509 -newkey rsa:1024 -keyout key.pem -out crt.pem
下面是與本指令有關(guān)的config文件中相關(guān)的部分的一個(gè)例子:
[ 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文件的開(kāi)頭和結(jié)尾一行如下
-----BEGIN CERTIFICATE REQUEST----
-----END CERTIFICATE REQUEST----
但個(gè)把變態(tài)軟件和CA硬是需要CSR的文件要這樣子:
-----BEGIN NEW CERTIFICATE REQUEST----
-----END NEW CERTIFICATE REQUEST----
用-newhdr就可以啦, 或者你自己手工加也中.openssl對(duì)倆種格式都承認(rèn).
openssl的config文件也可以用環(huán)境變量OPENSSL_CONF或者SSLEAY_CONF來(lái)指定.
用法:
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]
描述:
本指令用來(lái)創(chuàng)建和處理PKCS#10格式的證書(shū).它還能夠建立自簽名證書(shū),做Root CA.
OPTIONS
-inform DER|PEM
指定輸入的格式是DEM還是DER. DER格式采用ASN1的DER標(biāo)準(zhǔn)格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來(lái)的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過(guò)編碼的東西。
-outform DER|PEM
和上一個(gè)差不多,不同的是指定輸出格式
-in filename
要處理的CSR的文件名稱,只有-new和-newkey倆個(gè)option沒(méi)有被set,本option才有效
-passin arg
去看看CA那一章關(guān)于這個(gè)option的解釋吧。
-out filename
要輸出的文件名
-passout arg
參看dsa指令里的passout這個(gè)option的解釋吧.
-text
將CSR文件里的內(nèi)容以可讀方式打印出來(lái)
-noout
不要打印CSR文件的編碼版本信息.
-modulus
將CSR里面的包含的公共米要的系數(shù)打印出來(lái).
-verify
檢驗(yàn)請(qǐng)求文件里的簽名信息.
-new
本option產(chǎn)生一個(gè)新的CSR, 它會(huì)要用戶輸入創(chuàng)建CSR的一些必須的信息.至于需要哪些信息,是在config文件里面定義好了的.如果-key沒(méi)有被set, 那么就將根據(jù)config文件里的信息先產(chǎn)生一對(duì)新的RSA密鑰
-rand file(s)
產(chǎn)生key的時(shí)候用過(guò)seed的文件,可以把多個(gè)文件用冒號(hào)分開(kāi)一起做seed.
-newkey arg
同時(shí)生成新的私有密鑰文件和CSR文件. 本option是帶參數(shù)的.如果是產(chǎn)生RSA的私有密鑰文件,參數(shù)是一個(gè)數(shù)字, 指明私有密鑰bit的長(zhǎng)度. 如果是產(chǎn)生DSA的私有密鑰文件,參數(shù)是DSA密鑰參數(shù)文件的文件名.
-key filename
參數(shù)filename指明我們的私有密鑰文件名.允許該文件的格式是PKCS#8.
-keyform DER|PEM
指定輸入的私有密鑰文件的格式是DEM還是DER. DER格式采用ASN1的DER標(biāo)準(zhǔn)格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來(lái)的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過(guò)編碼的東西。
-outform DER|PEM
和上一個(gè)差不多,不同的是指定輸出格式
-keyform PEM|DER
私有密鑰文件的格式, 缺省是PEM
-keyout filename
指明創(chuàng)建的新的私有密鑰文件的文件名. 如果該option沒(méi)有被set, 將使用config文件里面指定的文件名.
-nodes
本option被set的話,生成的私有密鑰文件將不會(huì)被加密.
-[md5|sha1|md2|mdc2]
指明簽發(fā)的證書(shū)使用什么哈希算法.如果沒(méi)有被set, 將使用config文件里的相應(yīng)item的設(shè)置. 但DSA的CSR將忽略這個(gè)option, 而采用SHA1哈希算法.
-config filename
使用的config文件的名稱. 本option如果沒(méi)有set, 將使用缺省的config文件.
-x509
本option將產(chǎn)生自簽名的證書(shū). 一般用來(lái)錯(cuò)測(cè)試用,或者自己玩下做個(gè)Root CA.證書(shū)的擴(kuò)展項(xiàng)在 config文件里面指定.
-days n
如果-509被set, 那么這個(gè)option的參數(shù)指定我們自己的CA給人家簽證書(shū)的有效期.缺省是30天.
-extensions section -reqexts section
這倆個(gè)option指定config文件里面的與證書(shū)擴(kuò)展和證書(shū)請(qǐng)求擴(kuò)展有關(guān)的倆個(gè)section的名字(如果-x509這個(gè)option被set).這樣你可以在config文件里弄幾個(gè)不同的與證書(shū)擴(kuò)展有關(guān)的section, 然后為了不同的目的給CSR簽名的時(shí)候指明不同的section來(lái)控制簽名的行為.
-asn1-kludge
缺省的req指令輸出完全符合PKCS10格式的CSR, 但有的CA僅僅接受一種非正常格式的CSR, 這個(gè)option的set就可以輸出那種格式的CSR. 要解釋這倆種格式有點(diǎn)麻煩, 需要用到ASN1和PKCS的知識(shí),而且現(xiàn)在這樣子怪的CA幾乎沒(méi)有,所以省略解釋
-newhdr
在CSR問(wèn)的第一行和最后一行中加一個(gè)單詞"NEW", 有的軟件(netscape certificate server)和有的CA就有這樣子的怪癖嗜好.如果那些必須要的option的參數(shù)沒(méi)有在命令行給出,那么就會(huì)到config文件里去查看是否有缺省值, 然后時(shí)候。config文件中相關(guān)的一些KEY的解釋與本指令有關(guān)的KEY都在[req]這個(gè)section里面.
input_password output_password
私有密鑰文件的密碼和把密碼輸出的文件名.同指令的passin, passout的意義相同.
default_bits
指定產(chǎn)生的私有密鑰長(zhǎng)度, 如果為空,那么就用512.只有-new被set, 這個(gè)設(shè)置才起作用,意義同-newkey相同.
default_keyfile
指定輸出私有密鑰文件名,如果為空, 將輸出到標(biāo)準(zhǔn)輸入,意義同-keyout相同.
oid_file
oid_section
與oid文件有關(guān)的項(xiàng), oid不清楚是什么東西來(lái)的.
RANDFILE
產(chǎn)生隨機(jī)數(shù)字的時(shí)候用過(guò)seed的文件,可以把多個(gè)文件用冒號(hào)分開(kāi)一起做seed.
encrypt_key
如果本KEY設(shè)置為no, 那么如果生成一個(gè)私有密鑰文件,將不被加密.同命令行的-nodes的意義相同.
default_md
指定簽名的時(shí)候使用的哈希算法,缺省為MD5. 命令行里有同樣的功能輸入.
string_mask
屏蔽掉某些類型的字符格式. 不要亂改這個(gè)KEY的值!!有的字符格式netscape不支持,所以亂改這個(gè)KEY很危險(xiǎn).
req_extensions
指明證書(shū)請(qǐng)求擴(kuò)展section, 然后由那個(gè)secion指明擴(kuò)展的特性. openssl的缺省config文件里, 擴(kuò)展的是X509v3, 不擴(kuò)展的是x509v1.這個(gè)KEY的意義和命令行里-reqexts相同.
x509_extensions
同命令行的-extension的意義相同.指明證書(shū)擴(kuò)展的sesion, 由那個(gè)section指明證書(shū)擴(kuò)展的特性.
prompt
如果這個(gè)KEY設(shè)置為no, 那么在生成證書(shū)的時(shí)候需要的那些信息將從config文件里讀入,而不是從標(biāo)準(zhǔn)輸入由用戶去輸入, 同時(shí)改變下倆個(gè)KEY所指明的section的格式.
attributes
一個(gè)過(guò)時(shí)了的東西, 不知道也罷. 不過(guò)它的意義和下一個(gè)KEY有點(diǎn)類似,
格式則完全相同.
distinguished_name
指定一個(gè)section, 由那個(gè)section指定在生成證書(shū)或者CRS的時(shí)候需要的資料.該section的格式如下:
其格式有倆種, 如果KEY prompt被set成no(看看prompt的解釋), 那么這個(gè)secion的格式看起來(lái)就是這樣子的:
CN=My Name
OU=My Organization
emailAddress=someone@somewhere.org
就說(shuō)只包括了字段和值。這樣子可以可以讓其他外部程序生成一個(gè)摸板文件,包含所有字段和值, 把這些值提出來(lái).等下舉例時(shí)間會(huì)有詳細(xì)說(shuō)明.如果prompt沒(méi)有被set成no, 那么這個(gè)section的格式則如下:
fieldName="please input ur name"
fieldName_default="fordesign"
fieldName_min= 3
fieldName_max= 18
"fieldname"就是字段名, 比如commonName(或者CN). fieldName(本例中是"prompt"

用戶輸入的字節(jié)數(shù)必須在fieldName_min和fieldName_max之間. 不同的section還可能對(duì)輸入的字符有特殊規(guī)定,比如必須是可打印字符.那么在本例里面, 程序的表現(xiàn)將如下:
首先把fieldName打印出來(lái)給用戶以提示
please input ur name:
之后如果用戶必須輸入3到18之間的一個(gè)長(zhǎng)度的字符串, 如果用戶什么也不輸入,那么就把fieldName_default里面的值"fordesign"作為該字段的值添入.
有的字段可以被重復(fù)使用.這就產(chǎn)生了一個(gè)問(wèn)題, config文件是不允許同樣的section文件里面有多于一個(gè)的相同的key的.其實(shí)這很容易解決,比如把它們的名字分別叫做 "1.organizationName", "2.organizationName"
openssl在編譯的時(shí)候封裝了最必須的幾個(gè)字段, 比如commonName, countryName, localityName, organizationName,organizationUnitName, stateOrPrivinceName還增加了emailAddress surname, givenName initials 和 dnQualifier.
舉例時(shí)間:
就使用確省值.如果沒(méi)有缺省值, 那么該字段被忽略.用戶如果輸入 '.' ,也可以讓該字段被忽略.用戶輸入的字節(jié)數(shù)必須在fieldName_min和fieldName_max之間. 不同的section還可能對(duì)輸入的字符有特殊規(guī)定,比如必須是可打印字符.那么在本例里面, 程序的表現(xiàn)將如下:
首先把fieldName打印出來(lái)給用戶以提示
please input ur name:
之后如果用戶必須輸入3到18之間的一個(gè)長(zhǎng)度的字符串, 如果用戶什么也不輸入,那么就把fieldName_default里面的值"fordesign"作為該字段的值添入.
有的字段可以被重復(fù)使用.這就產(chǎn)生了一個(gè)問(wèn)題, config文件是不允許同樣的section文件里面有多于一個(gè)的相同的key的.其實(shí)這很容易解決,比如把它們的名字分別叫做 "1.organizationName", "2.organizationName" openssl在編譯的時(shí)候封裝了最必須的幾個(gè)字段,比如commonName,countryName,localityName, organizationName,organizationUnitName, stateOrPrivinceName還增加了emailAddress surname, givenName initials 和 dnQualifier.
舉例時(shí)間:
Examine and verify certificate request:
檢查和驗(yàn)證CSR文件.
openssl req -in req.pem -text -verify -noout
做自己的私有密鑰文件, 然后用這個(gè)文件生成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
做一個(gè)自簽名的給Root CA用的證書(shū):
openssl req -x509 -newkey rsa:1024 -keyout key.pem -out crt.pem
下面是與本指令有關(guān)的config文件中相關(guān)的部分的一個(gè)例子:
[ 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文件的開(kāi)頭和結(jié)尾一行如下
-----BEGIN CERTIFICATE REQUEST----
-----END CERTIFICATE REQUEST----
但個(gè)把變態(tài)軟件和CA硬是需要CSR的文件要這樣子:
-----BEGIN NEW CERTIFICATE REQUEST----
-----END NEW CERTIFICATE REQUEST----
用-newhdr就可以啦, 或者你自己手工加也中.openssl對(duì)倆種格式都承認(rèn).
openssl的config文件也可以用環(huán)境變量OPENSSL_CONF或者SSLEAY_CONF來(lái)指定.