• <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.¢%

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

            openssl生成pem

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

            openssl生成pem

            ?
            使用OpenSSL生成證書

            首先得安裝OpenSSL軟件包openssl,安裝了這個軟件包之后,我們可以做這些事情:
            o Creation of RSA, DH and DSA Key Parameters # 創建密鑰 key
            o Creation of X.509 Certificates, CSRs and CRLs # 創建證書
            o Calculation of Message Digests??????????????? #
            o Encryption and Decryption with Ciphers # 加密、解密
            o SSL/TLS Client and Server Tests??????? # SSL 服務器端/客戶端測試
            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
            這個命令將會生 成一個證書請求,當然,用到了前面生成的密鑰privkey.pem文件
            這里將生成一個新的文件cert.csr,即一個證書請求文件,你可以拿 著這個文件去數字證書頒發機構(即CA)申請一個數字證書。CA會給你一個新的文件cacert.pem,那才是你的數字證書。

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

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

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

            (1) 環境準備

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

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

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

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

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

            [ 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配置文件的路徑,有兩種方法可以達成目的:通過config命令選項;通過環境變量OPENSSL_CONF。這里我們 選擇環境變量的方式。

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

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

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

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

            [ 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

            萬事俱備,我們可以生成根證書了。注意設置好環境變量OPENSSL_CONF。

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

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

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

            (3) 給客戶頒發證書

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

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

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

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

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

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

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

            $ openssl ca -in testreq.pem

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

            生成的證書放在certs目錄,同時index.txt和serial的內容都發生了改變。

            (4) 吊銷證書

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

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

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

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

            # 生成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默認的,除非crl_extensions被指定在配置文件ca一節中。

            ?

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

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

            亚洲欧美国产精品专区久久| 亚洲AV无码久久寂寞少妇| 久久精品国产99国产电影网| 色成年激情久久综合| 97久久精品人人澡人人爽| 国产国产成人久久精品| 四虎国产精品成人免费久久| 国产精品久久久久jk制服| 精品久久久久久无码中文字幕| 97香蕉久久夜色精品国产 | 精品久久久久久| 久久久久久毛片免费看| 久久婷婷五月综合色高清| 久久精品国产第一区二区| 日韩精品久久久久久久电影蜜臀| 久久青草国产手机看片福利盒子 | 久久精品中文无码资源站| 久久精品欧美日韩精品| 久久伊人精品青青草原日本| 久久精品国产亚洲AV高清热| 亚洲精品tv久久久久久久久久| 国产精品久久久久久福利漫画| 一极黄色视频久久网站| 成人a毛片久久免费播放| 亚洲午夜久久久久妓女影院| 四虎久久影院| 精品人妻伦九区久久AAA片69| 久久久无码精品亚洲日韩按摩 | 久久99久久无码毛片一区二区| 久久婷婷五月综合97色一本一本| 亚洲七七久久精品中文国产| 国产免费久久久久久无码| 一本伊大人香蕉久久网手机| 久久久久亚洲AV无码永不| 精品综合久久久久久97| 久久人妻少妇嫩草AV蜜桃| 天天综合久久一二三区| 久久久精品国产Sm最大网站| 精品综合久久久久久88小说| 久久综合九色综合久99| 欧美大战日韩91综合一区婷婷久久青草 |