zoukankan      html  css  js  c++  java
  • OpenSSL加密证书

    用于建立安全站点的工具,颁发证书,例如https,ftps等

    默认配置文件:

    [root@bogon CA]# cat /etc/pki/tls/openssl.cnf 
    [ CA_default ]
    dir             = /etc/pki/CA           #CA默认工作目录
    certs           = $dir/certs            #CA签发证书的位置
    crl_dir         = $dir/crl              #CA吊销证书的位置
    database        = $dir/index.txt        #CA颁发证书的索引,相当于目录
    new_certs_dir   = $dir/newcerts         #新生成证书的保存路径
    certificate     = $dir/cacert.pem       #CA的自签证书
    serial          = $dir/serial           #CA签署的序列号
    crlnumber       = $dir/crlnumber        #CA吊销的序列号
    crl             = $dir/crl.pem          #当前吊销证书的文件
    private_key     = $dir/private/cakey.pem#CA自己的私钥文件
    

     建立私有CA,并进行自我签署

    1.首先将配置文件中需要的文件及文件夹建立出来

    [root@bogon CA]# mkdir certs crl newcerts private
    [root@bogon CA]# touch index.txt serial crlnumber
    [root@bogon CA]# ls
    certs  crl  crlnumber  index.txt  newcerts  serial
    

     2.给CA签署的序列号文件一个开始编号(只需要第一次给)

    [root@bogon CA]# echo 01 > serial 
    [root@bogon CA]# cat serial 
    01
    

     3.生成CA私钥,存放位置对应配置文件,并将权限设置为600

    [root@bogon CA]# openssl genrsa -out private/cakey.pem 2048
    Generating RSA private key, 2048 bit long modulus
    ...................+++
    ...................+++
    e is 65537 (0x10001)
    [root@bogon CA]# chmod 600 private/cakey.pem 
    [root@bogon CA]# ls -l private/cakey.pem 
    -rw-------. 1 root root 1679 Jun  4 04:50 private/cakey.pem
    

     4.生成CA自签证书

      req:发起签署请求,当对应x509时表示自发自签。
      -new:新建证书
      -x509:专用于自签CA证书,为别人签署不需要使用
      -key:对应的私钥文件
      -out:生成文件,与配置文件对应
      -days:有效期

    [root@bogon CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 36500
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN         #国家
    State or Province Name (full name) []:beijing  #省
    Locality Name (eg, city) [Default City]:beijing  #城市
    Organization Name (eg, company) [Default Company Ltd]:abc  #公司
    Organizational Unit Name (eg, section) []:01   #部门
    Common Name (eg, your name or your server's hostname) []:www.abc.com  #服务器主机名
    Email Address []:1@abc.com  #管理员邮箱
    

    为其他人颁发证书

     1.在需要证书的服务器上创建秘钥文件,为了安全起见将权限改为600,这里用的httpd举例,并且这里的ssl目录是自己创建的

    [root@bogon CA]# openssl genrsa -out /etc/httpd/ssl/httpd.key 2048
    Generating RSA private key, 2048 bit long modulus
    ...................................................................+++
    .......+++
    e is 65537 (0x10001) 
    [root@bogon CA]# chmod 600 /etc/httpd/ssl/httpd.key 
    [root@bogon CA]# ls -l /etc/httpd/ssl/httpd.key 
    -rw-------. 1 root root 1679 Jun  4 17:07 /etc/httpd/ssl/httpd.key
    

     2.生成证书签署请求,csr代表请求文件

    [root@bogon CA]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 165
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:abc
    Organizational Unit Name (eg, section) []:abc
    Common Name (eg, your name or your server's hostname) []:www.abc.com
    Email Address []:1@q.com
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:       #添加密码
    An optional company name []:  #重复密码
    

     3.将签署请求文件发送给CA

    [root@bogon CA]# scp /etc/httpd/ssl/httpd.csr root@172.17.148.113:/tmp
    httpd.csr                   100% 1033     1.0KB/s   00:00    
    [root@bogon CA]# 
    

     4.在CA端签署收到的请求

      ca:签署
      crt:证书文件
      days:签署有效期

    [root@bogon CA]# openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 365
    Using configuration from /etc/pki/tls/openssl.cnf
    Check that the request matches the signature
    Signature ok
    Certificate Details:
            Serial Number: 1 (0x1)
            Validity
                Not Before: Jun  4 09:17:01 2018 GMT
                Not After : Jun  4 09:17:01 2019 GMT
            Subject:
                countryName               = CN
                stateOrProvinceName       = beijing
                organizationName          = abc
                organizationalUnitName    = abc88
                commonName                = www.abc.com
                emailAddress              = 1@q.com
            X509v3 extensions:
                X509v3 Basic Constraints: 
                    CA:FALSE
                Netscape Comment: 
                    OpenSSL Generated Certificate
                X509v3 Subject Key Identifier: 
                    7E:7C:E1:B2:10:17:32:D5:A5:1A:FC:E4:C2:DC:E0:48:36:67:A9:BF
                X509v3 Authority Key Identifier: 
                    keyid:C6:AA:7E:FE:18:6D:85:9E:B4:61:AE:4C:D3:1D:EB:61:3B:3C:36:C7
    Certificate is to be certified until Jun  4 09:17:01 2019 GMT (365 days)
    Sign the certificate? [y/n]:y
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    

     5.将签署完成的证书发送给客户端

    [root@bogon CA]# scp certs/httpd.crt root@172.17.148.255:/etc/httpd/ssl/
    

     6.查看签署证书的信息等

    [root@bogon CA]# cat index.txt   #查看这个目录文件
    V	190604091701Z		01	unknown	/C=CN/ST=beijing/O=abc/OU=abcx08x08/CN=www.abc.com/emailAddress=1@q.com 
    #v表示已签署 R已吊销
    [root@bogon CA]# openssl x509 -in certs/httpd.crt -noout [ -text | -serial | -subject ]
    text,显示全部
    serial显示序号
    subject显示标题
    

     7.为了安全起见将,csr文件删除

    [root@bogon CA]# rm -rf /tmp/httpd.csr      #CA端
    [root@aaa CA]# rm -rf /etc/httpd/ssl/httpd.csr    #请求端
    

     吊销证书

    1.获取要吊销的证书的序列号及主题信息,一般在客户端做

    [root@bogon CA]# openssl x509 -in certs/httpd.crt -noout -serial -subject
    serial=01
    subject= /C=CN/ST=beijing/O=abc/OU=abcx08x08/CN=www.abc.com/emailAddress=1@q.com
    

    2.根据客户端的serial和subject信息对比是否与CA端index.txt文件中的信息是否一致

    [root@bogon CA]# cat index.txt
    V	190604091701Z		01	unknown	/C=CN/ST=beijing/O=abc/OU=abcx08x08/CN=www.abc.com/emailAddress=1@q.com
    

     3.如果一致,则吊销

    [root@bogon CA]# openssl ca -revoke newcerts/01.pem   #在新生成证书目录下有相对应序号的证书文件
    Using configuration from /etc/pki/tls/openssl.cnf
    Revoking Certificate 01.
    Data Base Updated
    

     4.生成吊销证书编号(只有在第一次吊销的时候使用)

    [root@bogon CA]# echo 01 > crlnumber 
    [root@bogon CA]# cat crlnumber 
    01
    

     5.跟新证书吊销列表,随便写一个文件

    [root@bogon CA]# openssl ca -gencrl -out diaoxiao.crl
    

     6.查看吊销列表

    [root@bogon CA]# openssl crl -in diaoxiao.crl -noout -text
    
    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    html5分割上传实现超大文件无插件网页上传问题
    html5分割上传实现超大文件无插件网页上传方法
    spring JDBCTemplate 批量操作
    spring JDBCTemplate 查询操作
    spring JDBCTemplate 修改和删除
    spring JDBCTemplate 添加操作
    spring JDBCTemplate 概念和准备
    spring AOP 基于配置文件
    spring AOP 基于注解
    使用 流量统计 定位网络故障
  • 原文地址:https://www.cnblogs.com/forlive/p/9134486.html
Copyright © 2011-2022 走看看