ImageVerifierCode 换一换
格式:DOCX , 页数:81 ,大小:73.19KB ,
资源ID:6004360      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6004360.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OpenSSL+命令翻译.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OpenSSL+命令翻译.docx

1、OpenSSL+命令翻译OpenSSL1. 标 题: openssl简介-前言 22. 标题penssl简介-证书 23. 标题penssl简介-加密算法 74. 标题penssl简介-协议 95. openssl简介入门 116. OpenSSL指令 126.1. openssl简介指令 verify 126.2. openssl简介指令asn1parse 166.3. openssl简介指令ca 176.4. openssl简介指令cipher 226.5. openssl简介指令dgst 276.6. openssl简介指令dhparam 286.7. openssl简介指令enc 29

2、6.8. openssl简介指令gendsa 326.9. openssl简介指令genrsa 326.10. openssl简介指令passwd 336.11. openssl简介指令pkcs7 346.12. openssl简介指令rand 356.13. openssl简介指令req 356.14. openssl简介指令rsa 406.15. openssl简介指令rsautl 426.16. openssl简介指令s_client 446.17. openssl简介指令s_server 506.18. openssl简介指令sess_id 526.19. openssl简介指令spe

3、ed 536.20. openssl简介指令version 536.21. openssl简介指令x509 541. 标 题: openssl简介-前言 发信站:BBS水木清华站(FriNov1020:24:102000)引用请指明原作/译者fordesign 不久前接到有关ssl的活, 结果找遍中文网站资料实在奇缺。感觉是好象现在国内做这个技术的人不多所有有兴趣写点东西来介绍一下。 我使用的ssl的toolkit是openssl就用openssl做例子来讲解 openssl实在太大了,指令也多,API也多,更严重的是 它的API没有说明。我打算漫漫说清楚其主要指令的用法,主要API的中文说明

4、,以及使用/编程的方法。 工作量很大,因为我接触它也没几个月,现在大概 完成了1/10吧, 先把目前自己的一些心得,找到的资料 和一些翻译出来的东西贴出来,希望对研究ssl的人有帮助2. 标题penssl简介-证书证书就是数字化的文件,里面有一个实体(网站,个人等)的公共密钥和其他的属性,如名称等。该公共密钥只属于某一个特定的实体,它的作用是防止一个实体假装成另外一个实体。证书用来保证不对称加密算法的合理性。想想吧,如果没有证书记录,那么假设某俩人A与B的通话过程如下:这里假设A的publickey是K1,privatekey是K2,B的publickey是K3,privatekey是K4xx

5、xxxx(kn)表示用kn加密过的一段文字xxxxxxA-hello(plaintext)-BA-hello(plaintext)-BA-Bspublickey-BA-spublickey(K1)-B.如果C想假装成B,那么步骤就和上面一样。A-hello(plaintext)-CA-hello(plaintext)-C注意下一步,因为A没有怀疑C的身份,所以他理所当然的接受了C的publickey,并且使用这个key来继续下面的通信。A-Cspublickey-CA-Aspublickey(K1)-C.这样的情况下A是没有办法发觉C是假的。如果A在通话过程中要求取得B的证书,并且验证证书里面

6、记录的名字,如果名字和B的名字不符合,就可以发现对方不是B.验证B的名字通过再从证书里面提取B的公用密钥,继续通信过程。那么,如果证书是假的怎么办?或者证书被修改过了怎么办?慢慢看下来吧。证书最简单的形式就是只包含有证书拥有者的名字和公用密钥。当然现在用的证书没这么简单,里面至少还有证书过期的deadline,颁发证书的机构名称,证书系列号,和一些其他可选的信息。最重要的是,它包含了证书颁发机构(certificationauthority简称CA)的签名信息。我们现在常用的证书是采用X.509结构的,这是一个国际标准证书结构。任何遵循该标准的应用程序都可以读,写X509结构的证书。通过检查证

7、书里面的CA的名字,和CA的签名,就知道这个证书的确是由该CA签发的然后,你就可以简单证书里面的接收证书者的名字,然后提取公共密钥。这样做建立的基础是,你信任该CA,认为该CA没有颁发错误的证书。CA是第三方机构,被你信任,由它保证证书的确发给了应该得到该证书的人。CA自己有一个庞大的publickey数据库,用来颁发给不同的实体。这里有必要解释一下,CA也是一个实体,它也有自己的公共密钥和私有密钥,否则怎么做数字签名?它也有自己的证书,你可以去它的站点down它的证书得到它的公共密钥。一般CA的证书都内嵌在应用程序中间。不信你打开你的IE,在internet选项里面选中内容,点击证书,看看那

8、个中间证书发行机构和委托根目录发行机构,是不是有一大堆CA的名称?也有时CA的证书放在安全的数据库里面。当你接受到对方的证书的时候,你首先会去看该证书的CA,然后去查找自己的CA证书数据库,看看是否找的到,找不到就表示自己不信任该CA,那么就告吹本次连接。找到了的话就用该CA的证书里面的公用密钥去检查CA在证书上的签名。这里又有个连环的问题,我怎么知道那个CA的证书是属于那个CA的?人家不能造假吗?解释一下吧。CA也是分级别的。最高级别的CA叫RootCAs,其他cheap一点的CA的证书由他们来颁发和签名。这样的话,最后的保证就是:我们信任RootCAs.那些有RootCAs签名过的证书的C

9、A就可以来颁发证书给实体或者其他CA了。你不信任RootCAs?人民币由中国人民银行发行,运到各个大银行,再运到地方银行,你从地方银行取人民币的时候不信任发行它的中国人民银行吗?RootCAs都是很权威的机构,没有必要担心他们的信用。那RootCAs谁给签名?他们自己给自己签名,叫自签名.说了这么多,举个certificate的例子吧,对一些必要的item解释一下。CertificateExampleCertificate:Data:Version:1(0x0)SerialNumber:/系列号02:41:00:00:16SignatureAlgorithm:md2WithRSAEncrypt

10、ion/CA同志的数字签名的算法Issuer:C=US,O=RSADataSecurity,Inc.,OU=Commercial/CA自报家门CertificationAuthorityValidityNotBefore:Nov418:58:341994GMT/证书的有效期NotAfter:Nov318:58:341999GMTSubject:C=US,O=RSADataSecurity,Inc.,OU=CommercialCertificationAuthoritySubjectPublicKeyInfo:PublicKeyAlgorithm:rsaEncryptionRSAPublicKe

11、y1000bit)Modulus(1000bit):00:a4:fb:81:62:7b:ce:10:27:dd:e8:f7:be:6c:6e:c6:70:99:db:b8:d5:05:03:69:28:82:9c:72:7f:96:3f:8e:ec:ac:29:92:3f:8a:14:f8:42:76:be:bd:5d:03:b9:90:d4:d0:bc:06:b2:51:33:5f:c4:c2:bf:b6:8b:8f:99:b6:62:22:60:dd:db:df:20:82:b4:ca:a2:2f:2d:50:ed:94:32:de:e0:55:8d:d4:68:e2:e0:4c:d2:c

12、d:05:16:2e:95:66:5c:61:52:38:1e:51:a8:82:a1:c4:ef:25:e9:0a:e6:8b:2b:8e:31:66:d9:f8:d9:fd:bd:3b:69:d9:ebExponent:65537(0x10001)SignatureAlgorithm:md2WithRSAEncryption76:b5:b6:10:fe:23:f7:f7:59:62:4b:b0:5f:9c:c1:68:bc:49:bb:b3:49:6f:21:47:5d:2b:9d:54:c4:00:28:3f:98:b9:f2:8a:83:9b:60:7f:eb:50:c7:ab:05:

13、10:2d:3d:ed:38:02:c1:a5:48:d2:fe:65:a0:c0:bc:ea:a6:23:16:66:6c:1b:24:a9:f3:ec:79:35:18:4f:26:c8:e3:af:50:4a:c7:a7:31:6b:d0:7c:18:9d:50:bf:a9:26:fa:26:2b:46:9c:14:a9:bb:5b:30:98:42:28:b5:4b:53:bb:43:09:92:40:ba:a8:aa:5a:a4:c6:b6:8b:57:4d:c5其实这是我们看的懂的格式的证书内容,真正的证书都是加密过了的,如下:-BEGINCERTIFICATE-MIIDcTCCA

14、tqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEBhMCQ0gxEjAQBgNVBAgTCWd1YW5nZG9uZzESMBAGA1UEBxMJZ3Vhbmd6aG91MREwDwYDVQQKEwhhc2lhaW5mbzELMAkGA1UECxMCc3cxDjAMBgNVBAMTBWhlbnJ5MSEwHwYJKoZIhvcNAQkBFhJmb3JkZXNpZ25AMjFjbi5jb20wHhcNMDAwODMwMDc0MTU1WhcNMDEwODMwMDc0MTU1WjCBiDELMAkGA1UEBhMCQ0gxEjAQBgNVBAgTCWd1Y

15、W5nZG9uZzESMBAGA1UEBxMJZ3Vhbmd6aG91MREwDwYDVQQKEwhhc2lhaW5mbzELMAkGA1UECxMCc3cxDjAMBgNVBAMTBWhlbnJ5MSEwHwYJKoZIhvcNAQkBFhJmb3JkZXNpZ25AMjFjbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMDYArTAhLIFacYZwP30Zu63mAkgpAjVHaIsIEJ6wySIZl2THEHjJ0kS3i8lyMqcl7dUFcAXlLYi2+rdktoGjBQMOtOHv1/cmo0vzuf38+NrAZSZT9Zwe

16、JfIlp8W9uyz8Dv5hekQgXFg/l3L+HSxwNvQalaOEw2nyf45/np/QhNpAgMBAAGjgegwgeUwHQYDVR0OBBYEFKBL7xGeHQSmICH5wBrOiqNFiildMIG1BgNVHSMEga0wgaqAFKBL7xGeHQSmICH5wBrOiqNFiildoYGOpIGLMIGIMQswCQYDVQQGEwJDSDESMBAGA1UECBMJZ3Vhbmdkb25nMRIwEAYDVQQHEwlndWFuZ3pob3UxETAPBgNVBAoTCGFzaWFpbmZvMQswCQYDVQQLEwJzdzEOMAwGA1UEAxMFa

17、GVucnkxITAfBgkqhkiG9w0BCQEWEmZvcmRlc2lnbkAyMWNuLmNvbYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAGQa9HK2mixM7ML70jZr1QJUHrBoabX2AbDchb4Lt3qAgPOktTc3F+K7NgB3WSVbdqC9r3YpS23RexU1aFcHihDn73s+PfhVjpT8arC1RQDg9bDPvUUYphdQC0U+HF72/CvxGCTqpnWiqsgwxqeog0A8H3doDrffw8Zb7408+Iqf-ENDCERTIFICATE-证书都是有寿命的。就是上面

18、的那个NotBefore和NotAfter之间的日子。过期的证书,如果没有特殊原因,都要摆在证书回收列(certificaterevocationlist)里面.证书回收列,英文缩写是CRL.比如一个证书的key已经被破了,或者证书拥有者没有权力再使用该证书,该证书就要考虑作废。CRL详细记录了所有作废的证书。CRL的缺省格式是PEM格式。当然也可以输出成我们可以读的文本格式。下面有个CRL的例子。-BEGINX509CRL-MIICjTCCAfowDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3Vya

19、XR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05NTA1MDIwMjEyMjZaFw05NTA2MDEwMDAxNDlaMIIBaDAWAgUCQQAABBcNOTUwMjAxMTcyNDI2WjAWAgUCQQAACRcNOTUwMjEwMDIxNjM5WjAWAgUCQQAADxcNOTUwMjI0MDAxMjQ5WjAWAgUCQQAADBcNOTUwMjI1MDA0NjQ0WjAWAgUCQQAAGxcNOTUwMzEzMTg0MDQ5WjAWAgUCQQAAFhcNOTUwM

20、zE1MTkxNjU0WjAWAgUCQQAAGhcNOTUwMzE1MTk0MDQxWjAWAgUCQQAAHxcNOTUwMzI0MTk0NDMzWjAWAgUCcgAABRcNOTUwMzI5MjAwNzExWjAWAgUCcgAAERcNOTUwMzMwMDIzNDI2WjAWAgUCQQAAIBcNOTUwNDA3MDExMzIxWjAWAgUCcgAAHhcNOTUwNDA4MDAwMjU5WjAWAgUCcgAAQRcNOTUwNDI4MTcxNzI0WjAWAgUCcgAAOBcNOTUwNDI4MTcyNzIxWjAWAgUCcgAATBcNOTUwNTAyMDIxMjI2W

21、jANBgkqhkiG9w0BAQIFAAN+AHqOEJXSDejYy0UwxxrH/9+N2z5xu/if0J6qQmK92W0hW158wpJg+ovV3+wQwvIEPRL2rocL0tKfAsVq1IawSJzSNgxG0lrcla3MrJBnZ4GaZDu4FutZh72MR3GtJaAL3iTJHJD55kK2D/VoyY1djlsPuNh6AEgdVwFAyp0v-ENDX509CRL-下面是文本格式的CRL的例子。ThefollowingisanexampleofaCRLintextformat:issuer=/C=US/O=RSADataSecurity,Inc./OU=S

22、ecureServerCertificationAuthoritylastUpdate=May202:12:261995GMTnextUpdate=Jun100:01:491995GMTrevoked:serialNumber=027200004CrevocationDate=May202:12:261995GMTrevoked:serialNumber=0272000038revocationDate=Apr2817:27:211995GMTrevoked:serialNumber=0272000041revocationDate=Apr2817:17:241995GMTrevoked:se

23、rialNumber=027200001ErevocationDate=Apr800:02:591995GMTrevoked:serialNumber=0241000020revocationDate=Apr701:13:211995GMTrevoked:serialNumber=0272000011revocationDate=Mar3002:34:261995GMTrevoked:serialNumber=0272000005revocationDate=Mar2920:07:111995GMTrevoked:serialNumber=024100001FrevocationDate=Ma

24、r2419:44:331995GMTrevoked:serialNumber=024100001ArevocationDate=Mar1519:40:411995GMTrevoked:serialNumber=0241000016revocationDate=Mar1519:16:541995GMTrevoked:serialNumber=024100001BrevocationDate=Mar1318:40:491995GMTrevoked:serialNumber=024100000CrevocationDate=Feb2500:46:441995GMTrevoked:serialNumb

25、er=024100000FrevocationDate=Feb2400:12:491995GMTrevoked:serialNumber=0241000009revocationDate=Feb1002:16:391995GMTrevoked:serialNumber=0241000004revocationDate=Feb117:24:261995GMT总结一下X.509证书是个什么东东吧。它实际上是建立了公共密钥和某个实体之间联系的数字化的文件。它包含的内容有:版本信息,X.509也是有三个版本的。系列号证书接受者名称颁发者名称证书有效期公共密钥一大堆的可选的其他信息CA的数字签名证书由C

26、A颁发,由CA决定该证书的有效期,由该CA签名。每个证书都有唯一的系列号。证书的系列号和证书颁发者来决定某证书的唯一身份。openssl有四个验证证书的模式。你还可以指定一个callback函数,在验证证书的时候会自动调用该callback函数。这样可以自己根据验证结果来决定应用程序的行为。具体的东西在以后的章节会详细介绍的。openssl的四个验证证书模式分别是:SSL_VERIFY_NONE:完全忽略验证证书的结果。当你觉得握手必须完成的话,就选用这个选项。其实真正有证书的人很少,尤其在中国。那么如果SSL运用于一些免费的服务,比如email的时候,我觉得server端最好采用这个模式。S

27、SL_VERIFY_PEER:希望验证对方的证书。不用说这个是最一般的模式了.对client来说,如果设置了这样的模式,验证server的证书出了任何错误,SSL握手都告吹.对server来说,如果设置了这样的模式,client倒不一定要把自己的证书交出去。如果client没有交出证书,server自己决定下一步怎么做。SSL_VERIFY_FAIL_IF_NO_PEER_CERT:这是server使用的一种模式,在这种模式下,server会向client要证书。如果client不给,SSL握手告吹。SSL_VERIFY_CLIENT_ONCE:这是仅能使用在sslsessionrenegot

28、iation阶段的一种方式。什么是SSLsessionrenegotiation?以后的章节再解释。我英文差点,觉得这个词组也很难翻译成相应的中文。以后的文章里,我觉得很难直接翻译的单词或词组,都会直接用英文写出来。如果不是用这个模式的话,那么在regegotiation的时候,client都要把自己的证书送给server,然后做一番分析。这个过程很消耗cpu时间的,而这个模式则不需要client在regotiation的时候重复送自己的证书了。3. 标题penssl简介-加密算法要理解ssl先要知道一些加密算法的常识.加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的送

29、到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如果密文给人家截获而泄密。加密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密fordesign这么一串字符,就把每个字符都变成它的后一个字符,那么就是gpseftjhm了,这样的东西人家当然看不明白,接收方用相反的方法就可以得到原文。当然这只是个例子,现在应该没人用这么搞笑的加密算法了吧。不基于KEY的加密算法好象一直用到了计算机出现。我记得古中国军事机密都是用这种方式加密的。打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式加密的。这种算法的安全性以保持算法的保密为前提。这种加密算法的缺点太明显

30、了,就是一旦你的加密算法给人家知道,就肯定挂。日本中途岛惨败好象就是密码给老米破了。设计一种算法是很麻烦的,一旦给人破了就没用了,这也忑浪费。我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用这个key来对明文进行加密。这样的算法即使一次被破,下次改个key,还可以继续用。key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,只要你用的算法认为你选来做key的那玩意合法就行。这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。也就是说应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。其实现在常用的基于K

31、EY的加密算法在网络上都可以找到,很多革命同志(都是老外)都在想办法破解基于key的加密算法又包括俩类:对称加密和不对称加密。对称加密指的是双方使用完全相同的key,最常见的是DES.DES3,RC4等。对称加密算法的原理很容易理解,通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和私有密钥。举个例子比较容易理解,我们们假设通信双方分别是A,B.A,拥有KEY_A1,KEY_A2,其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。B,拥有KEY_B1,KEY_B2,其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开。也就

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1