openssl使用手册资料_第1页
openssl使用手册资料_第2页
openssl使用手册资料_第3页
openssl使用手册资料_第4页
openssl使用手册资料_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OpenSSL有两种运行模式:交互模式和批处理模式。

直接输入opens©回车进入交互模式,输入带命令选项的openssl进入批处理模式。

⑴配置文件

OpenSSL的默认配置文件位置不是很固定,可以用opensslca命令得知。

你也可以指定自己的配置文件。

当前只有三个命令会使用这个配置文件:有望未来版本会

OpenSSLca,req,x509o

有更多命令使用配置文件。

⑵消息摘要算法

支持的算法包括:(有时候叫做

MD2,MD4,MD5,MDC2,SHA1DSS1),RIPEMD-160o

SHA1和RIPEMD-160产生160位哈西值,其他的产生128位。除非出于兼容性考虑,否

则推荐使用SHA1或者RIPEMD-160。

除了RIPEMD-160需要用rmdl60命令外,其他的算法都可用dgst命令来执行。

OpenSSL对于SHA1的处理有点奇怪,有时候必须把它称作DSS1来引用。

消息摘要算法除了可计算哈西值,还可用于签名和验证签名。签名的时候,对于DSA

生成的私匙必须要和DSS1(即SHAD搭配。而对于RSA生成的私匙,任何消息摘要算法

都可使用。

##########################################################

###

#消息摘要算法应用例子

#用SHA1算法计算文件fiMtxt的哈西值,输出到stdout

$openssldgst-shalfile.txt

#用SHA1算法计算文件file.txt的哈西值,输出到文件digesttxt

$opensslshal-outdigesttxtfile.txt

#用DSSl(SHAl)算法为文件file.txt签名,输出到文件dsasign.bin

#签名的privatekey必须为DSA算法产生的,保存在文件dsakey.pem中

$openssldgst-dssl-signdsakey.pem-outdsasign.binfile.txt

#用dssl算法验证file.txt的数字签名dsasign.bin,

#验证的privatekey为DSA算法产生的文件dsakey.pem

$openssldgst-dssl-prverifydsakey.pem-signaturedsasign.binfile.txt

#用shal算法为文件file.txt签名,输出到文件rsasign.bin

#签名的privatekey为RSA算法产生的文件rsaprivate.pem

$opensslshal-signrsaprivate.pem-outrsasign.binfile.txt

#用shal算法验证行le.txt的数字签名rsasign.bin,

#验证的publickey为RSA算法生成的rsapublic.pem

$opensslshal-verifyrsapublic.pem-signaturersasign.binfile.txt

(3)对称密码

OpenSSL支持的对称密码包括Blowfish,CAST5,DES,3DES(TripleDES),IDEA,RC2,

以及还新增了的支持。很多对称密码支持不同的模式,

RC4RC5dOpenSSL0.9.7AES

包括以及。对于每一种密码,默认的模式总是需要特别指出的

CBC,CFB,ECBOFBCBCO

是,尽量避免使用ECB模式,要想安全地使用它难以置信地困难。

enc命令用来访问对称密码,此外还可以用密码的名字作为命令来访问。除了加解密,

base64可作为命令或者enc命令选项对数据进行base64编码/解码。

当你指定口令后,命令行工具会把口令和一个8字节的sa*随机生成的)进行组合,然

后计算MD5hash值。这个hash值被切分成两部分:加密钥匙(key)和初始化向量

当然加密钥匙和初始化向量也可以手工指定,但是不推荐那样,

(initializationvector)o

因为容易出错。

##########################################################

###

#对称加密应用例子

#用算法的模式加密文件

DES3CBCplaintextdoc;

#加密结果输出到文件ciphertext.bin

$opensslenc-des3-salt-inplaintextdoc-outciphertext.bin

#用DES3算法的OFB模式解密文件ciphertextbin,

#提供的口令为trousers,输出到文件plaintextdoc

#注意:因为模式不同,该命令不能对以上的文件进行解密

$opensslenc-des-ede3-ofb-d-inciphertextbin-outplaintextdoc-pass

pass:trousers

#用Blowfish的CFB模式加密plaintextdoc,口令从环境变量PASSWORD中取

#输出到文件ciphertext.bin

$opensslbf-cfb-salt-inplaintextdoc-outciphertext.bin-pass

env:PASSWORD

#给文件ciphertext.bin用base64编码,输出到文件base64,txt

$opensslbase64-inciphertext.bin-outbase64.txt

#用RC5算法的CBC模式加密文件plaintextdoc

#输出到文件ciphertext.bin,

#saltkey和初始化向量(iv)在命令行指定

$opensslrc5-inplaintextdoc-outciphertext.bin-SC62CB1D49F158ADC-iv

E9EDACA1BD7090C6-K

89D4B1678D604FAA3DBFFD030A314B29

⑷公匙密码

41Diffie-Hellman

被用来做钥匙协商(keyagreement),具有保密(secrecy)功能,但是不具有加密

(encryption)或者认证(authentication)功能,因此在进行协商前需用别的方式对另一方进

彳秋证。

首先,Diffie-Hellman创建一套双方都认可的参数集,包括一个随机的素数和生成因

子(generatorvalue,通常是2或者5)。基于这个参数集,双方都计算出一个公钥匙和私

钥匙,公钥匙交给对方,对方的公钥匙和自己的私钥匙用来计算共享的钥匙。

OpenSSL0,9.5提供了dhparam命令用来生成参数集,但是生成公钥匙和私钥匙的

命令dh和gendh已不推荐使用.未来版本可能会加上这个功能。

##########################################################

###

#Diffie-Hellman应用例子

#使用生成因子2和随机的1024・bit的素数产生DOffie-Hellman参数

#输出保存到文件dhparam.pem

$openssldhparam-outdhparam.pem-21024

#从dhparam.pem中读取D卅ie-Hell参数,以C代码的形式

#输出到stdout

$openssldhparam-indhparam.pem-noout-C

4.2数字签名算法(DigitalSignatureAlgorithm,DSA)

主要用来做认证,不能用来加密(encryption)或者保密(secrecy),因此它通常和

Diffie-Hellman配合使用。在进行钥匙协商前先用DSA进行认证(authentication)。

有三个命令可用来完成DSA算法提供的功能。

dsaparam命令生成和检查DSA参数,还可生成DSA私钥匙。

gendsa命令用来为一套DSA参数生成私钥匙,这把私钥匙可明文保存,也可指定加

密选项加密保存。可采用DES,3DES,或者IDEA进行加密。

dsa命令用来从DSA的私钥匙中生成公钥匙,还可以为私钥匙加解密,或者改变私钥

匙加密的口令。

##########################################################

###

#DSA应用例子

#生成1024位DSA参数集,并输出到文件dsaparam.pem

$openssldsaparam-outdsaparam.pem1024

#使用参数文件dsaparam.pem生成DSA私钥匙,

#采用3DES加密后输出到文件dsaprivatekey.pem

$opensslgendsa-outdsaprivatekey.pem-des3dsaparam.pem

#使用私钥匙dsaprivatekey.pem生成公钥匙,

#输出到dsapublickey.pem

$openssldsa=indsaprivatekey.pem-pubout-outdsapublickey.pem

#从dsaprivatekey.pem中读取私钥匙,解密并输入新口令进行加密,

#然后写回文件dsaprivatekey.pem

$openssldsa-indsaprivatekey.pem-outdsaprivatekey.pem-des3-passin

4.3RSA

得名于它的三位创建者:

RSARonRivest,AdiShamir,LeonardAdleman9

目前之所以如此流行,是因为它集保密、认证、加密的功能于T本.

不像Diffie^Hellman和DSA,RSA算法不需要生成参数文件,这在很大程度上简化

了操作。

有三个命令可用来完成RSA提供的功能6

genrsa命令生成新的RSA私匙,推荐的私匙长度为1024位,不建议低于该值或者

高于2048位。

缺省情况下私匙不被加密,但是可用DES、3DES或者IDEA加密。

rsa命令可用来添加、修改、删除私匙的加密保护,也可用来从私匙中生成RSA公匙,

或者用来显示私匙或公匙信息。

「sautl命令提供RSA加密和签名功能。但是不推荐用它来加密大块数据,或者给大块

数据签名,因为这种算法的速度较来慢.通常用它给对称密

匙加密,然后通过enc命令用对称密匙对大块数据加密。

##########################################################

###

#RSA应用例子

#产生1024位RSA私匙,用3DES加密它,口令为trousers,

#输出到文件「saprivatekeypem

$opensslgenrsa-outrsaprivatekey.pem-passoutpass:trousers-des31024

#从文件rs叩rivatekey.pem读取私匙,用口令trousers解密,

#生成的公钥匙输出到文件rsapublickey.pem

$opensslrsa-inrsaprivatekey.pem-passinpass;trousers-pubout-out

rsapubckey.pem

#用公钥匙rsapublickey.pem加密文件plain.txt,

#输出到文件cipher.txt

$opensslrsautl-encrypt-pubin-inkeyrsapublickey.pem-inplain.txt-out

cipher.txt

#使用私钥匙rsaprivatekey,pern解密密文cipher.txt,

#输出到文件plain.txt

$opensslrsautl-decrypt-inkeyrsaprivatekey.pem-incipher.txt-outplain.txt

#用私钥匙rs叩rivatekey.pem给文件plaimtxt签名,

#输出到文件signature.bin

$opensslrsautl-sign-inkeyrsaprivatekey.pem-inplain.txt-outsignature.bin

#用公钥匙rsapublickey.pem验证签名signature.bin,

#输出到文件plain.txt

$opensslrsautl-verify-pubin-inkeyrsapublickey.pem-insignature.bin-out

plain

(5)S/MIM[[SecureMultipurposeInternetMailExchange]

S/MIME应用于安全邮件交换,可用来认证和加密,是PGP的竞争对手。与PGP不

同的是,它需要一套公匙体系建立信任关系,而PGP只需直接从臬个地方获取对方的公匙

就可以.然而正因为这样,它的扩展性比PGP要好。另一方面,S/MIME可以对多人群发

安全消息,而PGP则不能。

命令$mime可用来加解密、签名、验证S/MIMEv2消息(对S/MIMEv3的支持有限

而且很可能不工作)。对于没有内置S/MIME支持的应用来说,可通过smime来处理进来

(incoming)和出去(outgoing)的消息。

##########################################################

###

#RSA应用例子

#从X.509证书文件cert.pem中获取公钥匙,

#用3DES加密mail.txt

#输出到文件mail.enc

$opensslsmime-encrypt-inmail.txt-des3-outmail.enccert.pem

#从X.509证书文件cert.pem中获取接收人的公钥匙,

#用私钥匙key.pem解密S/MIME消息mail.enc,

#结果输出到文件mail.txt

$opensslsmime-decrypt-inmail.enc-recipcert.pem-inkeykey.pem-out

mail.txt

#cert.pem为X.509证书文件,用私匙key,pem为mail.txt签名,

#证书被包含在S/MIME消息中,输出到文件maiLsgn

$opensslsmime-sign-inmail.txt-signercert.pem-inkeykey.pem-out

mail.sgn

#验证S/MIME消息maiLsgn,输出到文件mail.txt

#签名者的证书应该作为S/MIME消息的一部分包含在maiLsgn中

$opensslsmime-verify-inmail.sgn-outmail.txt

(6)口令和口令输入(passphase)

OpenSSL口令选项名称不是很一致,通常为passin和passout.可以指定各种各样

的口令输入来源,不同的来源所承担的风险取决于你的接受能九

stdin

这种方式不同于缺省方式,它允许重定向标准输入,而缺省方式下是直接从真实的终

端设备(TTY)读入口令的。

pass:

直接在命令行指定口令为password.不推荐这样使用。

env;

从环境变量中获取口令,比pass方式安全了些,但是进程环境仍可能被别有用心的进

程读到。

file:

从文件中获取,注意保护好文件的安全性。

fd:

从文件描述符中读取。通常情况是父进程启动OpenSSL命令行工具,由于OpenSSL

继承了父进程的文件描述符,因此可以从文件描述符中读取口令。

(7)重置伪随机数生成器(SeedingthePseudorandomNumberGenerator)

对于OpenSSL,正确地重置PRNG(Pseud。RandomNumberGenerator很重要。

命令行工具会试图重置PRNG,当然这不是万无一失的。如果错误发生,命令行工具

会生成一条警告,这意味着生成的随机数是可预料的,这时就应该采用一种更可靠的重置

机制而不能是默认的。

在Windows系统,重置PRNG的来源很多,比如屏幕内容。在Unix系统,通常通

过设备/dev/urandom来重置PRNG.从0.9.7开始,OpenSSL还试图通过连接EGD套

接字来重置PRNG。

除了基本的重置来源,命令行工具还会查找包含随机数据的文件。假如环境变量

RANDFILE被设置它的值就可以用来重置PRNG。如果没有设置则HOME目录下的.「nd

文件将会使用。

OpenSSL还提供了一个命令rand用来指定重置来源文件。来源文件之间以操作系统

的文件分割字符隔开。对于Unix系统,如果来源文件是EGD套接字,则会从EGD服务

器获取随机数。

EGD服务器是用Perl写成的收集重置来源的daemon可运行在装了Perl的基于Unix

的系统,见o如果没有/dev/random或者/dev/urandom,

EGD是T不错的候选

EGD不能运行在Windows系统中。对于Windows环境,推荐使用EGADS(Entropy

它可运行在和系统中,见

GatheringAndDistributionSystem)eUnixWindows

/egadso

(本文参考O'Reilly-NetworkSecuritywithOpenSSL)

附加测试实例:

##########################################################

###

#消息摘要算法应用例子

#用SHA1算法计算文件file.txt的哈西值,输出到stdout

$openssldgst-shalfile.txt

[root@server02echozhaohang>file.txt

[root@server02-]#openssldgst-shalfile.txt

SHAl(file.txt)=cf017022db32f04cb57d2eclae6b39751a6155e4

#用SHA1算法计算文件file.txt的哈西值输出到文件digests

$opensslshal-outdigesttxtfile.txt

[root@server02~]#opensslshal-outdigesttxtfile.txt

[root@server02~]#catdigest.txt

SHAl(file.txt)=cf017022db32f04cb57d2eclae6b39751a6155e4

#用DSSl(SHAl)算法为文件We.txt签名,输出到文件dsasign.bin

#签名的privatekey必须为DSA算法产生的,保存在文件dsakey.pem中

$openssldgst-dssl-signdsakey.pem-outdsasign.binfile.txt

#用dssl算法验证file.txt的数字签名dsasign.bin,

#验证的privatekey为DSA算法产生的文件dsakey.pem

$openssldgst-dssl-prverifydsakey.pem-signaturedsasign.binfile.txt

#用shal算法为文件file.txt签名输出到文件rsasign.bin

#签名的privatekey为RSA算法产生的文件rsaprivate.pem

$opensslshal-signrsaprivate.pem-outrsasign.binfile.txt

#用shal算法验证file.txt的数字签名rsasign.bin,

#验证的publickey为RSA算法生成的rsapublk.pem

$opensslshal-verifyrsapublic.pem-signaturersasign.binfile.txt

##########################################################

###

##########################################################

###

#对称加密应用例子

#用DES3算法的CBC模式加密文件file.txt

#加密结果输出到文件ciphertextbin

$opensslenc-des3-salt-infile.txt-outciphertext.bin-passpass:123456

#用DES3算法的CBC模式解密文件ciphertextbin

$opensslenc-des3-d-inciphertext.bin-passpass:123456

#用DES3算法的OFB模式解密文件ciphertextbin:

#提供的口令为trousers,输出到文件plaintext.doc

#注意:因为模式不同,该命令不能对以上的文件进行解密

$opensslenc-des-ede3-ofb-d-inciphertext.bin-outfile.txt-pass

pass:123456

#用Blowfish的CFB模式加/解密file.txt,口令从环境变量HOSTNMAE中取

$opensslbf-cfb-salt-infile.txt-outciphertext.bin-passenv:HOSTNAME

$opensslbf-cfb-d-inciphertext.bin-passenv:HOSTNAME

##########################################################

###

##########################################################

###

#DSA应用例子•数字签名算法

#给文件ciphertext.bin用base64编码,输出到文件base64.txt

$opensslbase64-inciphertext.bin-outbase64,txt

#使用参数文件dsaparam.pem生成DSA私钥匙,

#采用3DES加密后输出到文件dsaprivatekey.pem

$opensslgendsa-outdsaprivatekey.pem-des3dsaparam.pem

#使用私钥匙dsaprivatekey.pem生成公钥匙,

#输出到dsapublickey.pem

$ope

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论