openssl相关指令及生成私有证书

来源:互联网 发布:2017淘宝天猫商家数目 编辑:程序博客网 时间:2024/04/30 21:27

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,又包含私钥,所以只能做测试用。

                           

        

        

1 0
原创粉丝点击