• <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.¢% 閱讀(988) 評論(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

            久久国产乱子精品免费女| 7国产欧美日韩综合天堂中文久久久久 | 国产精品成人精品久久久 | 亚洲国产精品久久久久网站| 久久狠狠爱亚洲综合影院 | 精品久久久久久久久中文字幕| 狠狠色婷婷久久一区二区| 亚洲国产精品无码久久青草| 久久久久久一区国产精品| 久久人人爽人爽人人爽av| 久久av高潮av无码av喷吹| 久久精品国产欧美日韩| 精品无码久久久久久国产| 久久久久成人精品无码| 亚洲国产精品成人AV无码久久综合影院 | 日韩AV无码久久一区二区| 一本一本久久A久久综合精品| 久久久久久久精品成人热色戒| 久久人人爽人人爽人人片AV不 | 亚洲AV乱码久久精品蜜桃| 亚洲∧v久久久无码精品| 久久精品天天中文字幕人妻| 2022年国产精品久久久久| 国产成人精品久久亚洲| 色天使久久综合网天天| 久久精品国产男包| 精品久久久久久久无码| A级毛片无码久久精品免费| 久久精品成人一区二区三区| 一本久久a久久精品综合香蕉| 久久久免费精品re6| 精品久久久久久无码人妻热| 一级做a爰片久久毛片免费陪| 无码国产69精品久久久久网站| 久久精品免费观看| 国产精品久久久久久久app| 久久精品国产亚洲av高清漫画| 精品无码久久久久久久久久| 久久精品国产色蜜蜜麻豆| 999久久久国产精品| 久久这里只精品99re66|