亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: wingger
打印 上一主題 下一主題

[Web] openssl的man中文文檔(轉(zhuǎn)) [復制鏈接]

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
11 [報告]
發(fā)表于 2005-01-10 23:44 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令dhparam

    用法:
   
    openssl dhparam [-inform DER|PEM] [-outform DER|PEM] [-in filename]
   
    [-out filename] [-dsaparam] [-noout] [-text] [-C] [-2] [-5]
   
    [-rand file(s)] [numbits]
   
     
    描述:
    本指令用來維護DH的參數(shù)文件。

   
    OPTIONS:
    -inform DER|PEM
    指定輸入的格式是DEM還是DER. DER格式采用ASN1的DER標準格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過編碼的東西。
    -outform DER|PEM
    和上一個差不多,不同的是指定輸出格式
    -in filename
    要分析的文件名稱。
    -out filename
    要輸出的文件名。
    -dsaparam
    如果本option被set, 那么無論輸入還是輸入都會當做DSA的參數(shù)。它們再被轉(zhuǎn)化成DH的參數(shù)格式。這樣子產(chǎn)生DH參數(shù)和DH key都會塊很多。會使SSL握手的時間縮短。當然時間是以安全性做犧牲的,所以如果這樣子最好每次使用不同的參數(shù),以免給人K破你的key.
     -2, -5
    使用哪個版本的DH參數(shù)產(chǎn)生器。版本2是缺省的。如果這倆個option有一個被set, 那么將忽略輸入文件。
   
     -rand file(s)
    產(chǎn)生key的時候用過seed的文件,可以把多個文件用冒號分開一起做seed.
    numbits
    指明產(chǎn)生的參數(shù)的長度。必須是本指令的最后一個參數(shù)。如果沒有指明,則產(chǎn)生512bit長的參數(shù)。
   
     
    -noout
    不打印參數(shù)編碼的版本信息。
    -text
    將DH參數(shù)以可讀方式打印出來。
    -C
    將參數(shù)轉(zhuǎn)換成C代碼方式。這樣可以用get_dhnumbits()函數(shù)調(diào)用這些參數(shù)。
   
    openssl還有倆個指令, dh, gendh, 現(xiàn)在都過時了,全部功能由dhparam實現(xiàn)。
    現(xiàn)在dh, gendh這倆個指令還保留,但在將來可能會用做其他用途。

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
12 [報告]
發(fā)表于 2005-01-10 23:44 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令enc

    用法:
   
    openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]
   
    [-d] [-a] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]
   
    [-P] [-bufsize number] [-debug]
   
        
    說明:
    對稱加密算法工具。它能夠把數(shù)據(jù)用不同對稱加密算法來加/解密。還能夠把加密/接密,還可以把結(jié)果進行base64編碼。

   
    OPTIONS
    -in filename
    要加密/解密的輸入文件,缺省為標準輸入。
    -out filename
    要加密/解密的輸出文件,缺省為標準輸出。
    -pass arg
    輸入文件如果有密碼保護,在這里輸入密碼。
    -salt
    為了和openssl0.9.5以后的版本兼容,必須set這個option.salt大概又是密碼學里的一個術語,具體是做什么的我也沒弄的很明白。就我的理解,這是加密過后放在密碼最前面的一段字符串, 用途也是為了讓破解更難.如果理解錯了,請密碼學高手指正.
    -nosalt
    想和openssl0.9.5以前的版本兼容,就set這個option
    -e
    一個缺省會set的option, 把輸入數(shù)據(jù)加密。
    -d
    解密輸入數(shù)據(jù)。
    -a
    用base64編碼處理數(shù)據(jù)。set了這個option表示在加密之后的數(shù)據(jù)還要用base64編碼捏一次,解密之前則先用base64編碼解碼。
    -k password
    一個過時了的項,為了和以前版本兼容。現(xiàn)在用-key代替了。
    -kfile filename
    同上,被passin代替。
    -K key
    以16進制表示的密碼。
    -iv IV
   作用完全同上。
    -p
    打印出使用的密碼。
    -P
    作用同上,但打印完之后馬上退出。
    -bufsize number
    設置I/O操作的緩沖區(qū)大小
    -debug
    打印調(diào)試信息。
   
注意事項:
    0.9.5以后的版本,使用這個指令,-salt是必須被set的。否則很容易用字典攻擊法破你的密碼,流加密算法也容易被破。(加密算法中有塊加密算法和流加密算法倆種,塊加密算法是一次加密固定長度的數(shù)據(jù),一般是8Bytes, 流加密算法則加密大量數(shù)據(jù))。為什么我也弄不清楚。研究加密算法實在麻煩,也不是我們程序員的責任本指令可以用不同加密算法,那么哪些好,哪些壞呢?如果你使用不當,高強度的加密算法也變脆弱了。一般推薦新手門使用des3-cbc。
   
    本指令支持的加密算法
    base64 Base 64
    bf-cbc Blowfish in CBC mode
   
     bf Alias for bf-cbc
   
     bf-cfb Blowfish in CFB mode
   
     bf-ecb Blowfish in ECB mode
   
     bf-ofb Blowfish in OFB mode
   
     
   
     cast-cbc CAST in CBC mode
   
     cast Alias for cast-cbc
   
     cast5-cbc CAST5 in CBC mode
   
     cast5-cfb CAST5 in CFB mode
   
     cast5-ecb CAST5 in ECB mode
   
     cast5-ofb CAST5 in OFB mode
    des-cbc DES in CBC mode
   
     des Alias for des-cbc
   
     des-cfb DES in CBC mode
   
     des-ofb DES in OFB mode
   
     des-ecb DES in ECB mode
   
         
     des-ede-cbc Two key triple DES EDE in CBC mode
   
     des-ede Alias for des-ede
   
     des-ede-cfb Two key triple DES EDE in CFB mode
   
     des-ede-ofb Two key triple DES EDE in OFB mode
   
   
   
     des-ede3-cbc Three key triple DES EDE in CBC mode
   
     des-ede3 Alias for des-ede3-cbc
   
     des3 Alias for des-ede3-cbc
   
     des-ede3-cfb Three key triple DES EDE CFB mode
   
     des-ede3-ofb Three key triple DES EDE in OFB mode
   
      desx DESX algorithm.
   
      idea-cbc IDEA algorithm in CBC mode
   
     idea same as idea-cbc
   
     idea-cfb IDEA in CFB mode
   
     idea-ecb IDEA in ECB mode
   
     idea-ofb IDEA in OFB mode
   
     
   
     rc2-cbc 128 bit RC2 in CBC mode
   
     rc2 Alias for rc2-cbc
   
     rc2-cfb 128 bit RC2 in CBC mode
   
     rc2-ecb 128 bit RC2 in CBC mode
   
     rc2-ofb 128 bit RC2 in CBC mode
   
     rc2-64-cbc 64 bit RC2 in CBC mode
   
     rc2-40-cbc 40 bit RC2 in CBC mode
   
         
     rc4 128 bit RC4
   
     rc4-64 64 bit RC4
   
     rc4-40 40 bit RC4
   
         
     rc5-cbc RC5 cipher in CBC mode
   
     rc5 Alias for rc5-cbc
   
     rc5-cfb RC5 cipher in CBC mode
   
     rc5-ecb RC5 cipher in CBC mode
   
     rc5-ofb RC5 cipher in CBC mode
   
    大家可能看到DES都分des-ecb, des-cbc, des-cfb這些。簡單解釋一下。
    ecb就是說每來8bytes,就加密8bytes送出去。各個不同的數(shù)據(jù)塊之間沒有任何聯(lián)系。cbc和cfb則每次加密一個8bytes的時候都和上一個8bytes加密的結(jié)果有一個運算法則。各個數(shù)據(jù)塊之間是有聯(lián)系的。
    舉例時間:
    把某二進制文件轉(zhuǎn)換成base64編碼方式:
    openssl base64 -in file.bin -out file.b64
    把某base64編碼文件轉(zhuǎn)換成二進制文件。
    openssl base64 -d -in file.b64 -out file.bin
    把某文件用DES-CBC方式加密。加密過程中會提示你輸入保護密碼。
   
     openssl des3 -salt -in file.txt -out file.des3
    解密該文件, 密碼通過-k來輸入
    openssl des3 -d -salt -in file.des3 -out file.txt -k mypassword
    加密某文件,并且把加密結(jié)果進行base64編碼。用bf+cbc算法加密
    openssl bf -a -salt -in file.txt -out file.bf
    先用base64解碼某文件,再解密
    openssl bf -d -salt -a -in file.bf -out file.txt

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
13 [報告]
發(fā)表于 2005-01-10 23:45 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令gendsa

    用法:
   
    openssl gendsa [-out filename] [-des] [-des3] [-idea]
   
    [-rand file(s)] [paramfile]
   
     
        
    描述:
   
    本指令由DSA參數(shù)來產(chǎn)生DSA的一對密鑰。dsa參數(shù)可以用dsaparam來產(chǎn)生。

   
    OPTIONS
    -des|-des3|-idea
    采用什么加密算法來加密我們的密鑰。一般會要你輸入保護密碼。
    如果這三個中一個也沒set, 我們的密鑰將不被加密而輸入。
    -rand file(s)
    產(chǎn)生key的時候用過seed的文件,可以把多個文件用冒號分開一起做seed.
    paramfile
    指定使用的DSA參數(shù)文件。

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
14 [報告]
發(fā)表于 2005-01-10 23:46 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令genrsa

    用法:
   
    openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea]
   
    [-f4] [-3] [-rand file(s)] [numbits]
   
     
    DESCRIPTION
    生成RSA私有密鑰的工具。

   
   
    OPTIONS
    -out filename
    私有密鑰輸入文件名,缺省為標準輸出。
    the output filename. If this argument is not specified then standard output is uused.
    -passout arg
    參看指令dsa里面的passout參數(shù)說明
    -des|-des3|-idea
    采用什么加密算法來加密我們的密鑰。一般會要你輸入保護密碼。
    如果這三個中一個也沒set, 我們的密鑰將不被加密而輸入。
    -F4|-3
    使用的公共組件,一種是3, 一種是F4, 我也沒弄懂這個option是什么意思。
    -rand file(s)
    產(chǎn)生key的時候用過seed的文件,可以把多個文件用冒號分開一起做seed.
    numbits
    指明產(chǎn)生的參數(shù)的長度。必須是本指令的最后一個參數(shù)。如果沒有指明,則產(chǎn)生512bit長的參數(shù)。
    研究過RSA算法的人肯定知道,RSA的私有密鑰其實就是三個數(shù)字,其中倆個是質(zhì)數(shù)。這倆個呢,就叫prime numbers.產(chǎn)生RSA私有密鑰的關鍵就是產(chǎn)生這倆。還有一些其他的參數(shù),引導著整個私有密鑰產(chǎn)生的過程。因為產(chǎn)生私有密鑰過程需要很多隨機數(shù),這個過程的時間是不固定的。
    產(chǎn)生prime numbers的算法有個bug, 它不能產(chǎn)生短的primes. key的bits起碼要有64位。一般我們都用1024bit的key.

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
15 [報告]
發(fā)表于 2005-01-10 23:46 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令passwd

    SYNOPSIS
   
    openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin]
   
    [-quiet] [-table] {password}
   
     
   
    說明:
    本指令計算用來哈希某個密碼,也可以用來哈希文件內(nèi)容。

    本指令支持三種哈希算法:
    UNIX系統(tǒng)的標準哈希算法(crypt)
    MD5-based BSD(1)
   
    OPTIONS
   -crypt -1 -apr1
    這三個option中任意選擇一個作為哈希算法,缺省的是-crypt
    -salt string
    輸入作為salt的字符串。
    -in file
    要哈希的文件名稱
    -stdin
    從標準輸入讀入密碼
    -quiet
    當從標準輸入讀密碼,輸入的密碼太長的時候,程序?qū)⒆詣咏舛趟。這個option的
    set將不在情況下發(fā)出警告。
    -table
    在輸出列的時候,先輸出明文的密碼,然后輸出一個TAB,再輸出哈希值.
    舉例時間:
    openssl passwd -crypt -salt xx password xxj31ZMTZzkVA.
    openssl passwd -1 -salt xxxxxxxx password $1$xxxxxxxx$8XJIcl6ZXqBMCK0qFevqT1.
    openssl passwd -apr1 -salt xxxxxxxx password $apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
16 [報告]
發(fā)表于 2005-01-10 23:47 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令pkcs7
  用法:
    openssl pkcs7 [-inform PEM|DER] [-outform PEM|DER] [-in filename]
   
    [-out filename] [-print_certs] [-text] [-noout]
   
   
    說明:
    處理PKCS#7文件的工具,

   
    OPTIONS
    -inform DER|PEM
    指定輸入的格式是DEM還是DER. DER格式采用ASN1的DER標準格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過編碼的東西。
    -outform DER|PEM
    和上一個差不多,不同的是指定輸出格式
    -in filename
    要分析的文件名稱, 缺省是標準輸入.
    -out filename
    要輸出的文件名, 缺省是標準輸出.
    write to or standard output by default.
    -print_certs
    打印出該文件內(nèi)的任何證書或者CRL.
    -text
    打印出證書的細節(jié).
    -noout
    不要打印出PKCS#7結(jié)構的編碼版本信息.
    舉例時間:
    把一個PKCS#7文件從PEM格式轉(zhuǎn)換成DER格式
    openssl pkcs7 -in file.pem -outform DER -out file.der
    打印出文件內(nèi)所有的證書
    openssl pkcs7 -in file.pem -print_certs -out certs.pem
    PCKS#7 文件的開始和結(jié)束倆行是這樣子的:
    -----BEGIN PKCS7-----
    -----END PKCS7-----
    為了和某些猥瑣CA兼容,這樣子的格式也可以接受
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
    好象我們還沒有解釋pkcs#7是什么東西. 有興趣的可以看看rfc2315, 估計看完目錄還沒有陣亡的同學不會超過1/10.

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
17 [報告]
發(fā)表于 2005-01-10 23:48 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令rand

    用法:
   
    openssl rand [-out file] [-rand file(s)] [-base64] num
   
        
    描述:
    用來產(chǎn)生偽隨機字節(jié). 隨機數(shù)字產(chǎn)生器需要一個seed, 先已經(jīng)說過了,在沒有/dev/srandom系統(tǒng)下的解決方法是自己做一個~/.rnd文件.如果該程序能讓隨機數(shù)字產(chǎn)生器很滿意的被seeded,程序?qū)懟匾恍┕止值臇|西回該文件.

   
    OPTIONS
   -out file
   輸出文件.
   -rand file(s)
   產(chǎn)生隨機數(shù)字的時候用過seed的文件,可以把多個文件用冒號分開一起做seed.
   -base64
   對產(chǎn)生的東西進行base64編碼
   num
  指明產(chǎn)生多少字節(jié)隨機數(shù).

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
18 [報告]
發(fā)表于 2005-01-10 23:48 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令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]
   
     描述:
    本指令用來創(chuàng)建和處理PKCS#10格式的證書.它還能夠建立自簽名證書,做Root CA.

         
    OPTIONS
    -inform DER|PEM
    指定輸入的格式是DEM還是DER. DER格式采用ASN1的DER標準格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過編碼的東西。
    -outform DER|PEM
    和上一個差不多,不同的是指定輸出格式
    -in filename
    要處理的CSR的文件名稱,只有-new和-newkey倆個option沒有被set,本option才有效
    -passin arg
    去看看CA那一章關于這個option的解釋吧。
     -out filename
    要輸出的文件名
    -passout arg
    參看dsa指令里的passout這個option的解釋吧.
   -text
   將CSR文件里的內(nèi)容以可讀方式打印出來
    -noout
    不要打印CSR文件的編碼版本信息.
    -modulus
    將CSR里面的包含的公共米要的系數(shù)打印出來.
    -verify
    檢驗請求文件里的簽名信息.
    -new
    本option產(chǎn)生一個新的CSR, 它會要用戶輸入創(chuàng)建CSR的一些必須的信息.至于需要哪些信息,是在config文件里面定義好了的.如果-key沒有被set, 那么就將根據(jù)config文件里的信息先產(chǎn)生一對新的RSA密鑰
    -rand file(s)
    產(chǎn)生key的時候用過seed的文件,可以把多個文件用冒號分開一起做seed.
    -newkey arg
    同時生成新的私有密鑰文件和CSR文件. 本option是帶參數(shù)的.如果是產(chǎn)生RSA的私有密鑰文件,參數(shù)是一個數(shù)字, 指明私有密鑰bit的長度. 如果是產(chǎn)生DSA的私有密鑰文件,參數(shù)是DSA密鑰參數(shù)文件的文件名.
    -key filename
    參數(shù)filename指明我們的私有密鑰文件名.允許該文件的格式是PKCS#8.
    -keyform DER|PEM
    指定輸入的私有密鑰文件的格式是DEM還是DER. DER格式采用ASN1的DER標準格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過編碼的東西。
    -outform DER|PEM
    和上一個差不多,不同的是指定輸出格式
    -keyform PEM|DER
    私有密鑰文件的格式, 缺省是PEM
    -keyout filename
    指明創(chuàng)建的新的私有密鑰文件的文件名. 如果該option沒有被set, 將使用config文件里面指定的文件名.
    -nodes
    本option被set的話,生成的私有密鑰文件將不會被加密.
    -[md5|sha1|md2|mdc2]
    指明簽發(fā)的證書使用什么哈希算法.如果沒有被set, 將使用config文件里的相應item的設置. 但DSA的CSR將忽略這個option, 而采用SHA1哈希算法.
    -config filename
    使用的config文件的名稱. 本option如果沒有set, 將使用缺省的config文件.
    -x509
    本option將產(chǎn)生自簽名的證書. 一般用來錯測試用,或者自己玩下做個Root CA.證書的擴展項在 config文件里面指定.
   -days n
   如果-509被set, 那么這個option的參數(shù)指定我們自己的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的知識,而且現(xiàn)在這樣子怪的CA幾乎沒有,所以省略解釋
    -newhdr
    在CSR問的第一行和最后一行中加一個單詞"NEW", 有的軟件(netscape certificate server)和有的CA就有這樣子的怪癖嗜好.如果那些必須要的option的參數(shù)沒有在命令行給出,那么就會到config文件里去查看是否有缺省值, 然后時候。config文件中相關的一些KEY的解釋與本指令有關的KEY都在[req]這個section里面.
    input_password output_password
    私有密鑰文件的密碼和把密碼輸出的文件名.同指令的passin, passout的意義相同.
    default_bits
    指定產(chǎn)生的私有密鑰長度, 如果為空,那么就用512.只有-new被set, 這個設置才起作用,意義同-newkey相同.
    default_keyfile
    指定輸出私有密鑰文件名,如果為空, 將輸出到標準輸入,意義同-keyout相同.
    oid_file
    oid_section
    與oid文件有關的項, oid不清楚是什么東西來的.
    RANDFILE
    產(chǎn)生隨機數(shù)字的時候用過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"是用來提示用戶輸入相關的資料的.如果用戶什么都不輸, 那么就使用確省值.如果沒有缺省值, 那么該字段被忽略.用戶如果輸入 '.' ,也可以讓該字段被忽略.
    用戶輸入的字節(jié)數(shù)必須在fieldName_min和fieldName_max之間. 不同的section還可能對輸入的字符有特殊規(guī)定,比如必須是可打印字符.那么在本例里面, 程序的表現(xiàn)將如下:
    首先把fieldName打印出來給用戶以提示
    please input ur name:
    之后如果用戶必須輸入3到18之間的一個長度的字符串, 如果用戶什么也不輸入,那么就把fieldName_default里面的值"fordesign"作為該字段的值添入.
    有的字段可以被重復使用.這就產(chǎn)生了一個問題, config文件是不允許同樣的section文件里面有多于一個的相同的key的.其實這很容易解決,比如把它們的名字分別叫做 "1.organizationName", "2.organizationName"
    openssl在編譯的時候封裝了最必須的幾個字段, 比如commonName, countryName, localityName, organizationName,organizationUnitName, stateOrPrivinceName還增加了emailAddress surname, givenName initials 和 dnQualifier.
    舉例時間:
    就使用確省值.如果沒有缺省值, 那么該字段被忽略.用戶如果輸入 '.' ,也可以讓該字段被忽略.用戶輸入的字節(jié)數(shù)必須在fieldName_min和fieldName_max之間. 不同的section還可能對輸入的字符有特殊規(guī)定,比如必須是可打印字符.那么在本例里面, 程序的表現(xiàn)將如下:
    首先把fieldName打印出來給用戶以提示
    please input ur name:
    之后如果用戶必須輸入3到18之間的一個長度的字符串, 如果用戶什么也不輸入,那么就把fieldName_default里面的值"fordesign"作為該字段的值添入.
    有的字段可以被重復使用.這就產(chǎn)生了一個問題, 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文件的開頭和結(jié)尾一行如下
    -----BEGIN CERTIFICATE REQUEST----
    -----END CERTIFICATE REQUEST----
    但個把變態(tài)軟件和CA硬是需要CSR的文件要這樣子:
    -----BEGIN NEW CERTIFICATE REQUEST----
    -----END NEW CERTIFICATE REQUEST----
    用-newhdr就可以啦, 或者你自己手工加也中.openssl對倆種格式都承認.
    openssl的config文件也可以用環(huán)境變量OPENSSL_CONF或者SSLEAY_CONF來指定.

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
19 [報告]
發(fā)表于 2005-01-10 23:49 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令rsa
    用法
   
    openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename]
   
    [-passin arg] [-out filename] [-passout arg] [-sgckey] [-des] [-des3]
   
    [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout]
   
   
    說明:
   rsa指令專門處理RSA密鑰.其實其用法和dsa的差不多.

   
    OPTIONS
    -inform DER|PEM|NET
    指定輸入的格式是DEM還是DER還是NET.注意, 這里多了一種格式,就是NET,DER格式采用ASN1的DER標準格式。一般用的多的都是PEM格式,就是base64編碼格式.你去看看你做出來的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明內(nèi)容,中間就是經(jīng)過編碼的東西。NET格式在本章后面會詳細解釋.
    -outform DER|PEM|NET
    和上一個差不多,不同的是指定輸出格式
    -in filename
    要分析的文件名稱。如果文件有密碼保護,會要你輸入的.
    -passin arg
    去看看CA那一章關于這個option的解釋吧。
    -out filename
    要輸出的文件名。
    -passout arg
    沒什么用的一個選項,用來把保護key文件的密碼輸出的,意義和passin差不多。
    -sgckey
    配合NET格式的私有密鑰文件的一個option, 沒有必要去深入知道了。
    -des|-des3|-idea
    指明用什么加密算法把我們的私有密鑰加密。加密的時候會需要我們輸入密碼來保護該文件的。如果這仨一個都沒有選,那么你的私有密鑰就以明文寫進你的key文件。該選項只能輸出PEM格式的文件。
    -text
    打印出私有密鑰的各個組成部分.
    -noout
    不打印出key的編碼版本信息。
    -modulus
    把其公共密鑰的值也打印出來
    -pubin
    缺省的來說是從輸入文件里讀到私有密鑰,這個就可以從輸入文件里去讀公共密鑰.
    -pubout
    缺省的來說是打印出私有密鑰,這個就可以打印公共密鑰.如果上面那個選項有set那么這個選項也自動被set.
    -check
    檢查RSA的私有密鑰是否被破壞了這個指令實在和dsa太相似了。copy的我手軟。
    現(xiàn)在解釋一下NET是一種什么格式。它是為了和老的netscape server以及IIS兼容才弄出來的。他使用沒有被salt過的RC4做加密算法,加密強度很底,如果不是一定要用就別用。
    舉例時間:
    把RSA私有密鑰文件的保護密碼去掉(最好別這么做)
    openssl rsa -in key.pem -out keyout.pem
    用DES3算法加密我們的私有密碼文件:
    openssl rsa -in key.pem -des3 -out keyout.pem
    把一個私有密鑰文件從PEM格式轉(zhuǎn)化成DER格式:
    openssl rsa -in key.pem -outform DER -out keyout.der
    把私有密鑰的所有內(nèi)容詳細的打印出來:
    openssl rsa -in key.pem -text -noout
    只打印出公共密鑰部分:
    openssl rsa -in key.pem -pubout -out pubkey.pem

論壇徽章:
1
榮譽版主
日期:2011-11-23 16:44:17
20 [報告]
發(fā)表于 2005-01-10 23:50 |只看該作者

openssl的man中文文檔(轉(zhuǎn))

openssl簡介-指令rsautl
    用法:
   
    openssl rsautl [-in file] [-out file] [-inkey file] [-pubin] [-certin]
   
    [-sign] [-verify] [-encrypt] [-decrypt] [-pkcs] [-ssl] [-raw] [-hexdump]
   
    [-asn1parse]
   
     
    描述:
    本指令能夠使用RSA算法簽名,驗證身份, 加密/解密數(shù)據(jù)。

   
    OPTIONS
    -in filename
    指定輸入文件名。缺省為標準輸入。
    -out filename
    指定輸入文件名, 缺省為標準輸出。
    -inkey file
    指定我們的私有密鑰文件, 格式必須是RSA私有密鑰文件。
    -pubin
    指定我們的公共密鑰文件。說真的我還真不知道RSA的公共密鑰文件有什么用,一般公共密鑰都是放在證書里面的。
    -certin
    指定我們的證書文件了。
    -sign
    給輸入的數(shù)據(jù)簽名。需要我們的私有密鑰文件。
    -verify
    對輸入的數(shù)據(jù)進行驗證。
    -encrypt
    用我們的公共密鑰對輸入的數(shù)據(jù)進行加密。
    -decrypt
    用RSA的私有密鑰對輸入的數(shù)據(jù)進行解密。
    -pkcs, -oaep, -ssl, -raw
   采用的填充模式, 上述四個值分別代表:PKCS#1.5(缺省值), PKCS#1 OAEP, SSLv2里面特定的填充模式,或者不填充。如果要簽名,只有-pkcs和-raw可以使用.
    -hexdump
    用十六進制輸出數(shù)據(jù)。
    -asn1parse
    對輸出的數(shù)據(jù)進行ASN1分析。看看指令asn1parse吧。該指令一般和-verify一起用的時候威力大。
    本指令加密數(shù)據(jù)的時候只能加密少量數(shù)據(jù),要加密大量數(shù)據(jù),估計要調(diào)API.我也沒試過寫RSA加密解密的程序來玩。
    舉例時間:
    用私有密鑰對某文件簽名:
    openssl rsautl -sign -in file -inkey key.pem -out sig
    注意哦, 文件真的不能太大, 這個不能太大意思是必須很小。
    文件大小最好不要大過73。絕對不能多過150,多了就會出錯。
    這個工具真是用來玩的
   
    對簽名過的數(shù)據(jù)進行驗證,得到原來的數(shù)據(jù)。
    openssl rsautl -verify -in sig -inkey key.pem
    檢查原始的簽名過的數(shù)據(jù):
    openssl rsautl -verify -in sig -inkey key.pem -raw -hexdump
   
     0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
   
     0070 - ff ff ff ff 00 68 65 6c-6c 6f 20 77 6f 72 6c 64 .....hello world
    很明顯,這是PKCS#1結(jié)構:使用0xff填充模式。
    配合指令asn1parse,可以分析簽名的證書,我們在req指令里說了怎么做自簽名的證書了,現(xiàn)在來分析一下先。
    openssl asn1parse -in pca-cert.pem
   
    0:d=0 hl=4 l= 742 cons: SEQUENCE
   
     4:d=1 hl=4 l= 591 cons: SEQUENCE
   
     8:d=2 hl=2 l= 3 cons: cont [ 0 ]
   
     10:d=3 hl=2 l= 1 prim: INTEGER :02
   
     13:d=2 hl=2 l= 1 prim: INTEGER :00
   
     16:d=2 hl=2 l= 13 cons: SEQUENCE
   
     18:d=3 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption
   
     29:d=3 hl=2 l= 0 prim: NULL
   
     31:d=2 hl=2 l= 92 cons: SEQUENCE
   
     33:d=3 hl=2 l= 11 cons: SET
   
     35:d=4 hl=2 l= 9 cons: SEQUENCE
   
     37:d=5 hl=2 l= 3 prim: OBJECT :countryName
   
     42:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AU
   
     ....
   
     599:d=1 hl=2 l= 13 cons: SEQUENCE
   
     601:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption
   
     612:d=2 hl=2 l= 0 prim: NULL
   
     614:d=1 hl=3 l= 129 prim: BIT STRING
   
    最后一行BIT STRING就是實際的簽名。我們可以這樣子捏它出來:
    openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
   還可以這樣子把公共密鑰給弄出來:
    openssl x509 -in test/testx509.pem -pubkey -noout >;pubkey.pem
    我們也可以這樣子分析簽名:
    openssl rsautl -in sig -verify -asn1parse -inkey pubkey.pem -pubin
    0:d=0 hl=2 l= 32 cons: SEQUENCE
   
     2:d=1 hl=2 l= 12 cons: SEQUENCE
   
     4:d=2 hl=2 l= 8 prim: OBJECT :md5
   
     14:d=2 hl=2 l= 0 prim: NULL
   
     16:d=1 hl=2 l= 16 prim: OCTET STRING
   
     0000 - f3 46 9e aa 1a 4a 73 c9-37 ea 93 00 48 25 08 b5 .F...Js.7...H%..
   
    這是經(jīng)過分析后的ASN1結(jié)構?梢钥闯鰜硎褂玫墓K惴ㄊ莔d5. (很抱歉,我自己試這一行的時候輸出結(jié)果卻完全不同。
    0:d=0 hl=2 l= 120 cons: appl [ 24 ]
    length is greater than 18
    完全沒有辦法看出那里有寫哈希算法。)
    證書里面的簽名部分可以這么捏出來:
    openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4
    這樣得到他的哈希算法的細節(jié):
    openssl md5 -c tbs
    MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP