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

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

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

    隨筆-124  評論-194  文章-0  trackbacks-0
    這里抄錄LDAP+OpenSSL集中認證配置一文的一部分:
    公私鑰:公鑰可以唯一解密私鑰加密過的數據,反之亦然。以下用P指代公鑰,V指代私鑰。
    SSL過程:需要兩對公私鑰(P1,V1),(P2,V2),假設通信雙方是A和B,B是服務器,A要確認和它通信的是B:
    A->B: hello
    B->A: 用V2加密過的P1(即用戶證書,A就用P2解密出P1)
    A->B: ok
    B->A: 用V1加密的一段信息
    A->B: 用P1加密一個自動生成的K(用之前的P1解密成功這段信息則認為B是可信的了)
    B->A: 用K加密的數據(之后兩對密鑰功能結束,由K來加解密數據)
    這里,P2就是第3方的CA證書,由于非對稱加密很慢,所以公私鑰只是用來保證K的傳送安全,之后通信是用K的對稱加密算法來保證。

    為什么通過以上過程A就能夠確定肯定是B,而不是某個C在假裝B了呢?因為這個過程中,B用V1加密過一段信息發給A,A也成功解開了。我們開頭談到公鑰(P1)只可以唯一解密私鑰(V1)加密過的信息,這樣A就可以完全相信B是擁有V1的,而V1是嚴格保密,只被服務提供公司擁有,所以保證了通信的服務方正確性。

    這里(P2,V2)就是certificate authority (CA)用來給客戶簽名用的公私鑰。
    (P1,V1)是客戶自己的公私鑰,提交給CA,CA所做的事情就是用(P2,V2)來給客戶的(P1,V1)簽名,簡單吧?
    V2是CA公司要保密的,而P2就是公用CA證書。用V2加密過(簽名過)的P1,稱為用戶證書,一般被安裝在服務器端。

    下面我們OpenSSL來做這一整件事情。

    先生成CA的公私鑰(Root Certificate )
    準備工作
    mkdir CA 
    cd CA 
    mkdir newcerts private 
    echo '
    01' > serial 
    touch index.txt 

    生成配置文件。由于openssl命令行參數太多,所以就用文件來組織各種選項。
    其中,req_distinguished_name 節表示需要提示用戶輸入的信息。
    v3_ca是有關CA公私鑰生成的,v3_req是有關用戶證書生成的。
    ca_default是用CA公私鑰簽名的時候,用戶證書的默認信息。

    vi ./openssl.cnf
    dir = .

    [ req ] 
    default_bits 
    = 1024 # Size of keys 
    default_keyfile 
    = key.pem # name of generated keys 
    default_md 
    = md5 # message digest algorithm 
    string_mask 
    = nombstr # permitted characters 
    distinguished_name 
    = req_distinguished_name 
    req_extensions 
    = v3_req 

    [ req_distinguished_name ] 
    # Variable name   Prompt string 
    #----------------------   ---------------------------------- 
    0.organizationName = Organization Name (company) 
    organizationalUnitName 
    = Organizational Unit Name (department, division) 
    emailAddress 
    = Email Address 
    emailAddress_max 
    = 40 
    localityName 
    = Locality Name (city, district) 
    stateOrProvinceName 
    = State or Province Name (full name) 
    countryName 
    = Country Name (2 letter code) 
    countryName_min 
    = 2 
    countryName_max 
    = 2 
    commonName 
    = Common Name (hostname, IP, or your name) 
    commonName_max 
    = 64 

    # Default values for the above
    , for consistency and less typing. 
    # Variable name   Value 
    #------------------------------   ------------------------------ 
    0.organizationName_default = EB Company 
    localityName_default 
    = Shen Zhen 
    stateOrProvinceName_default 
    = Guan Dong
    countryName_default 
    = CN

    [ v3_ca ] 
    basicConstraints 
    = CA:TRUE 
    subjectKeyIdentifier 
    = hash 
    authorityKeyIdentifier 
    = keyid:always,issuer:always 

    [ v3_req ] 
    basicConstraints 
    = CA:FALSE 
    subjectKeyIdentifier 
    = hash 


    [ ca ] 
    default_ca 
    = CA_default 

    [ CA_default ] 
    serial 
    = $dir/serial 
    database 
    = $dir/index.txt 
    new_certs_dir 
    = $dir/newcerts 
    certificate 
    = $dir/cacert.pem 
    private_key 
    = $dir/private/cakey.pem 
    default_days 
    = 365 
    default_md 
    = md5 
    preserve 
    = no 
    email_in_dn 
    = no 
    nameopt 
    = default_ca 
    certopt 
    = default_ca 
    policy 
    = policy_match 

    [ policy_match ] 
    countryName 
    = match 
    stateOrProvinceName 
    = match 
    organizationName 
    = match 
    organizationalUnitName 
    = optional 
    commonName 
    = supplied 
    emailAddress 
    = optional 


    生成CA公私鑰:
    openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf 

    會提示輸入密碼,當用它給用戶證書簽名時需要輸入,以避免其它人用它隨意產生用戶證書。
    -days表示有效期,因為它是根證書,所以時間一定要很長,否則由它生成的用戶證書容易過期。

    這時就生成了:
    P1
    cacert.pem
    V1
    private/cakey.pem

    查看信息用:
    openssl x509 -in cacert.pem -noout -text


    生成P2,V2,即Certificate Signing Request (CSR)
    執行:
    openssl req -new -nodes -out req.pem -config ./openssl.cnf
    這樣就生成了:
    P2
    req.pem
    V2
    key.pem

    用此命令查看:
    openssl req -in req.pem -text -verify -noout


    用CA的私鑰V1為P2簽名,即生成用戶證書
    執行:
    openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem
    生成用戶證書:
    cert.pem
    此時,會拷貝一份到newcerts目錄下。并會更新數據庫文件:index.txt以及serail文件
    用命令查看:
    openssl x509 -in cert.pem -noout -text -purpose | more

    如果要去除可讀信息部分,執行:
    mv cert.pem tmp.pem
    openssl x509 -in tmp.pem -out cert.pem


    安裝證書
    key.pem(V2)和cert.pem(用V1加密過的P2)安裝到服務端
    有的服務器需要把這兩個文件連為一個,可以執行:
    cat key.pem cert.pem >key-cert.pem

    cacert.pem安裝到客戶端

    Apache的配置:
    File          Comment
    /home/httpd/html Apache DocumentRoot
    /home/httpd/ssl      SSL-related files
    /home/httpd/ssl/cert.pem Site certificate
    /home/httpd/ssl/key.pem Site private key

    Stunnel的配置
    stunnel -p /etc/ssl/certs/key-cert.pem 


    編輯于08.4.26,另有兩個例子:
    用OpenSSL與JAVA(JSSE)通信
    Perl與Java的SSL通信示例
    posted on 2006-12-01 15:20 我愛佳娃 閱讀(15061) 評論(14)  編輯  收藏 所屬分類: SSL

    評論:
    # re: 用OpenSSL做自簽名的證書 2007-04-02 20:08 | 程徐彬
    你好,能幫個忙嗎,在LINUX中怎么安裝OPENSSL。我是剛學的,請多多指教!那些網上的幫助文檔,我用過了,可是不行,你能不能幫我整理一下,實在是太感謝了!我的QQ是214296442,請問你的是多少,以后向你請教一下!謝謝!  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2007-04-03 16:36 | 我愛佳娃
    我是這樣安裝的:
    # cd openssl-0.9.7e
    # ./config shared --prefix=/usr # Build shared library
    # make clean
    # make
    # make install
      回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-01-14 17:04 | lgc
    你好,請問一下上面的openssl。cnf文件指定了下面內容,
    [ CA_default ]
    serial = $dir/serial
    database = $dir/index.txt

    我做java與openssl通信的時,用ca證書對某個公鑰進行簽名時,提示找不到serial和index.txt。不知怎么解決,請指教,謝謝
      回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書[未登錄] 2008-01-14 22:13 | 我愛佳娃
    $dir變量是在開始時候賦值的呀:
    dir = .
    就是當前目錄,這兩個文件都要自己創建的,我的文章里寫得很清楚呀:
    echo '01' > serial
    touch index.txt
    這兩句就是創建文件的。

    我自己用這個文檔簽名過很多次了,不出任何問題。  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-04-23 00:53 | cici
    生成CA公私鑰:
    openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf
    為什么我只能生成 cacert.pem 而沒有private/cakey.pem
    謝謝!正在學習當中!!!謝謝  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-04-23 02:20 | cici
    哦,生成了cakey.pem ,沒注意,呵呵
    還有個問題請教:
    能解釋下最后的服務器和客戶端配置嗎?
    或者舉個代碼的例子實現?
    謝謝!!!!!!!  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-04-26 09:21 | 我愛佳娃
    嘿嘿,你沒仔細看博,我舉了代碼例子的:http://www.tkk7.com/alwayscy/archive/2006/12/04/85368.html  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-04-26 09:21 | 我愛佳娃
    # re: 用OpenSSL做自簽名的證書 2008-10-20 14:37 | kudiejlq
    對以下內容的疑問:

    SSL過程:需要兩對公私鑰(P1,V1),(P2,V2),假設通信雙方是A和B,B是服務器,A要確認和它通信的是B:
    A->B: hello
    B->A: 用V2加密過的P1(即用戶證書,A就用P2解密出P1)
    .......

    第二步,即B->A這一步,感覺有些問題。v2是CA的私鑰,如果p1是經由v2加過密的,那么考慮一種這樣的情況:客戶瀏覽器中沒有此CA的根證書,即沒有p2會怎么樣,它根本就不能解密出p1, 也無從知道是哪個ca頒布的證書。即使有該CA的根證書,在不知道P1的內容前,它怎么知道用這個P2(而不是P3或者P4)去解密出P1?所以,我認為CA沒有加密P1,只是用V2對P1進行的簽名。

    期待繼續討論:kudiejlq@126.com


      回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-10-20 14:40 | kudiejlq
    對以下內容的疑問:

    SSL過程:需要兩對公私鑰(P1,V1),(P2,V2),假設通信雙方是A和B,B是服務器,A要確認和它通信的是B:
    A->B: hello
    B->A: 用V2加密過的P1(即用戶證書,A就用P2解密出P1)
    .......

    第二步,即B->A這一步,感覺這里有些問題。v2是CA的私鑰,如果p1是經由v2加過密的,那么考慮一種這樣的情況:客戶瀏覽器中沒有此CA的根證書,即沒有p2會怎么樣? 它根本就不能解密出p1, 也無從知道是哪個ca頒布的證書。即使有該CA的根證書,在不知道P1的內容前,它怎么知道用這個P2(而不是P3或者P4)去解密出P1?所以,我認為CA沒有加密P1,只是用V2對P1進行了簽名。

    期待繼續討論:kudiejlq@126.com
      回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2008-12-11 08:45 | xingpo
    兄弟,我怎么感覺這文章看起來有些問題!不連慣!希望兄弟查看一下  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2010-08-19 09:59 | s
    good  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2010-12-24 03:16 | mf
    真的很不錯,澄清了我的一些誤解。  回復  更多評論
      
    # re: 用OpenSSL做自簽名的證書 2013-04-16 16:58 | 張飛
    @mf
    這也做的太簡陋了吧 這個評論框  回復  更多評論
      
    主站蜘蛛池模板: 日本高清在线免费| 中文字幕亚洲一区| 一二三四在线观看免费中文在线观看| 国产成人毛片亚洲精品| 热re99久久6国产精品免费| 亚洲真人无码永久在线观看| 久久亚洲高清综合| 免费在线观看h片| yellow视频免费看| 亚洲喷奶水中文字幕电影| 波多野结衣免费视频观看| 亚洲免费视频在线观看| 亚洲Av无码国产一区二区| 久久亚洲精品成人综合| 日韩免费观看的一级毛片| 精品国产污污免费网站| 亚洲Av无码国产一区二区| 久久久久久亚洲精品| 国产精品公开免费视频| 84pao强力永久免费高清| 日韩一区二区三区免费播放| 亚洲国产精品成人综合久久久| 亚洲av无码天堂一区二区三区| 又大又硬又爽又粗又快的视频免费| 国产亚洲福利精品一区二区| 亚洲欧洲国产综合| 中文字幕人成人乱码亚洲电影| 免费观看的a级毛片的网站| 在线观看肉片AV网站免费 | 亚洲国产精品嫩草影院| 亚洲春色在线视频| 大胆亚洲人体视频| 免费国产作爱视频网站| 国产免费AV片在线观看| 成人午夜影视全部免费看| 国产精品亚洲四区在线观看| 亚洲国产高清在线| 亚洲综合av永久无码精品一区二区| 日本免费网站观看| 一二三四影视在线看片免费| 一级毛片免费毛片一级毛片免费 |