zoukankan      html  css  js  c++  java
  • OpenSSL命令

    Openssl Windows下编译过程
    1、下载openssl源代码以及相应的vc工程
    2、下载perl工具,如:ActivePerl-5.8.8.820-MSWin32-x86-274739.msi
    3、安装ActivePerl
    4、打开控制台程序,在openssl解压后的目录下执行Perl Configure VC-WIN32命令,注意,一定要在这个目录下执行该命令,否则找不到Configure文件,当然,你也可以指定完整的Configure文件路径。
    5、openssl目录下运行ms\do_ms.bat
    6、打开VC工程,batch build所有工程,输出的文件在out32dll里面
        
    Openssl 建立CA过程
    1、编译openssl
    2、生成目录树
    CA认证中心需要下列相关目录,请手动建立下列目录。
    CARoot
    |__certs
    |__newcerts
    |__private
    |__crl
    3、在private目录下生成随机数文件.rnd
    可以用C:\CARoot>edit private\.rnd这种方式生成
    4、生成文本数据库文件
    CARoot根目录下手动创建一个空的文本数据库文件index.txt
    5、生成证书序列号文件
    在CARoot下创建证书序列号文件serial,使用文本编辑器打开,在文件中输入"01";(文件内容无银号),
    或者使用命令$echo 01>serial (注意确认serial文件内容为01,并且无引号)。
    C:\CARoot>echo 01 > serial
    6、修改配置文件
    将$OPENSSL_HOME下的apps\openssl.cnf拷贝到CARoot目录下,然后修改CA的配置文件
    修改openssl.cnf文件
    将下面部分修改:
    [ CA_default ]
    dir  = ./demoCA  # Where everything is kept
    certs  = $dir/certs  # Where the issued certs are kept
    crl_dir  = $dir/crl  # Where the issued crl are kept
    database = $dir/index.txt # database index file.
    new_certs_dir = $dir/newcerts  # default place for new certs.
    certificate = $dir/cacert.pem  # The CA certificate
    serial  = $dir/serial   # The current serial number
    crl  = $dir/crl.pem   # The current CRL
    private_key = $dir/private/cakey.pem# The private key
    RANDFILE = $dir/private/.rand # private random number file
    修改后
    RANDFILE  = $ENV::HOME/private/.rnd
    (修改默认的随机数文件的位置)
    [ CA_default ]
    dir  = ./  # Where everything is kept
    certs  = $dir/certs  # Where the issued certs are kept
    crl_dir  = $dir/crl  # Where the issued crl are kept
    database = $dir/index.txt # database index file.
    new_certs_dir = $dir/newcerts  # default place for new certs.
    certificate = $dir/private/ca.crt  # The CA certificate
    serial  = $dir/serial   # The current serial number
    crl  = $dir/crl.cer  # The current CRL
    private_key = $dir/private/ca.key# The private key
    RANDFILE = $dir/private/.rnd # private random number file 
    7、产生CA私钥
    genrsa -out private\ca.key -rand private\.rnd 2048
    genrsa -out private\ca.key -rand private\.rnd -des3 2048  (生成des3加密的私钥文件)
    生成2048位的私钥文件,为保障安全使用第二种,用des3加密。
    8、生成CA证书
    req -new -x509 -days 3650 -key private\ca.key -out private\ca.crt -config openssl.cnf
    (查看证书文件:x509 -in cacert.pem -text -noout)
    -------------分界线后面是CA操作-----------------
    9、生成自签名证书请求,并签发证书
    生成密钥
    genrsa -out certs\cert.key -rand private\.rnd -des3 2048
    生成证书请求
    req -new -x509 -days 3650 -key certs\cert.key -out certs\cert.crt -config openssl.cnf
    签发自签名证书
    ca -ss_cert certs\cert.crt -config openssl.cnf -policy policy_anything -out certs\signedcert.crt
    10、生成普通证书请求,并签发证书
    生成密钥及证书请求
    req -newkey rsa:1024 -keyout certs\mycert.key -out certs\mycert.pem -config openssl.cnf
    签发证书
    ca -in certs\mycert.pem -out newcerts\mycert.cer -policy policy_anything -config openssl.cnf
    11、证书文件和密钥文件合并成pfx文件
    pkcs12 -export -in certs\cert.crt -inkey certs\cert.key -out certs\mypkcs12.pfx
    pkcs12 -export -in certs\ciecc-ipedo.cer -inkey certs\ciecc-ipedo.key -out certs\ipedo.pfx
    12、通过请求生成cer和key文件
    ca -in certs\certreq.txt -config openssl.cnf -policy policy_anything -out certs\newipedo.cer 
    13、启动OSCP服务器
    openssl ocsp -index ./index.txt -CA ./cacert.pem -rsigner ./cacert.pem -rkey ./private/cakey.pem -port 8888
    openssl ocsp -index ./index.txt -CA ./private/ca.crt -rsigner ./private/ca.crt -rkey ./private/ca.key -port 8888
    14、OCSP查询
    openssl ocsp -issuer demoCA/cacert.pem -cert ssl.crt/server.crt -host 0.0.0.0:8888
    1、吊销已签发的证书可以使用ca中的 -revoke 命令:
    openssl ca -revoke client.pem -keyfile ca.key -cert ca.crt
    这里可能会有一个问题,因为默认的情况下index.txt文件应该放在demoCA文件夹下面,因此需要在这里建立一个demoCA文件夹并建立一个index.txt文件,就可以了
    2、证书被吊销之后,还需要发布新的CRL文件:
    openssl ca -gencrl  -out ca.crl -keyfile ca.key -cert ca.crt
    验证证书的状态:
    verify -CAfile /usr/share/ssl/certs/ca-bundle.crt -purpose any -verbose amd.cer 
  • 相关阅读:
    java 接口的定义即实现
    进程的pv。。
    变量,常量,字符,字符串,数组的声明及初始化
    运算符重载
    数组大小的声明 1到100的素数
    第十二周助教总结(2021.4.192021.4.25)
    第十周助教总结(2021.4.52021.4.11)
    第十一周助教总结(2021.4.122021.4.18)
    助教周报(第一轮)王冰炜
    ThinkPHP3.1.2整合UCenter详解(一)
  • 原文地址:https://www.cnblogs.com/ahuo/p/2144332.html
Copyright © 2011-2022 走看看