openssl命令分类(最完整)

openssl命令分类(最完整)
openssl命令分类(最完整)

声明:

1.此文档中,证书生成时口令、密码一律是:12345.方便排查;

2.另外,所有命令均可在Openssl在线文档中查询;

3.本文档,支持命令检索,所有命令首字母大写;

一、证书类

1.1证书申请:Req

1)Req

生成和处理PKCS10证书,证书申请文件;

用法:

Openssl req [-inform PEM|DER ] [-in filenames] [-passin arg] [-config filename] [batch]

[-newkey rsa:bits] [-new] [-rand file:rand dat] [-text] [-days] [-x509]

[-subj arg /CN=china/OU=tt/O=ab/CN=fxx] [-utf8] [-noout] [-keyout] [-pubkey]

其中,

-inform 指定输入格式;

-newkey rsa:bits 用于生成新的rsa密钥以及证书请求;默认名称为privkey.pem;

-new 生成新的证书请求以及私钥,默认1024bits

-rand 随机数种子文件;-rand file: rand.dat;

-config file 指定证书请求模板,默认为https://www.360docs.net/doc/b015851417.html,f;

-subj arg 制定证书请求的用户信息;不指定,则要求输入;-subj /CN=cn/OU=t/O=a;

-utf8 指定为utf8,默认为ASCII编码;

-batch 不询问用户请求;

-newhdr 在生成的PEM证书请求文件头尾包含NEW字样;有些CA需要;

-pubkey 获取证书请求中的公钥信息;

-modulus 输出请求中的模数;

-text 打印证书信息;

-verify 验证证书请求;

-x509 生成自签名证书;

-md5/4/2/sha1/mdc2 生成自签名证书时,指定摘要算法;

-days生成自签名证书的有效期;

例子:

#生成证书申请和私钥

> req -new -batch -out myreq.pem #只有-new需要输入subj等;加入-batch则不

需要输入;

> req -newkey rsa:1024 -out myreq1.pem -keyout reqkey.pem

> req -new -subj /CN=china/OU=tt/O=ab/CN=dzr

#查看公钥信息;可见其中包含证书请求;

> req -in myreq.pem -pubkey -out pubkey.pem

> req -in myreq.pem -pubkey -text

> req -in myreq.pem -text

> req -in myreq.pem -modulus #所谓模数

> req -in pubkey.pem -modulus

> req -in pubkey.pem -text

#生成自签名证书

> req -in myreq.pem -x509 -key reqkey.pem -out mycert.pem -days 300 -text -md5 1.2消息格式:PKCS7

1)pkcs7

加密消息语法,各种消息存放的格式标准;包括数据、签名、摘要、数字信封等;用于处理DER或者PEM格式的pkcs7文件

用法:

Openssl pkcs7 [-inform PEM][-outform] [-in ][-print_certs][-text][noout]

其中,

-print_certs 打印证书或CRL,每行打出持有者和颁布者;

-text 打印相关信息;

例子:

#没有pkcs7文件,可通过crltopkcs7生成;

Openssl> pkcs7 -in myreq.pem -outform DER -out myreq_pkcs7.der

Openssl> pkcs7 -in file.pem print_certs -out certs.pem

1.3 个人证书:PKCS12

1)pkcs12

工具,用于生成和分析pkcs12文件

用法:

Openssl pkcs12 [export][ chain][inkey][cedrtfile][CApath][CAfile][name][out]

[aes128][des3][password][rand]

其中,

-export 输出pkcs12文件;

-chain 添加证书链;

-inkey 指定私钥文件;

-certfile file添加file中所有证书文件;

-CApath arg 指定CA文件目录;

-CAfile arg 指定CA文件;

-name 指定证书和私钥的友好名;

-in 指定私钥和证书读取的文件,为PEM格式;

-out 指定输出的pkcs12文件,默认为标准输出;

-nomacver 读取时不验证MAC;

-clcerts 只输出客户证书,不包含CA证书;

-nokeys 不输出私钥;

-info 输出pkcs12结构信息;

-des3/ase128 私钥加密算法;

-nodes 不对私钥加密;

-maciter 加强完整性保护,多次计算MAC;

-descert 用3DES加密pkcs12文件,默认RC2-40;

-keysig 设置私钥只能用于签名;

例子:

#生成pkcs12,不带CA证书

> pkcs12 -export -inkey reqkey.pem -in mycert.pem -out mypkcs12.pfx

> pkcs12 -export -inkey CA_key.pem -in CAreq_cert.pem -out myPkcs12.pfx

#生成,带CA证书

> pkcs12 -export -inkey CA_key.pem -in CAreq_cert.pem -CAfile ../cacert.pem -chain -out ocsp1.pfx

#信息分离出来写入文件;

> pkcs12 -in myPkcs12.pfx -out certandkey.pem

#显示pkcs12信息

> pkcs12 -in myPkcs12.pfx -info

1.3 转换证书:PKCS8

10.pkcs8

私钥转换工具,pkcs8格式

用法:

Openssl pkcs8 [inform ][outform][in ][passin][out][topk8][noiter][v2][embed]

其中,

-topk8 输出pkcs8文件;

-noiter MAC保护计算次数为1;

-nooct 不采用8位组表示私钥;

-embed 采用嵌入式DSA参数格式;

-v2 alg 采用PKCS5 v2.0 并指定加密算法;

例子:

#私钥转换为pkcs8文件;比较前后文件内容,的确不同的格式;

Openssl> pkcs8 -in CA_key.pem -topk8 -out mypkcs8key.pem

#以明文存放

> pkcs8 -in CA_key.pem -topk8 -nocrypt -out my8key_plain.pem

1.5证书中心:Ca

1)Ca

一个小型的CA系统,签发证书请求和生成CRL,维护一个已签发证书状态的文本数据库。用法:

Openssl ca [verbose][config][name][gendcrl][revoke][crl_reason][crl_hold][crl_compromise] [crl_CA_compromise][subj][crldays][crlhousrs][days][md][policy]

其中,

-verbose 打印附加信息;

-config 指定配置文件;默认安装,配置文件在/usr/local/ssl路径下;

-name section替换配置文件default_ca所代表的内容;

-gencrl 生成CRL文件;

-revoke file 撤销证书,file文件中包含了证书;

-crl_reason reason 设置CRLv2撤销原因;

-policy arg 指定CA策略;

-utf8 表明输入必须是utf8编码;

-keyfile 指定签发证书的私钥文件;

-key 指定私钥解密口令;

-cert file 指定CA文件;

-in 输入证书请求文件;

-out 输出文件名;

-notext 不输出文本格式证书信息;

-outdir 设置输出路径;

-infiles 处理多个路径请求文件,必须放在最后;

-ss_cert file 指定需要由CA签发的自签名证书;

-preserveDN 将证书中的DN顺序由配置文件来决定;如设置此项,则顺序与请求文件一致;-noemailDN 设置此项,则生成证书不会包含持有者DN,而是放在了扩展项里;

-batch 批处理,不询问客户信息;

-md arg 设置摘要算法,md5/sha/sha1/mdc2;

-utf8 表示输入必须为utf8编码,默认为ASCII编码;

例子:

#/以下所有命令必须在apps目录下运行;(不看清,后面有教训!)

#1.建立CA

CA.sh -newca,默认,配置文件在/usr/local/ssl,可先在apps目录的CA.sh建立环境

#可以生成的demoCA/目录结构,包含项目较多;

#其中CA index:

#2.生成证书请求

#用-batch属性,导致后来签发失败;且看;(以后务必在apps目录进行)

Openssl> req -new -batch -out CA_req.pem -keyout CA_key.pem

#参考Req一节,执行如下

> req -in CA_req.pem -text

#证书申请自签名后的样子;比较可以发现,自签名证书和证书请求间的区别;

>req -in CA_req.pem -x509 -key CA_key.pem -out CAreq_cert.pem -days 300 -text -md5

#3签发证书

Openssl> ca -config /usr/local/ssl/https://www.360docs.net/doc/b015851417.html,f -name CA_default -days 365 -md sha1 -policy policy_anything -cert demoCA/cacert.pem -in CA_req.pem -out CA_cert.pem -preserveDN -noemailDN -subj /CN=Cn /O=JS/OU=WmX/cn=michaDong -extenstions myexts(好长)

#简洁版:

#正确执行签发;

> ca -in CA_req1.pem -cert ./demoCA/cacert.pem -out CA_cert.pem

#比较签发前的证书请求,可见签发加入了X509v3 extensions;和自签名证书类似;

#4.撤销证书

#按上面步骤,在生成一个CA_cert2.pem 证书;

> req -new -out CA_req2.pem -keyout CA_key2.pem

> ca -in CA_req2.pem -out CA_cert2.pem

#可以查看文本数据库indextxt,比较前后变化

> ca -revoke CA_cert2.pem

#生成CRL,设置原因、挂起处理方法;

> ca -gencrl -out CA_crl.crl

1.6 证书吊销:Crl/Crl2pkcs7

1)Crl

工具,用于处理PEM或DER格式的CRL文件

用法:

Openssl crl [ inform] [text][in ] [hash][ issuer][lastupdate][CAfile][CApath dir]

其中,

-noout 不打印CRL文件内容;

-hash 打印值;

-issuer 打印颁布者DN;

-lastupdate 上次发布时间;

-CAfile 指定CA文件;

-CApath dir 指定多个CA文件路径,文件名为xxx.0,xxx为特有摘要值;

例子:

#参考CA,生成CRL文件继续

#在apps目录下进行;

> ca -gencrl -out CA_crl.pem

---------------------------------------

#没有文件demoCA/crlnumber;CA自动建立时,并没有生成该文件;

#手动创建一个试试;

$ sudo touch demoCA/crlnumber

$ chmod a+w demoCA/crlnumber

$ sudo cat 2 > demoCA/crl number

> ca -gencrl -out CA_crl.pem

#设置2太短,出错,最好是两位数如23就可以了(有待更多探索);还有格式是crl;----------------------------------------

> ca -gencrl -out CA_crl1.crl

#显示CRL信息

Openssl> crl -in CA_crl1.crl -text -issuer -hash -lastupdate -nextupdate

#验证CRL

> crl -in CA_crl.crl -CAfile demoCA/cacert.pem -text

#通过指定CA路径验证;在demoCA中建立CAfiles;

> x509 -in demoCA/cacert.pem -hash

#在CAfiles下建立b07cc20a.0文件,内容为demoCA/cacert.pem内容;

#验证CRL

> crl -in CA_crl.crl -CApath demoCA/CAfiles -noout

2)Crl2pkcs7

根据CRL或者证书生成pkcs7消息;

用法:

Openssl crl2pkcs7 [inform][in ] [certfile][nocrl]

其中,

-certfile filename 可以指定证书,PEM证书可以包含多个证书;可多次使用次选项;

-nocrl不处理crl;设置此项,读取时忽略CRL信息;

例子:

#只有CRL信息;

> crl2pkcs7 -in CA_crl1.crl -out CA_crlpkcs7.pem

#包含CRL信息和证书信息;

> crl2pkcs7 -in CA_crl1.crl -certfile demoCA/cacert.pem -out CA_crlcertpkcs7.pem

#只包含证书信息;

> crl2pkcs7 -in CA_crl1.crl -certfile demoCA/cacert.pem -out CA_certpkcs7.pem -nocrl 1.7强大证书工具:X509

1)X509

多用途的证书工具,显示证书信息、转换证书格式、签名证书请求及改变证书信任设置;用法:

Openssl x509 [ -inform DER|PEM|NET] [ -CAform ][-serial][-hash][-subject][-out][-issuer] [-email][-enddate][-pubkey][-ocspid][-trustout][-clrreject][-addtrust][-signkey filemname]

[-x509toreq] [-req][-CA][-set_serrial][-text][-nameopt option]

[-CAcreateserail]

其中,

-subject_hash 显示证书摘要号,同-hash;

-subject 显示证书持有者DN;

-issuer 显示证书颁布者的DN;

#还有打印输出相关,

-serial 显示序列号;

-enddate 到期时间;

-purpose 证书用途;

-modulus 证书公钥模数;

-email 显示邮件地址;

-pubkey 输出公钥;

-fingerprint 打印微缩图;

-C 以C语言格式显示信息;

-trustout 输出可信任证书;

-text 打印证书信息;

#特殊处理

-req 输入为证书请求,需要进行处理!

-x509toreq 根据证书来生成证书请求,需要指定签名私钥;和req是逆过程;

-exfile filename 指定包含证书扩展名的文件;

-CA设置CA文件;必须为PEM格式;

-CAkey 设置CA私钥文件,必须为PEM格式;

-CAserial 指定序列号文件;

-set_serial 设置证书序列号;

-md2/5/sha1/mdc2;

例子:

#转换为证书请求

Openssl> x509 -in CA_cert.pem -x509toreq -signkey CA_key.pem -out CA_certoreq.pem #控制打印格式

> x509 -in CA_cert.pem -nameopt RFC2253 -C

#扩展项

> x509 -req -in CA_req.pem -extfile https://www.360docs.net/doc/b015851417.html,f -extensions v3_usr -CA casert.pem -CAkey key.pem -CAcreateserial

#打印微缩图

> x509 -in CA_cert.pem -text -fingerprint

1.8证书验证:Verify

1)V erify

证书验证工具

用法:

Openssl verify [CApath][CAfile][purpose][untrusted][help][issuer_checks][verbose]

[crl_check] certificates

其中,

-CApath 信任的CA证书存放目录,其中文件名为xxx.0,为证书持有者摘要值,通过openssl >x509 -in cacert1.pem可以获取;

-CAfile CA证书,格式为PEM,可有多个CA证书;

-untrusted file 不信任的CA的证书,一个文件里可有多个不信任的CA证书;

-purpose 证书的用途;不设置,不会验证证书链;该值可以是:sslclient/sslserver/nssslserver/ Sminesign和smimeencrypt;

-help

-verbose 打印详细信息;

-issuer_checks 打印被验证证书与CA证书间的关系;

-crl_checks 验证CRL,可以将CRL内容写到CAfile指定的PEM文件中;

certificates 待验证的证书;

例子:

#1)验证CRL

#需要将crl文件CA_crl.crl的内容拷贝到demoCA/cacert.pem的结尾,然后对CA_cert.pem 验证crl.否则会出现异常结果;

$ chmod a+w demoCA/cacert.pem

$ cat CA_crl.crl >> demoCA/cacert.pem

> verify -CAfile demoCA/cacert.pem -verbose -crl_check CA_cert.pem CA_cert2.pem #正确执行验证的结果,可见,CA_cert2.crl已经在撤销列表了;

#2)验证证书

#验证证书是否可以通过CA证书验证;

> verify -CAfile demoCA/cacert.pem -purpose sslclient CA_cert.pem CA_cert2.pem

二、算法类

包含摘要算法,对称非对称算法

2.1摘要算法:Gendh/Dhparam/Dh

1)Gendh

用于生成DH参数

用法:

Openssl>gendh [-out file ] [-rand ] [-engine e ]

例子:

Openssl> gendh -5 -out CA_dh.pem 1024

2)dhparam和dh

DH参数及生成操作

用法:

Openssl dhparam [inform ][outform][in][out][dsaparam][noout][check][text][numbits]

-dsaparam 生成DSA参数,并转换为DH格式;

-check 检查dh 参数;

-C 以C语言风格打印;

-numbits 指定素数bit数;默认为512位;

例子:

Openssl> dhparam -out dhparam.pem -text 512 #生成DH参数

#检查DH参数

> dhparam -in dhparam.pem -text -check

2.2摘要算法集:Dgst

1)Dgst

用于数据摘要

用法:

Openssl>dgst [-md5|-sha|mdc2/ripemd160/dss1] [-hex] [ -binary][-out filename] [-engine] [-sign privatekeyfile]

[-prverify privatekeyfile][-verify publickeyfile]

其中,

-d 打印调试;

-sign 用私钥签名;

-verify 用公钥验证签名;

-keyform PEM |ENGINE 密钥格式,pem,或者采用Engine;

-hex 显示十六进制结果,默认;

-binary 显示二进制;

-engine e 采用引擎e来运算;

-md5 默认,用来摘要;

-md4/2/sha1/sha256/sha512/mdc2/ripemd160 各种摘要可选;

例子:

Openssl> dgst CA_cert.pem

#摘要结果用私钥签名;

Openssl> dgst -sign CA_key.pem -sha512 -out CA_sigDgst.pem CA_cert.pem

2.3非对称加密:Genrsa/Rsa/Rsautl

1)Genrsa

生成RSA密钥

用法:

Openssl >genrsa [-out filename] [-passout arg] [-des3] [-rand files] [-engine id] [-numbits] 其中,

-des/des3/idea/aes128/aes192/aes256 以des/des3/idea cbc模式加密;

-out file 输出文件;

-f4/3 指定E 为f4 、3;

-rand file 指定随机数种子文件;

-numbits 密钥长度,默认为512;

例子:

Openssl> genrsa -aes256 -out CA_rsa_key.pem -f4 1024

2)Rsa

处理RSA密钥、格式转换和打印信息

用法:

Openssl rsa [-inform PEM|NET|DER][-in ][-passout arg][-des3][-check][-pubout]

例子:

#生成私钥明文文件;

Openssl>genrsa -out prikey.pem

#转换为DER编码;

Openssl>rsa -in prikey.pem -outform der -out prikey.der -text

#明文私钥转换为密码保护;

Openssl>rsa -inform der -in prikey.der -des3 -out encprikey.pem

#明文私钥转换为密码保护;用prikey.pem试试;

Openssl>rsa -inform pem -in prikey.pem -des3 -out encprikey.pem

#将公钥写入文件

Openssl>rsa -in prikey.pem -pubout -out pubkey.pem

#打印公钥信息,其中modulus打印模数;

Openssl>rsa -pubin -in pubkey.pem -text -modulus

#显示私钥信息,保护密钥写在pwd.txt中;

Openssl>rsa -in encprikey.pem (-passin file:pwd.txt)

3)Rsautl

RSA工具,使用RSA算法签名,验证身份,加解密数据

用法:

Openssl rsautl [-in ][inkey][pubin][certin][sign][verify][encrypt][decrpyt][pkcs] [ssl]raw][hexdump][passin]

其中,

-pubin 表示输入的是公钥文件,默认为私钥;

-sign 给输入的数据签名;

-verify 对输入数据验证;

-encypt 用公钥对输入数据加密;

-decypt 用私钥对输入数据解密;

-pkcs/oaep/ssl/raw 指定填充方式;

-hexdump 用16进制输出数据;

-passin arg 指定私钥保护口令的来源,如-passin file :pwd.txt

例子:

#生成RSA密钥

> genrsa -des3 -out prikey.pem

#分离出公钥

> rsa -in prikey.pem -pubout -out pubkey.pem

#对文件签名;文件不能太长,删改a.txt;

> rsautl -sign -inkey prikey.pem -in a.txt -out sig.dat -hexdump

#验证签名;相当于消除签名,还原内容;

> rsautl -verify -inkey prikey.pem -in sig.dat

#私钥签名,用公钥查看;

>rsautl -verify -pubin -inkey pubkey.pem -in sig.dat #验证签名;用公钥,发现也可以;

#公钥加密;私钥解密;也可以;

> rsautl -encrypt -pubin -inkey pubkey.pem -in a.txt -out b.txt

> rsautl -decrypt -inkey prikey.pem -in b.txt

#用证书中的公钥加密

> rsautl -encrypt -certin -inkey CAreq_cert.pem -in a.txt -out enca.dat

#用私钥解密,看下能否恢复;

#私钥不对为证书CAreq的私钥CA_key.pem文件,修改后成功;

> rsautl -decrypt -inkey CA_key.pem -in enca.dat -out deca.txt

2.4椭圆曲线算法:Ecparam/Ec

1)Ecparam

椭圆曲线参数及生成操作

用法:

Openssl ecparam [inform][outform][in][param_enc][no_seed][genkey]

其中,

-check 检查参数;

-name arg 采用短名字;

-list_curves 打印所有可用的短名字;

-conv_form arg 指定信息存放的方式,可以是compressed/uncompressed/bybrid,默认为compressed;

-no_seed 如-param_enc 指定为explicit,不采用随机种子;

-rand files 指定随机种子;

-genkey 生成密钥;

例子:

Openssl> ecparam -list_curves #打印所有可用的短名字

#生成椭圆曲线密钥;

> ecparam -name secp112r2 -genkey -text

> ecparam -genkey -name sect163r1 -out ec163.pem

#更新生成密钥

> req -newkey ec:ec163.pem

2)Ec

椭圆曲线密钥处理工具

用法:

Openssl>ec [inform] [in][passin][out][des][conv]][param]

例子:

Openssl>ecparam -genkey -name secp112r1 -out eckey.pem -text #生成ec私钥>ec -outform der -in eckey.pem -out eckey.der #转换为DER编码

>ec -in eckey.pem -des -out encekey.pem #私钥进行口令保护

>ec -in eckey.pem -pubout -out ecpubkey.pem #公钥写入文件

>ec -in eckey.pem -text #显示密钥信息

>pkcs8 -topk8 -in eckey.pem -out eckeypk8.pem #转换为pkcs8格式

2.5数字签名:Dsa/Dsaparam/Gendsa

1)Dsa

处理DSA密钥、格式转换和打印信息

用法:

Openssl dsa [inform ][outform][in ] [des3][text][modulus]

其中,

-passin arg 指定私钥包含口令存放方式,如-passin file :pwd txt;

-des 指定私钥保护加密算法;

-modulus 打印公钥信息;

例子:

Openssl> dsaparam -out dsaparam.pem 1024 #生成dsa参数文件

> gendsa -out dsakey.pem dsaparam.pem #生成dsa密钥

> dsa -in dsakey.pem -outform DER -out dsakeyder.pem #转换为DER格式

> dsa -in dsakey.pem -modulus #打印公钥信

> dsa -in dsakey.pem -des -out enckey.pem #加密存放

2)Dsaparam

用于生成和操作dsa证书参数

用法:

Openssl dsaparam [-inform DER|PEM][-in ] [text][ -genkey][-C][-numbits]

其中,

-genkey 生成dsa密钥;

-nubmber 制定密钥大小;

例子:

Openssl>dsaparam -genkey 512 -out dsa.pem -C

3)Gendsa

生成DSA密钥,密钥参数用dsaparam生成;

用法:

Openssl gendsa [ out ][ des] paramfile必选

其中,

-des3 指定私钥口令保护算法;不指定,则明文存放;

paramfile 制定DSA密钥参数文件;

例子:

Openssl>dsaparam -genkey 512 -out dsa.pem

Openssl>gendsa -des3 -out encdsa.pem dsa.pem

2.5对称算法:Enc

1)Enc

对称加解密工具,可以进行base64编码转换;

用法:

Openssl enc -ciphername [-in ][pass][bufsize] [nopad][kfile] [e d a A p P ] [debug]

其中,

-ciphername 对称算法名字

-pass arg 指定密码保护来源;

-e 加密

-d 解密

-a 自动在加密后,解密前,进行base64编解码;

-p 打印出使用的salt、口令以及初始化变量iv;

-P 同p ,只不做加解密操作;

-bufsize 设置IO擦左缓冲区大小;

-debug 调试信息;

例子:

Openssl>enc -des3 -e -in a.txt -out b.txt

三、工具类

3.1诊断工具:ASN.1

1)Aasn1parse

用于诊断ASN.1结构的工具,也可从ASN.1数据中提取数据;

用法:

Openssl >asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-length num] [-i] [-oid] 其中,

-out 默认为PEM,可以为DER文件;

-offset num 数据分析字节偏移量;

-length 分析数据长度,默认为全部;

-dump 显示16进制;

-i 标记实体,输出有所进;

-oid file 指定外部的oid文件;

例子:

Openssl> asn1parse -in CA_req.pem -inform pem -i

> asn1parse -in CA_key.pem -i

#其中n:d=x h1=x l =x cons/prim: SEQENCE 格式里,

-n 表示偏移量;

-d 表示此项的深度;

-hl 表示asn1头长度;

-l 表示内容长度;

Prim:OBJECT 表示ASN1 类型;

#其他例子

#显示内容,并生成der编码文件;

> asn1parse -in CA_req.pem -out CA_req.der

#偏移量开始分析

> asn1parse -in CA_req.pem -offset 54

3.2序列转换:Nseq

1)Nseq

多证书与netscape证书序列间相互转化

用法:

Openssl nseq [in] [out][toseq]

例子:

#多个证书写入同一个文件

$ cat CA_cert.pem >CA_1.pem

$ cat CA_cert2.pem >>CA_1.pem

#多个证书转化为netscape证书序列

> nseq -in CA_1.pem -toseq -out CA_2.pem

#netscape证书序列转化为多个证书

>nseq -in 2.pem -out 3.pem

3.3在线证书状态:OCSP

1)Ocsp

在线证书状态工具

用法:

Openssl ocsp [out ][issuer][cert][serial][req][url][CA][no_certs][req_text][host][CApath dir][CAfile][trust]

例子:

#用req和ca命令生成OCSP服务器证书和私钥

#生成OCSP请求

Openssl>ocsp -issuer demoCA/casert.pem -cert cert.pem -cert -cert2.pem -reqout ocspreq.der

>ocsp -reqin ocspreq.der -text#打印OCSP请求消息

#启动OCSP服务

>ocsp -ndays 1 -index/demoCA /index.txt -port 3904 -CA demoCA/cacert.pem -text

-rkey ocspserverkey.pem -rsigner ocspservercert.pem#

#请求OCSP响应

>ocsp -issuer demoCA/cacert.pem -url https:#127.0.0.1:3904 -reqin ocspreq.der

-V Afile ocspservercert.pem -respout resp.der

3.4加密套件:Ciphers

1)Ciphers

显示支持的加密套件

Openssl ciphers [-v ][-ssl3][tls1][cipherlist]

其中,

-v 详细列出所有加密套件,包括ssl版本、密钥交换算法、身份验证算法、对称算法;摘要算法等;

-ssl3 只列出sslv3使用的加密套件;

-tls1 只列出TLSv1使用的;

-cipherlist 规则字符串;

例子:

Openssl>ciphers -v

Openssl>ciphers -v 'ALL:eNULL'

Openssl>ciphers -v '3DES:+RSA'

3.4性能工具:Speed/S_time

1)Speed

调整测试库的性能

用法:

Openssl [-engine id] [md5][sha1][rsa 1024][dsa2048][des][blowfish][-slapsed]

其中,

-elapsed 测量采用实时时间,不是CPU时间;

-mr 生成机器可读显示;

-multi n 并行允许n个测试;

例子:

> speed rsa4096 -mr -elapsed

> speed blowfish

> speed dsa2048

> speed rmd160

> speed md5

#从数值比较来看,md5的执行速度相比rm160较快;

2)S_time

提供的SSL/TLS性能测试工具,测试服务;

用法:

Openssl s_time [connect host:port][www][cert][key][CApath][CAfile][new][time][ssl2][bugs] -connect host:port 指定服务,默认为4433端口;

-www 指定获取的web网页;

-cert 指定证书;

-CApath dir 指定CA文件目录;

-CAfile 指定CA文件;

-new 新建连接;

-verify depth 设置验证深度;

-nbio 不采用BIO;

-ssl2/3 采用SSL协议;

-bugs 开启SSL bug兼容;

-cipher 指定加密套件;

例子:

Openssl>s_server -cert sslservercert.pem -key sslserver.pem -ssl3#启动s_server服务

>s_time -cert sslclientcert.pem -key sslclientkey.pem -CAfile dmeoCA/cacert.pem -ssl3#启动s_time

3.5协议会话工具:Sess_id/S_server/S_client

1)sess_id

SSL/TLS协议的session处理工具

用法:

Openssl sess_id [-inform PEM|DER][-outfome ][-in ] [-text][-context ID][-cert]

其中,

-cert 打印数字证书;

-text 打印信息;

需要有session文件,将SSL_SESSION写入文件即可,然后可以分析;

例子:

【空缺案例】

2)s_server

#生成各种服务器证书,参考CA一节;

SSL服务程序,前提是需要生成各种证书;可测试客户端,如各浏览器https协议支持;用法:

Openssl s_server [-accpet port][-context id] [-verify depth][-cert filename]

[-debug][-msg][-www][-WWW][-HTTP][-crlf][ q Q r R P S]

其中,

-accept arg 监听TCP端口,缺省为4433;

-contextarg 设置ssl上下文,不设置采用默认;

-cert certname 服务使用的证书文件名;

-certform 证书格式;

-keyform 私钥格式;

-pass arg 私钥口令来源;

-msg 打印协议内容;

-timeout 设置超时;

-key file 服务使用的私钥文件;

-no_tmp_rsa 不生成临时RSA密钥;

-verify depth 设置证书验证深度;

-V erify arg 设置为1,服务端必须验证客户身份;

-CAfile 指定CA证书文件;

-state 打印SSL握手状态;

-nbio 不采用bio;

-quiet 不打印输出信息;

-www 返回用户一个网页;内容为SSL握手的内容;

-WWW -HTTP 将某文件作为网页返回客户端;URL请求为https://myhost/page.html,则把./page.html返回给client;不设置时,客户端终端输入什么,服务返回相同字符;

-crlf 将用户在终端输入的换行回车转化为/r/n;

连接命令有,

-q 中断当前连接,但不关闭服务;

-Q 中断连接,退出程序;

-r 重新协商;

-R 重新协商,并要求客户端证书;

-P 在TCP直接送明文,造成客户端握手错误并断开连接;

-S 打印缓存的SESSION信息;

例子:

> s_server -state -msg -CAfile demoCA/cacert_bak.pem -key demoCA/private/cakey.pem

[求解]

难道CA证书和CA私钥不匹配?

#监听服务端口4433默认;

> s_server -accept 4433 -msg -state

3)S_client

为SSL/TLS客户端程序,与s_server对应,可通信

用法:

Openssl s_client [ -connect host:port][ -verify depth ][-cert filename]

[pause][-debug][-ssl3][-tls1][cipher cipherlist][-rand

其中,

-host host 设置服务地址;

-port 设置端口;

-connect host:port 设置服务地址和端口;

-verify 设置证书验证深度;

-cert arg 设置握手采用的证书;

-certform arg 设置证书格式;

-key arg 指定客户私钥名;

-CApath 设置信任CA文件路径,ca文件名采用特殊xxx.0形式,通过x509 -hash 获得;-CAfile 指定CA文件名;

-reconnect 重新连接,进行session重用;

-pause 每当读写数据时,sleep 1s;

-debug 调试

-showcerts 显示证书链;

-msg 打印协议信息;

-state 打印SSL状态;

-quiet 不显示客户端数据;

-cipher 指定加密套件;

-crlf 将用户在中断输入的换行回车转化成/r/n;

例子:

#连接服务器200.200.145.201

> s_client -connect 200.200.145.201:4433 -state -msg

> s_client -showcerts

3.6邮件验证工具:Smime

1)Smime

处理S/MIME邮件,加密、解密、签名和验证

用法:

Openssl smime [encrypt][decrypt][sign][verify][pk7out][des][subject]

其中,

-encrypt 加密;

-decrypt 解密;

例子:

>smime -encrypt -in mail.pem -out enced.pem -des newcert.pem#用对方的证书加密消息>smime -decrypt -in enced.pem -out mymail.pem -inkey newkey.pem#私钥解密消息3.7其他工具:Prime/Errstr/Version/Passwd

1)Prime

检查一个数是否是素数

例子:

Openssl> prime 79

2)Errstr

查询错误代码;

用法:

Openssl errstr [stats]

例子:

Openssl req -config no.txt#输入错误,提示错误02001002

>errstr -stats 02001002

3)version

打印版本信息

用法:

V ersion -[avbofp]

-a 所有;

-b 编译;

-o 加密算法和机器字节;

-f 编译选项;

-p 平台;

例子:

> version -a -b -o -f -p

4)Passwd

生成各种口令密文

用法:

Openssl> passwd [-crypt] [-in file ] [-table] [-noverify]

其中,

-crypt 默认,显示Unix密文;

-stdin 默认,从标准输入口令;

-noverify 不验证口令;

-quiet 无警告;

-in file 从文件读取口令;

-reverse 输入口令和结果用缩进隔开,输出内容顺序颠倒;

例子:

Openssl> passwd -crypt -noverify -reverse

1.5)Rand

生成随机数

用法:

Openssl rand [-out file] [-rand files] [-base64] num

其中,

-base 64 输出结果为BASE64编码;

-num 随机数长度;

例子:

Openssl> rand 100 -base64 -out CA_rand.dat

花絮

小编在写作此文档时,犯过一些有趣的错误;

分享一个在Openssl 协议中“生成CA签发证书”的故事;

#修改签发证书命令,关于Subj的探索很纠结;(此处是试验,结果证明是错的!)-----------------------------------------START-------------------------------------------------- Openssl> ca -in CA_req.pem -batch -out CA_cert.pem

#重新生成证书请求,参考上文

> req -new -out CA_req.pem -keyout CA_key.pem

> req -in CA_req.pem -text

#比较根证书内容

#发现一致,进行签发证书应该不会错;

> ca -in CA_req.pem -out CA_cert.pem

#数据库更新失败?求解;

#重新生成CA,结果如下;

#结果还是数据库更新失败!

密码体制分类及典型算法描述

.AAA密码体制分类及典型算法描述 换位与代替密码体制 序列与分组密码体制 对称与非对称密钥密码体制 BBB试对代替密码和换位密码进行安全性分析。 1.单表代替的优缺点 优点:明文字符的形态一般将面目全非 缺点: (A)明文的位置不变; (B)明文字符相同,则密文字符也相同; 从而导致: (I)若明文字符e被加密成密文字符a,则明文中e的出现次数就是密文中字符a的出现次数; (II)明文的跟随关系反映在密文之中. 因此,明文字符的统计规律就完全暴露在密文字符的统计规律之中.形态变但位置不变 2.多表代替的优缺点 优点:只要 (1)多表设计合理,即每行中元互不相同,每列中元互不相同.(这样的表称为拉丁方表) (2)密钥序列是随机序列,即具有等概性和独立性。 这个多表代替就是完全保密的。 等概性:各位置的字符取可能字符的概率相同; 独立性:在其它所有字符都知道时,也判断不出未知的字符取哪个的概率更大。 2.多表代替的优缺点 密钥序列是随机序列意味着: (1)密钥序列不能周期重复; (2)密钥序列必须与明文序列等长; (3)这些序列必须在通信前分配完毕; (4)大量通信时不实用; (5)分配密钥和存储密钥时安全隐患大。 缺点:周期较短时可以实现唯密文攻击。 换位密码的优缺点 优点:明文字符的位置发生变化; 缺点:(A)明文字符的形态不变; 从而导致: (I)密文字符e的出现频次也是明文字符e的出现次数; 有时直接可破!(如密文字母全相同) 换位密码优缺点总结:位置变但形态不变. 代替密码优缺点总结:形态变但位置不变. CCC…..ADFGX密码解密过程分析。 1918年,第一次世界大战已经接近尾声。为了挽回日趋不利的局面,德军集中了500万人的兵力,向协约国发动了猛烈的连续进攻。 采用一种新密码:ADFGX密码体制。 该密码用手工加解密费时不多,符合战地密码的基本要求。 进行了两次加密,有两个密钥:一个是代替密钥(棋盘密钥)一个是换位密钥

【IT专家】window下安装openssl1.1.0(以及linux 下源码编译安装)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系window下安装openssl1.1.0(以及linux 下源码编译安装)2016/12/01 0 Fedora下源码编译:先安装perl 5。 ?接下来安装openssl1.1.0,进入openssl源码路径下,具体步骤如下: ?$ ./config --prefix=/opt/openssl --openssldir=/usr/local/ssl$ ./Configure$ make$ make test$ make installmake test的时候可能会出现错误。安装cpan ?$ sudo dnf install cpan做make test ?$ make list-tests$ make VERBOSE=1 test$ make TESTS=‘test_rsa test_dsa’ test$ make testmake install之后,没有报错,生成的库以及可执行文件存放在/opt/openssl下。?loading shared libraries的操作请看:“error while loading shared libraries: xxx.so.x” Windows下源码编译:1、先安装安装perl 5。配置环境变量。 ?2、安装NASM,配置环境变量。 ?3、打开VS2015环境Developer Command Prompt for VS2015(管理员身份运行)。执行 ?vc\vcvarsall x86_amd64 // 设置64位环境或vcvars32 // 设置32位环境4、进入openssl1.1.0源码路径下,(首先安装dmake),执行 ?ppm install dmake// 在C:\Perl64\site\bin会有dmake.exe文件,将路径放入环境变量中5、配置,执行以下命令后,生成makefile文件 ?perl Configure VC-WIN64A // 或者VC-WIN326、执行nmake,编译 ?nmakenmake testnmake install7、最后,生成的相关bin、html、lib、include、存放在C:\Program Files\OpenSSL路径下(默认设置,可以通过config –prefix=DIR修改) ?tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

OpenSSL编程实例

客户端程序 // OpenSSLClient.cpp #include #include using namespace std; #pragma comment (lib, "Ws2_32.lib") #include "openssl/ssl.h" #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") #define SERVICE_PORT 10000 const int nBufSize = 512; // 初始化2.2版本Winsock int InitWinsock(){ WSADATA wsaData = {0}; WORD wVer = MAKEWORD(2,2); int nRet = WSAStartup(wVer, &wsaData); if(nRet != 0){ cout<<"Winsock初始化失败,错误代码是"<

使用OpenSSL建立根CA及自签名证书制作过程

使用OpenSSL建立根CA及自签名证书制作过程 2009-12-24 11:35:32| 分类:openssl |字号订阅 Openssl版本:0.9.8 版本,可从https://www.360docs.net/doc/b015851417.html,处下载。 1.先建立如下目录结构: $home/testca # testca 是待建CA的主目录 ├─newcerts/ # newcerts子目录将存放CA签发过的数组证书(备份目录) ├─private/ # private目录用来存放CA私钥 └─conf/ # conf目录用来存放简化openssl命令行参数用的配置文件 此外使用命令 echo "01" > serial touch index.txt 在ca根目录下创建文件serial (用来存放下一个证书的序列号) 和indext.txt (证书信息数据库文件)。 1.生成CA的私钥和自签名证书 (根证书) 创建配置文件:vi "$HOME/testca/conf/gentestca.conf" 文件内容如下: #################################### [ req ] default_keyfile = /home/cx/testCA/private/cakey.pem default_md = md5 prompt = no

distinguished_name = ca_distinguished_name x509_extensions = ca_extensions [ ca_distinguished_name ] organizationName = ss organizationalUnitName = sstc commonName = sstcCA emailAddress = GChen2@https://www.360docs.net/doc/b015851417.html, #自己的邮件地址 [ ca_extensions ] basicConstraints = CA:true ######################################## 然后执行命令如下: cd "$HOME/testca" openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 2190 -config "$HOME/testca/conf/gentestca.conf" 执行过程中需要输入CA私钥的保护密码,假设我们输入密码: 888888 可以用如下命令查看一下CA自己证书的内容 openssl x509 -in cacert.pem -text –noout 创建一个配置文件,以便后续CA日常操作中使用 vi "$HOME/testca/conf/testca.conf"

分组密码算法的自相关检测参数选择_范丽敏

2009年7月Journal on Communications July 2009 第30卷第7期通信学报V ol.30No.7分组密码算法的自相关检测参数选择 范丽敏1,2, 冯登国1, 周永彬1 (1. 中国科学院软件研究所信息安全国家重点实验室,北京 100190;2. 中国科学院研究生院,北京 100039) 摘要:自相关检测是一种用以检测一个长度为n的二元序列与其左移d位后序列的关联程度的随机性检测算法。 d的选择范围很大,对所有参数逐一进行检测不现实,需要研究检测参数之间的关系。定义了检测参数之间可能存在的3种关系,以分组长度为m的分组密码随机性检测为对象,综合考虑分组密码和自相关检测的特点,利用统计实验研究了自相关检测参数子集D={1,2,m/4,m/2,3m/4,m,2m}中参数的关系。研究结果表明,对分组密码进行自相关检测时,检测参数应该首选d=m。该方法和结果为研究其他类型密码算法的随机性检测参数选择提供了新思路。 关键词:信息安全;分组密码;统计检测;自相关检测;参数选择 中图分类号:TP309.7 文献标识码:B 文章编号:1000-436X(2009)07-0086-05 Parameter selection of autocorrelation test for block ciphers FAN Li-min1,2, FENG Deng-guo1, ZHOU Yong-bin1 (1. State Key Laboratory of Information Security,Institute of Software ,Chinese Academy of Sciences, Beijing 100190, China; 2. Graduate University of Chinese Academy of Sciences, Beijing 100049, China) Abstract: Autocorrelation test was a statistical test to evaluate the correlation between one sequence and the corresponding non-cyclic left-shifted d bits sequence. It was impractical to adopt all the values of d since its range was often very wide. Three relations between parameters of randomness test were defined firstly. Then the relationships among the subclass D={1,2,m/4,m/2,3m/4,m,2m}of autocorrelation test for block cipher were studied by statistical experiments, where m was block length. The experiments show that the prefer choice of parameter d is m when doing autocorrelation test for block cipher. The method is also available for parameter selection of other randomness test for other types of cryptosystem. Key words: information security; block cipher; statistical test; autocorrelation test; parameter selection 1引言 一个好的密码算法应该能够保证其输出序列的随机性,使得该密码产生的输出序列在统计上难以与真随机序列区别开来。检测一个序列与真随机序列之间的差距通常采用统计检测方法。事实上,统计检测已经成为密码算法检测中重要的量化检测手段。目前,已经存在多种不同的随机性检测项目[1~3],并且很多检测项目还带有参数。对检测项目的参数研究并不多见,主要成果集中在正确参数的选择和错误参数 收稿日期:2007-08-01;修回日期:2009-05-23 基金项目:国家自然科学基金资助项目(60503014,60603013);国家高技术研究发展计划(“863”计划)基金资助项目(2007AA01Z470, 2008AA01Z417);北京市自然科学基金资助项目(4072026) Foundation Items: The National Natural Science Foundation of China (60503014,60603013); The National High Technology Research and Development Program of China (863 Program) (2007AA01Z470, 2008AA01Z417); The Natural Science Foundation of Beijing (4072026)

SVN服务端安装和配置

所有资料来源于 https://www.360docs.net/doc/b015851417.html, 我用Subversion - SVN|TortoiseSVN下载安装配置使用技术交流社区 SVN 服务端安装和配置 1.Windows环境下基于 Apache 的SVN 服务器安装及配置 1.1安装 1.1.1安装Apache (1)下载Apache 地址https://www.360docs.net/doc/b015851417.html,/download.cgi 注意:Apache低于2.0.54的Windows版本的存在编译问题,低于2.0.54的版本不能与Subversion 1.2一起工作。2.2.X目前不能很好支持SVN 1.4.3。当前建议下载Apache 2.0.59 (2) 安装 下载完成后运行apache_2.0.59-win32-x86-no_ssl.msi,根据提示进行操作。遇到系统要求输入SERVER的URL时,如果你的服务器没有DNS名称,请直接输入IP地址。 注意:如果你已经有了IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录\Apache Group\Apache2\conf,打开httpd.conf。编辑文件的Listen 80为其他可用的端口,例如Listen 81,然后重新启动-这样就不会那个问题了。 (3)检查 安装完成后浏览http://localhost/若成功,可看到apache页面。 1.1.2安装Subversion (1)下载 Subversion 地址:https://www.360docs.net/doc/b015851417.html,/servlets/ProjectDocumentList?folderID=91(2)安装 运行svn-1.4.3-setup.exe 安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。 (3)后续 步骤1 从C:\Program Files\Subversion\bin 中将 mod_authz_svn.so mod_dav_svn.so复制到 C:\Program Files\Apache Group\Apache2\modules下 intl3_svn.dll libdb*.dll C:\Program Files\Apache Group\Apache2\bin下 步骤2 找到C:\Program Files\Apache Group\Apache2\conf\httpd.conf文件去掉如下几行的注释(删除 '#'标记):

利用openSSL实现SSl双向认证学习笔记

SSl双向认证学习笔记 2010-09-02 13:16:39| 分类:ssl | 标签:|字号大中小订阅 url]https://www.360docs.net/doc/b015851417.html,/sunyujia/archive/2008/10/03/3014667.aspx[/url] [url]https://www.360docs.net/doc/b015851417.html,/nataka/archive/2005/09/03/470539.aspx[/url] [url]https://www.360docs.net/doc/b015851417.html,/thread-743287-1-1.html[/url] 第一节基础知识 最近要做一个SSL的应用,先后了解了两个命令,一个是keytool,一个是openssl。keytool是JDK得集成环境 。只要安装了JDK,基本上都会有(^_^,除非你安装太老的!),我用的1.5。在安装openssl的时候,花了半天时间 。 用SSL进行双向身份验证意思就是在客户机连接服务器时,链接双方都要对彼此的数字证书进行验证,保证这 是经过授权的才能够连接(我们链接一般的SSL时采用的是单向验证,客户机只验证服务器的证书,服务器不验证客户 机的证书。而连接网上银行时使用的U盾就是用来存储进行双向验证所需要的客户端证书的)。 JDK工具KEYTOOL -genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥 、私钥和证书 -alias 产生别名 -keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中 -keyalg 指定密钥的算法 -validity 指定创建的证书有效期多少天 -keysize 指定密钥长度 -storepass 指定密钥库的密码 -keypass 指定别名条目的密码 -dname 指定证书拥有者信息例如:"CN=firstName,OU=org,O=bj,L=bj,ST=gd,C=cn" -list 显示密钥库中的证书信息keytool -list -v -keystore 别名-storepass .... -v 显示密钥库中的证书详细信息 -export 将别名指定的证书导出到文件keytool -export -alias 别名-file 文件名.crt -file 参数指定导出到文件的文件名 -delete 删除密钥库中某条目keytool -delete -alias 别名-keystore sage -keypasswd 修改密钥库中指定条目口令keytool -keypasswd -alias 别名-keypass .... -new .... -storepass ... -keystore 别名 -import 将已签名数字证书导入密钥库keytool -import -alias 别名-keystore 证书名-file 文件名 (可以加.crt 后缀) 命令: 生成证书 keytool -genkey -keystore 文件名(可包含路径) -keyalg rsa -alias 别名-validity 有效期 查看证书 keytool -list -v -keystore 路径 把证书导出到文件 keytool -export -alias 别名-keystore 证书名-rfc -file 文件名(可包含路径) 修改密码 keytool -keypasswd -alias 别名-keypass 旧密码-new 新密码 导出证书到新的TrustStore keytool -import -alias 别名-file 文件名-keystore truststore 此处省略3000字,待补^_^

AIX5.3安装openSSL,openSSH

AIX5.3安装openSSL、openSSH 1、将openssl-0.9.8.2501.tar.Z包ftp到/tmp/ssl目录下 2、将openssh-4.7_new5302.tar包ftp到/tmp/ssh目录下 3、安装过程: 1)解压 # uncompress openssl-0.9.8.2501.tar.Z # tar -xvf openssl-0.9.8.2501.tar #gunzip OpenSSH_6.0.0.6106.tar.Z #tar xvf OpenSSH_6.0.0.6106.tar 2)安装 必须先安装openssl,然后再安装openssh。 a)openssl安装: 进入openssl目录 # /tmp/ssl/openssl-0.9.8.2501 #smit install_latest 选择当前目录,注意中括号中的“.”号 INPUT device / directory for software [.] 如图所示: 回车后,选择 SOFTWARE to install 选择默认的_all_latest(这个选择最好保证本目录只有ssl的安装文件),使用tab键将ACCEPT new license agreements修改为yes如下图:

根据上图,参照红圈的修改,其他不用修改按entert键进入下一步: 再按enter键开始安装

安装成功如下图: b)openssh安装 openssh的安装与openssl的安装过程一样。 进入到ssh的目录 # /tmp/ssh/OpenSSH_6.0.0.6106 #smit install_latest 选择当前目录,注意中括号中的“.”号 * INPUT device / directory for software [.] 回车后,选择 SOFTWARE to install 安装所有可以安装的ssh软件,或者是默认全部软件(确保该目录只有ssh)。选择 ACCEPT new license agreements? 必须为yes 否则,将安装不成功。

openssl使用手册

OpenSSL有两种运行模式:交互模式和批处理模式。 直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。 (1) 配置文件 OpenSSL的默认配置文件位置不是很固定,可以用openssl ca命令得知。 你也可以指定自己的配置文件。 当前只有三个OpenSSL命令会使用这个配置文件:ca, req, x509。有望未来版本会有更多命令使用配置文件。 (2)消息摘要算法 支持的算法包括:MD2, MD4, MD5, MDC2, SHA1(有时候叫做DSS1), RIPEMD-160。SHA1和RIPEMD-160产生160位哈西值,其他的产生128位。除非出于兼容性考虑,否则推荐使用SHA1或者RIPEMD-160。 除了RIPEMD-160需要用rmd160命令外,其他的算法都可用dgst命令来执行。 OpenSSL对于SHA1的处理有点奇怪,有时候必须把它称作DSS1来引用。 消息摘要算法除了可计算哈西值,还可用于签名和验证签名。签名的时候,对于DSA生成的私匙必须要和DSS1(即SHA1)搭配。而对于RSA生成的私匙,任何消息摘要算法都可使用。 ############################################################# # 消息摘要算法应用例子 # 用SHA1算法计算文件file.txt的哈西值,输出到stdout $ openssl dgst -sha1 file.txt # 用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt $ openssl sha1 -out digest.txt file.txt # 用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin # 签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中 $ openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt # 用dss1算法验证file.txt的数字签名dsasign.bin, # 验证的private key为DSA算法产生的文件dsakey.pem $ openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt # 用sha1算法为文件file.txt签名,输出到文件rsasign.bin # 签名的private key为RSA算法产生的文件rsaprivate.pem $ openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt # 用sha1算法验证file.txt的数字签名rsasign.bin, # 验证的public key为RSA算法生成的rsapublic.pem $ openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt (3) 对称密码 OpenSSL支持的对称密码包括Blowfish, CAST5, DES, 3DES(Triple DES), IDEA, RC2, RC4以及RC5。OpenSSL 0.9.7还新增了AES的支持。很多对称密码支持不同的模式,包括CBC, CFB, ECB以及OFB。对于每一种密码,默认的模式总是CBC。需要特别指出的是,尽量避免使用ECB模式,要想安全地使用它难以置信地困难。 enc命令用来访问对称密码,此外还可以用密码的名字作为命令来访问。除了加解密,base64可作为命令或者enc命令选项对数据进行base64编码/解码。 当你指定口令后,命令行工具会把口令和一个8字节的salt(随机生成的)进行组合,然后计算MD5 hash值。这个hash值被切分成两部分:加密钥匙(key)和初始化向量(initialization

OpenSSL 命令常用证书操作

在OpenSSL开发包中,包含一个实用工具:openssl,比如我用MinGW GCC 编译OpenSSL 0.9.8k 后,openssl 就保存在out目录下。openssl 工具是完成密钥、证书操作和其它SSL 事务的入口环境,直接运行不带参数的openssl 命令后,可以得到一个shell 环境,在其中可以以交互的方式完成SSL 相关的安全事务。 不过有时,如果用一个带参数选项的openssl 命令完成操作,会更方便。下面是我使用openssl 做证书操作时,记录的常用命令用法。 1.生成密钥 生成RSA密钥,保存在file.key中,命令如下: 上面命令的含义是:产生RSA密钥,包括:私钥和公钥两部分,然后使用DES3算法,用用户输入的密码(passphrase)加密该密钥数据,保存在file.key中。 file.key默认以BASE64方式编码密钥数据,file.key的格式称为:PEM (Privacy Enhanced Mail)格式,在RFC 1421到RFC 1424中定义,PEM是早期用来进行安全电子邮件传输的标准,但现在广泛用在证书、证书请求、PKCS#7对象的存储上,所以证书文件也经常以.pem为扩展名。 2.不加密的密钥 如果在生成密钥时,使用了-des3等加密选项,则会生成被用户密码保护的加密密钥,以增强密钥数据的保密性(因为密钥文件中包含私钥部分)。但有时为了方便,需要不加密的明文密钥(这样安全性会降低),比如:使用

Apache的HTTPS服务,每次启动Apache服务时,都需要用户输入保护密钥的密码,感觉麻烦的话,可以使用明文密钥。 明文密钥可以使用不带-des3等加密选项的openssl命令生成,还可以使用以下命令将加密保护的密钥转换成明文密钥,当然转换过程需要用户输入原来的加密保护密码: 3.查看密钥 查看保存在file.key中的RSA密钥的细节,如果此文件是加密保护的,会提示用户输入加密此文件的密码,命令如下: 输出的内容均是RSA密钥数据的数学信息(模数、指数、质数等),从输出的结果中也可知file.key保存的RSA密钥数据包括:私钥和公钥两部分。 该命令也能查看其它工具生成的密钥,比如SSH,只要密钥文件符合openssl支持的格式。 4.生成证书请求 由file.key产生一个证书请求(Certificate Request),保证在file.csr 中,命令如下: 指定时,默认会访问Unix格式的默认路径:/usr/local/ssl/https://www.360docs.net/doc/b015851417.html,f。 创建证书请求时,会要求用户输入一些身份信息,示例如下:

常见密码算法分析及C语言实现

龙源期刊网 https://www.360docs.net/doc/b015851417.html, 常见密码算法分析及C语言实现 作者:郭萌萌 来源:《电脑知识与技术》2014年第35期 摘要:计算机的高速发展使信息安全面临着巨大的挑战。在计算机应用中要想确保信息安全,就必须要对密码算法进行合理应用。基于此,该文对密码算法进行了分析,并将密码算法的C语言实现进行了简单介绍和说明。 关键词:密码算法;C语言;随机数 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)35-8371-02 密码学具有悠久的历史,但同时也是一门崭新的课程,人们从来没有停止对密码学的研究。现代密码学理论十分复杂,现代密码学的发展需要现代数学和计计算机科学的支持。进入二十一世纪后,人们已经计入到了计算机时代,如何确保计算机中的信息在存储、传输、交换中的安全性是一个值得探讨的话题。 1 计算机密码学发展历史 密码学在人类发展历史中有着不可代替的作用,从2000多年前古埃及发生战争,密码就出现在了人类中,起初的密码就是简单的记录符号。随着时代的推移,在两次世界大战中人们开始意识到密码的重要性。 密码学真正成为一门学科是在二十世纪七十年代。美国国家标准局在1977年对DES(数据加密标准)进行了公布,并批准在非商业和非机密单位中对其进行应用,从此解开了密码的神秘面纱。早在1975年“密码学的新方向”一文中就提出了适用于网络的公钥密码理念,这也是人们对公钥密码进行研究的开始。受“密码学的新方向”影响,各种公钥密码体制被提了出来,在众多体制中,RSA成为了密码学研究的一个里程碑。不夸张的说,“没有公钥密码的研究也不会有近代密码学”。现代社会是一个信息高速发展的社会,随着科技的发展,密码学也取得了巨大进步,而且也成为了许多学科发展的基础。 2 常见的密码算法 2.1 密码系统保密机理 计算机及互联网在人们的日常生活中越来越普及,随之而来的,人们对信息安全方面的要求也越来越高。在网络环境中确保信息完整性、准确性和机密性都需要密码技术来实现。图1为密码系统保密机理。

openssl安装及使用

Openssl安装及使用 一软件 Windows下需要用到的软件 1.ActivePerl 一个perl脚本解释器。其包含了包括有Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序,可以让你编写出适用于unix,windows,linux系统的CGI程序来。安装的只是perl的一个解释程序啦,外观上也不会发生什么变化,你在windows的cmd界面里输入perl -v可查看你所安装的版本。 在你编译perl程序时会用到它。 2.C++编译器 编译器就是将“高级语言”翻译为“机器语言(低级语言)” 的程序。一个现代编译器的主要工作流程:源代码(source code) →预处理器(preprocessor) →编译器(compiler) →汇编程序(assembler) →目标代码(object code) →链接器(Linker) →可执行程序(executables)。c++编译器是一个与标准化C++高度兼容的编译环境。这点对于编译可移植的代码十分重要。编译器对不同的CPU会进行不同的优化。 3.OpenSSL OpenSSL是一个强大的安全套接字层密码库,Apache使用

它加密HTTPS,OpenSSH使用它加密SSH,它还是一个多用途的、跨平台的密码工具。 OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 4.MASM 8.0 MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发。8.0版本在编译OpenSSL的时候不容易出错。 用winrar解压缩MASMSetup.exe得到:setup.exe继续用winrar解压缩setup.exe 得到:vc_masm1.cab继续用winrar解压缩vc_masm1.cab得到:FL_ml_exe__..... (很长的文件名,省略),将这个文件重命名为ml.exe测试得到的ml.exe , 应该显示:Microsoft (R) Macro Assembler Version 8.00.50727.104将ml.exe 拷贝到工作目录,即可正常使用。 5.mspdb60.dll

密码学试题

选择题 1、如果发送方用私钥加密消息,则可以实现() A、保密性 B、保密与鉴别 C、保密而非鉴别 D、鉴别 2、在混合加密方式下,真正用来加解密通信过程中所传输数据(明文)的密钥是() A、非对称算法的公钥 B、对称算法的密钥 C、非对称算法的私钥 D、CA中心的公钥 3、以下关于加密说法,不正确的是() A、加密包括对称加密和非对称加密两种 B、信息隐蔽是加密的一种方法 C、如果没有信息加密的密钥,只要知道加密程序的细节就可以对信息进行解密 D、密钥的位数越多,信息的安全性就越高 4、以下关于混合加密方式说法不正确的是:() A、采用公开密钥体制进行通信过程中的加解密处理 B、采用公开密钥体制对对称密钥体制的密钥进行加密后的通信 C、采用对称密钥体制对对称密钥体制的密钥进行加密后的通信 D、采用混合加密方式,利用了对称密钥体制的密钥容易管理和非对称密钥体制的加解密处理速度快的双重优点 5、两个不同的消息摘要具有相同的值时,称为() A、攻击 B、冲突 C、散列 D、都不是

6、()用于验证消息完整性。 A、消息摘要 B、加密算法 C、数字信封 D、都不是 7、HASH函数可应用于()。 A、数字签名 B、生成程序或文档的“数字指纹” C、安全存储口令 D、数据的抗抵赖性 8、数字证书采用公钥体制,每个用户设定一把公钥,由本人公开,用它进行: A、加密和验证签名 B、解密和签名 C、加密 D、解密 9、数字签名为保证其不可更改性,双方约定使用() A、HASH算法 B、RSA算法 C、CAP算法 D、ACR算法 10、1是网络通信中标志通信各方身份信息的一系列数据,提供一种在Internet上验证身份的方式 A、数字认证 B、数字证书 C、电子证书 D、电子认证 11、以下关于CA认证中心说法正确的是

OpenSSL来制作证书,在IIS中配置HTTPS(SSL)笔记

info@https://www.360docs.net/doc/b015851417.html, 使用OpenSSL来制作证书,在IIS中配置HTTPS(SSL)笔记 下载Win32编译的openssl版本0.9.8e. 1.获取IIS证书请求:打开IIS,右键单击【默认网站】,在【目录安全性】选项卡中点击【服务器证书】按钮,【下一步】,【新建证书】,【现在准备证书请求--下一步】,输入【名称】,输入【单位】和【部门】,输入【公用名称】,选择【国家】并输入【省】和【市县】并【下一步】,【下一步】,【下一步】,【完成】,IIS的证书请求已经获取,就是C:\certreq.txt。这里请牢记输入的信息。 2.准备openssl工作环境:把openssl(编译后的版本)解压到D:\OpenSSL-0.9.8e\下, 在bin目录下建立目录demoCA,在demoCA下建立private和newcerts目录, 并新建index.txt,内容为空 如果没有serial文件,则到openssl网站上下载openssl的源文件,解压后,到apps\demoCA下,拷贝serial文件过来,两个目录两个文件都放到新建的 demoCA下。 3.生成自签名根证书: openssl req -x509 -newkey rsa:1024 -keyout ca.key -out ca.cer -days 3650 -config D:\OpenSSL-0.9.8e\https://www.360docs.net/doc/b015851417.html,f PEM pass phrase: password // 根证书私钥密码 Verifying - Enter PEM pass phrase: password Country Name: CN // 两个字母的国家代号 State or Province Name: HB // 省份名称 Locality Name: WUHAN // 城市名称 Organization Name: Skyworth TTG // 公司名称 Organizational Unit Name: Service // 部门名称 Common Name: https://www.360docs.net/doc/b015851417.html, // 你的姓名(要是生成服务器端的证书一定要输入域名或者ip地址) Email Address: admin@https://www.360docs.net/doc/b015851417.html, // Email地址

linux下利用openssl来实现证书的颁发(详细步骤)

linux下利用openssl来实现证书的颁发(详细步骤) 1、首先需要安装openssl,一个开源的实现加解密和证书的专业系统。在centos下可以利用yum安装。 2、openssl的配置文件是https://www.360docs.net/doc/b015851417.html,f,我们一般就是用默认配置就可以。如果证书有特殊要求的话,可以修改配置适应需求。这样必须把相关的文件放到配置文件指定的目录下面。 3、首先需要利用openssl生成根证书,以后的服务器端证书或者客户端证书都用他来签发,可以建立多个根证书,就像对应不同的公司一样 #生成根证书的私钥 openssl genrsa -out /home/lengshan/ca.key #利用私钥生成一个根证书的申请,一般证书的申请格式都是csr。所以私钥和csr一般需要保存好openssl req -new -key /home/lengshan/ca.key -out /home/lengshan/ca.csr #自签名的方式签发我们之前的申请的证书,生成的证书为ca.crt openssl x509 -req -days 3650 -in /home/lengshan/ca.csr -signkey /home/lengshan/ca.key -out /home/lengshan/ca.crt #为我们的证书建立第一个序列号,一般都是用4个字符,这个不影响之后的证书颁发等操作 echo FACE > /home/lengshan/serial #建立ca的证书库,不影响后面的操作,默认配置文件里也有存储的地方 touch /home/lengshan/index.txt #建立证书回收列表保存失效的证书

RedhatLinux6.5-OpenSSL升级安装步骤

RedhatLinux6.5-OpenSSL升级安装步骤 各位朋友,2014年4月8日,OpenSSL发布公告,因为一个叫心脏出血的漏洞,全世界绝大多数现网服务器面临威胁,不管是LINUX还是WNDOWS,这里提供大家Redhat Linux 6.5的修复办法和RPM包,因为使用网上下载的源代码编译安装后,所有使用OpenSSL的相关应用全部都起不来,直接报.so文件调用失败,看来红帽子是有什么定制的内容在里面。 没办法,找到红帽子的源代码盘,与网上下载的OpenSSL1.0.1g进行混合,一步步解决Patch冲突问题,修订部分openssl.spec的冲突和错误,经过几个小时的奋斗,终于成功生成.rpm包,经测试在Redhat Linux 6.5上完全升级成功,如果需要用于其他版本的Redhat Linux,请大家自行测试。 因为现网系统,升级可不是小事,并且openssl可是核心模块,很多应用程序都需要调用,升级完成要多做测试,确保所有应用都没有问题才行。并且现网的平台很多都是通过 4A系统访问管理,4A平台连接主机只有SSH方式,一旦升级有问题,SSH也是无法启动的(SSH也调用openssl),就再也无法连接主机了,必须去机房!所以必须先弄一个备份连接,那就只能先把Telnet弄起来吧。 具体如何弄Telnet,我就不想多说了,本文并不是Telnet的安装操作手册,并且还有可能涉及到主机防火墙的配置,所以如何起动Telnet,并且测试能够通过4A平台访问,这是自己的事情,也许还有可能你们的4A平台不支持Telnet,但支持其他方式(虽然这种情况很少见,不支持Telnet的4A平台我还没见过),你就需要使用其他方式来建一个备份连接方式,防止SSH升级有问题,无法再连接主机。 我的步骤是考虑到现网系统的特殊性的,并不是自己在家玩,自己在家玩,怎么玩都行!但现网系统可不能乱玩。 一、在家里用一台测试机升级,试验。 a) 从现网备份OpenSSL的相关系统配置,拿回来备用,主要是以下几个: i./etc/pki/CA目录下面的所有文件 ii./etc/pki/tls目录下面的所有文件 b) 先删除旧版本,以免出现安装冲突 #rpm -qa|grep openssl 一般是有两个,然后一个个删除 #rpm -e openssl --nodeps #rpm -e openssl-devel --nodeps

相关文档
最新文档