• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            openssl生成pem

            Posted on 2010-05-14 10:05 S.l.e!ep.¢% 閱讀(994) 評論(0)  編輯 收藏 引用

            openssl生成pem

            ?
            使用OpenSSL生成證書

            首先得安裝OpenSSL軟件包openssl,安裝了這個軟件包之后,我們可以做這些事情:
            o Creation of RSA, DH and DSA Key Parameters # 創(chuàng)建密鑰 key
            o Creation of X.509 Certificates, CSRs and CRLs # 創(chuàng)建證書
            o Calculation of Message Digests??????????????? #
            o Encryption and Decryption with Ciphers # 加密、解密
            o SSL/TLS Client and Server Tests??????? # SSL 服務(wù)器端/客戶端測試
            o Handling of S/MIME signed or encrypted Mail # 處理簽名或加密了的郵件

            1、生成RSA密鑰的方法

            openssl genrsa -des3 -out privkey.pem 2048
            這個命令會生成一個2048位的密鑰,同時有一個des3方法加密的密碼,如果你不想要每次都輸入密碼,可以改成:
            openssl genrsa -out privkey.pem 2048
            建議用2048位密鑰,少于此可能會不安全或很快將不安全。
            2、生成一個證書請求
            openssl req -new -key privkey.pem -out cert.csr
            這個命令將會生 成一個證書請求,當(dāng)然,用到了前面生成的密鑰privkey.pem文件
            這里將生成一個新的文件cert.csr,即一個證書請求文件,你可以拿 著這個文件去數(shù)字證書頒發(fā)機構(gòu)(即CA)申請一個數(shù)字證書。CA會給你一個新的文件cacert.pem,那才是你的數(shù)字證書。

            如果是自 己做測試,那么證書的申請機構(gòu)和頒發(fā)機構(gòu)都是自己。就可以用下面這個命令來生成證書:
            openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
            這個命令將用上面生成的密鑰privkey.pem生成一個數(shù)字 證書cacert.pem

            3、使用數(shù)字證書和密鑰
            有了privkey.pem和cacert.pem文件后就可以在自己的程序中 使用了,比如做一個加密通訊的服務(wù)器

            -------------
            OpenSSL建立自己的CA

            (1) 環(huán)境準(zhǔn)備

            首先,需要準(zhǔn)備一個目錄放置CA文件,包括頒發(fā)的證書和CRL(Certificate Revoke List)。
            這里我們選擇目錄 /opt/ca。

            然后我們在/opt/ca下建立兩個目錄,certs用來保存我們的CA頒發(fā)的所有的證書的副本;private用來保存CA證書的私鑰匙。

            CA的私鑰匙很重要,至少需要2048位長度。建議保存在硬件里,或者至少不要放在網(wǎng)絡(luò)中。
            除了生成鑰匙,在我們的CA體系中還需要創(chuàng)建三 個文件。第一個文件用來跟蹤最后一次頒發(fā)的證書的序列號,我們把它命名為serial,初始化為01。第二個文件是一個排序數(shù)據(jù)庫,用來跟蹤已經(jīng)頒發(fā)的證 書。我們把它命名為index.txt,文件內(nèi)容為空。

            $ mkdir /opt/myca
            $ cd /opt/myca
            $ mkdir certs private
            $ chmod g-rwx,o-rwx private
            $ echo "01" > serial
            $ touch index.txt

            第三個文件是OpenSSL的配置文件,創(chuàng)建起來要棘手點。示例如下:

            [ ca ]
            default_ca = myca

            [ myca ]
            dir = /opt/myca
            certificate = $dir/cacert.pem
            database = $dir/index.txt
            new_certs_dir = $dir/certs
            private_key = $dir/private/cakey.pem
            serial = $dir/serial

            default_crl_days= 7
            default_days = 365
            default_md = md5

            policy = myca_policy
            x509_extensions = certificate_extensions

            [ myca_policy ]
            commonName = supplied
            stateOrProvinceName = supplied
            countryName = supplied
            emailAddress = supplied
            organizationName= supplied
            organizationalUnitName = optional

            [ certificate_extensions ]
            basicConstraints= CA:false

            我們需要告訴OpenSSL配置文件的路徑,有兩種方法可以達(dá)成目的:通過config命令選項;通過環(huán)境變量OPENSSL_CONF。這里我們 選擇環(huán)境變量的方式。

            $ OPENSSL_CONF="/opt/myca/openssl.cnf"
            $ export OPENSSL_CONF

            (2) 生成根證書(Root Certificate)

            我們需要一個證書來為自己頒發(fā)的證書簽名,這個證書可從其他CA獲取,或者是自簽名的根證書。這里我們生成一個自簽名的根證書。

            首先我們需要往配置文件里面添加一些信息,如下所示,節(jié)名和命令行工具的命令req一樣。我們把所有必要的信息都寫進配置,而不是在命令行輸入,這 是唯一指定X.509v3擴展的方式,也能讓我們對如何創(chuàng)建根證書有個清晰的把握。

            [ req ]
            default_bits = 2048
            default_keyfile = /opt/myca/private/cakey.pem
            default_md = md5
            prompt = no
            distinguished_name = root_ca_distinguished_name
            x509_extensions = root_ca_extensions
            [ root_ca_distinguished_name ]
            commonName = My Test CA
            stateOrProvinceName = Beijing
            countryName = CN
            emailAddress = yingyuan@staff.sina.com.cn
            organizationName = Root Certification Authority
            [ root_ca_extensions ]
            basicConstraints = CA:true

            萬事俱備,我們可以生成根證書了。注意設(shè)置好環(huán)境變量OPENSSL_CONF。

            $ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM

            驗證一下我們生成的文件。

            $ openssl x509 -in cacert.pem -text -noout

            (3) 給客戶頒發(fā)證書

            在給客戶頒發(fā)證書之前,需要客戶提供證書的基本信息。我們另外開啟一個終端窗口,使用默認(rèn)的OpenSSL配置文件(不要讓之前的 OPENSSL_CONF干擾我們,那個配置是專門用來生成根證書的)。

            命令和我們生成根證書的類似,都是req,不過需要提供一些額外的信息。如下:

            $ openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM

            有兩次提示要口令,第一次的口令用來加密私鑰匙testkey.pem,第二次口令一般被OpenSSL忽略。
            結(jié)果生成兩個文 件:testkey.pem,私鑰匙;testreq.pem,請求信息,其中包括公鑰匙。

            我們來看看testreq.pem都有哪些信息?

            $ openssl req -in testreq.pem -text -noout

            現(xiàn)在,我們可以把testreq.pem提交給我們的CA生成證書了。
            為了方便起見,我們假定testreq.pem在/opt/myca /private/中。

            $ openssl ca -in testreq.pem

            有三次提示,一次是問你CA的私鑰匙密碼,兩次是確認(rèn),輸出的結(jié)果就是為客戶頒發(fā)的證書。
            可以通過batch選項取消命令提示,可通過 notext選項取消證書的輸出顯示。
            此外,還可以一次給多個客戶頒發(fā)證書,方法是用 infiles選項替換in選項,不過這個選項必須放在最后,因為此后的任何字符均被處理為文件名稱列表。

            生成的證書放在certs目錄,同時index.txt和serial的內(nèi)容都發(fā)生了改變。

            (4) 吊銷證書

            吊銷證書的操作很簡單,我們將待吊銷的證書從證書的保存位置拷貝到另外一個目錄,然后運行ca命令就可以。
            主要設(shè)置好 OPENSSL_CONF環(huán)境變量。

            $ cp certs/01.pem testcert.pem
            $ openssl ca -revoke testcert.pem

            輸入CA私鑰匙的密碼就可以。

            為了使你的吊銷操作讓別人知道,你可以生成CRL(Certificate Revoke List),然后公布到網(wǎng)上去。
            由于每個頒發(fā)的 證書都有一個過期時間,一旦證書過期了,就可以把該證書從CRL中刪除。因為這時候在不在CRL中已經(jīng)無所謂了。

            # 生成CRL列表
            $ openssl ca -gencrl -out exampleca.crl

            # 查看CRL列表信息
            $ openssl crl -in exampleca.crl -text -noout

            # 驗證CRL列表簽名信息
            $ openssl crl -in exampleca.crl -noout -CAfile cacert.pem

            可以看到CRL的版本號為1,這是OpenSSL默認(rèn)的,除非crl_extensions被指定在配置文件ca一節(jié)中。

            ?

            文章一:http://blog.chinaunix.net/u/11234/showart_290705.html

            文章二:http://blog.chinaunix.net/u/11234/showart_291316.html


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久青青草原综合伊人| 99热成人精品热久久669| 久久婷婷五月综合97色直播| 99久久精品免费看国产| 久久久免费观成人影院| 亚洲国产另类久久久精品| 国产综合久久久久久鬼色| 免费一级做a爰片久久毛片潮| 久久99这里只有精品国产| 精品久久久久久国产| 久久天天躁狠狠躁夜夜不卡| 色综合合久久天天综合绕视看 | 国产99久久精品一区二区| 国产精品一区二区久久精品无码| 日韩欧美亚洲综合久久| 国产精品伦理久久久久久| 日本强好片久久久久久AAA| 久久一区二区三区免费| 久久99国产精一区二区三区| 国产成人久久精品一区二区三区 | 久久久久亚洲av综合波多野结衣| 久久er热视频在这里精品| 久久久亚洲欧洲日产国码是AV| 国产精品成人99久久久久| 久久大香香蕉国产| 亚洲精品tv久久久久久久久 | 久久精品成人免费网站| 久久久无码精品亚洲日韩按摩 | 麻豆久久| 性欧美大战久久久久久久| 精品久久久久久久中文字幕| 久久精品一区二区国产| 99久久er这里只有精品18| 久久亚洲中文字幕精品有坂深雪| 久久久久久久久久久久久久| 亚洲国产天堂久久综合| 中文字幕精品无码久久久久久3D日动漫 | 欧美精品国产综合久久| 亚洲国产成人久久精品99 | 一本一本久久aa综合精品| 久久久久久精品久久久久|