openssl相關指令及生成私有證書

openssl:它支持ssl(Secure Sockets Layer,v2/v3),TLS(Transport Layer Secure,v1)。這套工具集的應用範圍非常之廣,包括:

  •   創建和管理私鑰、公鑰。
  •   公鑰加密操作。
  •   創建X.509證書(Certificate),證書請求(CSR),證書撤銷(CRL)。
  •   計算消息摘要(MD5,SHA-1等)。
  •   使用密碼加解密(Encryption/Decryptionwith Ciphers)。
  •   SSL/TLS 客戶端/服務器測試。
  •   處理S/MIME簽名以及加密郵件。
  •   等等.

                           

openssl組成包括三部分:

                            libcrypto:加密庫

                            libssl:TLS/SSL的實現(基於會話實現了身份認證、數據機密性、會話完成性的SSL庫)

                            openssl:全天候、多用途的命令行工具,可以模擬實現私有頒發機構

                           

openssl:

         命令格式:openssl command [command_opts ] [ command_args ]

         openssl包含衆多子命令,可使用幫助來查看子命令以及子命令的選項:

       查看openssl的幫助:

                   openssl -h:查看所有子命令

                   openssl rsa -h:查看rsa子命令的選項

                  

       查看openssl的版本:

         openssl  version

         openssl  version  -a

    

         openssl包含的常用子命令有:

             dgst:生成消息摘要

              openssl  dgst  [算法]  /PATH/TO/FILE

                  

              speed:測試算法的性能

              openssl  speed  [算法]

                           

              genrsa:生成RSA私有密鑰

              openssl  genrsa  -out  /PATH/TO/OUT_FILE  [NUMBITS]

                           

              gendsa:生成DSA私有密鑰

              openssl  gendsa -out  /PATH/TO/OUT_FILE  [NUMBITS]

                           

               genpkey:生成私鑰

              openssl  genpkey  -out  /PATH/TO/OUT_FILE  -cipher

                            -cipher:私鑰加密存放

                           

              ca:請求頒發證書

              openssl  ca  -days DAYS -in /PATH/TO/CSR_FILE -out /PATH/TO/CRT_FILE

                  

               passwd:計算密鑰哈希碼

                    查看幫助:

                   $whatis  passwd    

                                               passwd               (1)  - update user's authentication tokens

                                               passwd               (5)  - password file

                                              passwd [sslpasswd]   (1ssl) - compute password hashes

                   $man  sslpasswd

                                              

              openssl  passwd  [-crypt] [-1] [-salt salt_string] [password]

                           

              req:PKCS#10證書請求頒發和證書生成工具

                   PKCS(Public-KeyCryptography Standards)有很多種類,openssl工具集中也有一系列名爲pkcs#x的工具。常見的如:

                            PKCS#7,加密信息語法標準(CryptographyMessage Syntax Standard)。用於簽名或加密消息,是S/MIME的基石。

                            PKCS#10,證書籤署請求(CSR)。

                            PKCS#12,個人信息交換語法標準(PersonalInformation Exchange Syntax Standard)。

                           

         openssl   req   [options]:

                                     -new

                                               生成新的證書請求。如果沒有-key 參數,則會生成新的RSA私鑰。

                                     -keyfile

                                               私鑰文件。

                                     -nodes

                                               如果要生成私鑰,則不對私鑰加密(將命令理解爲 no des)。

                                     -x509

                                               生成一個自簽名證書,而非一個證書籤署請求。

                                     -text

                                               以文本方式查看證書內容

                                    

                   生成證書籤署請求(CSR)與生成證書

                                     方法1 :用opensslgenrsa生成私鑰,用openssl req生成證書籤署請求:

                                               $openssl genrsa -out s.key 1024

                                               $openssl req -new -key s.key -out s.csr

 

                                      方法2 :用req生成私鑰,並生成證書籤署請求:

                                               $openssl req -newkey rsa:1024 -keyout s.key -out s.csr -nodes

                                                    注意,這裏加了-nodes選項,否則要求輸入密碼保護私鑰。

                                                                          

                                       方法3 跳過CSR,直接生成證書:

                                               $openssl req -x509 -nodes -days 365 \

                                                   -subj'/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com' \

                                                   -newkeyrsa:1024 -keyout s.key -out s.crt

                                                                                                      

              x509:私有證書頒發管理命令

                     生成私有CRT:

                   openssl  x509 -req -days DAYS -in /PATH/TO/CSR_FILE -signkey /PATH/TO/KEY_FILE -out/PATH/TO/CRT_FILE

                     查看私有CRT:

                   openssl  x509 -text -in /PATH/TO/CRT_FILE

                           

              s_client:作爲SSL/TLS客戶端運行

                     openssl  s_client [-connect host:port] [-verify depth] [-cert filename] [-certformDER|PEM] [-key filename] [-CApath directory] [-CAfile filename]

                  

               s_server:作爲SSL/TLS服務器運行

                      openssl s_server [-accept port] [-context id][-verify depth][-Verify depth] [-crl_check] [-crl_check_all] [-cert filename][-key keyfile] [-CApath directory] [-CAfile filename]

                           

                            s_server/s_client測試證書

                                                         用s_server建立服務器:

                                  $ openssl s_server -cert s.crt -key s.key -www

                                                        用s_client作爲客戶端:

                                  $ openssl s_client -connect localhost:443

                                                                  

               s_time:SSL連接的性能測試。

                    openssl  s_time -connect www.google.com:443

                                    

               enc:加密

                   openssl enc -des3 -salt -in plaintext.doc -out ciphertext.bin

                  

建立本地私有證書頒發機構:

n  切換到CA證書目錄下

         cd/etc/pki/CA

n  2.根據配置文件(/etc/pki/tls/openssl.cnf)創建文件夾和相應文件

         mkdir newcerts private

         touch crl.pem crlnumber index.txt serial

n  3.serial文件存放發放的證書的編號,爲serial建立初始編號

         echo 01 > serial

n  4.生成RSA私鑰cakey.pem:

         (umask0077;openssl genrsa -out /PATH/TO/KEYFILE NUMBITS)  注意:生成的私鑰文件權限需爲0600

n  5.生成CA證書cacert.pem:

         openssl  req -new -x509 -days 500 -key ./private/cakey.pem -out cacert.pem

n  6.生成CA證書頒發請求cacert.csr:

         openssl  req -new -x509 -days 500 -key ./private/cakey.pem -out cacert.csr

n  7.生成CA證書CRT cacert.crt:

         openssl  x509 -req -days 500 -in cacert.csr -signkey ./private/cakey.pem -out cacert.crt

        根據提示輸入相關的證書註冊信息,注意主機名一定要和當前主機名一致;

        設置證書註冊信息的默認值:vim /etc/pki/tls/openssl.cnf

                     在[req_distinguished_name]下填入相應的信息即可。

         查看證書CRT:

         openssl  x509 -text -in cacert.crt

 

第三方請求CA頒發證書:

n  1.創建第三方證書存放目錄:

         cd/etc/httpd

         mkdirssl

         cd./ssl

n  2.生成第三方私鑰:

         openssl  genrsa -out httpd.pem

n  3.生成第三方CSR:

        openssl req -new -x509 -key httpd.pem -out httpd.csr

n  4.請求CA頒發證書:

         openssl  ca -days 500 -in httpd.csr -out httpd.crt

         根據提示手動輸入請求認證信息,主機名應當和當前主機名保持一致。

n  5.查看CA頒發中心記錄:

         cd/etc/pki/CA

         cat  serial :serial 裏保存的序號已經自增1了

          ls  newcerts:newcerts文件夾裏生成了01.pem的文件,它記錄的是爲httpd頒發的證書的相關信息

                  

生成測試證書

         在/etc/pki/tls/certs/目錄下,執行make *.crt/*.pem/*.csr/*.key等命令,根據目標生成文件的後綴名可以快速生成相應的測試用的證書

         如生成的*.crt證書中既包含CRT,又包含私鑰,所以只能做測試用。

                           

        

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章