1.生成一对RSA密匙(非对称密匙,包含1个公共+一个私用),

 $ openssl genrsa -out  <fichier>  <taille>

例子: openssl genrsa -out  maCle.pem 1024

可以用查看我们的密匙

$ cat maCle.pem

[c-sharp] view plaincopy
  1. $ cat maCle.pem
  2. −−−−−BEGIN RSA PRIVATE KEY −−−−−
  3. MIICXAIBAAKBgQCveVjLltevTC5kSAiTYjHMVuAR80DHMLWCp3BOVZ49eXwraXxO
  4. 7AfKWpA5g0wFZgZNERIfFYaCnvaQDQA+9BRIfsSSr3oSw0My5SD6eg15v0VmJmvP
  5. d8LgBypJHbr6f5MXWqntvzp0Qvg6ddeNpUIrqkkh4uDfHFDWqyrkQUCvKwIDAQAB
  6. AoGANchUrfnq28DWy0fE0R+cscvC292Z8jN8vrIBWxEk8iSlKU0om6v+a0g8wlP6
  7. 3 gC6V66uxjY7xxdf7SD+/UykVl4PGFymhLtywSdGlgec3tLgBtV3ytJFilAVDBij
  8. LzQwUegCO4zt1JWYc6vvaVdNyQSaGIIeYGsNDWEYlOtDSlkCQQDVRn9JS15G8p+H
  9. 4Z0PbU9ZQg2L1u9/SD/kELVe3Kx1fdHulxH0v8V2AgPdXA29Nhi+TxUtC+V8CMc2
  10. KXmAvFsHAkEA0qBDmjHMDPwcGaqbQ2lymYQIGlZ5TLQFA98Dey2uE+CB6pmS/ e /Z
  11. ilu1IaasuE3vBzXfB /JU7DUkV++JQ7TtvQJBAL2s5dUch2sXqlOhjhpDP/eE7CE6
  12. 9WLAsbm2Nmd4YJRZYtQLXPfLeeSapC9BCCMHsnfGQ3H9i4mFEQ6VUi7w1Q8CQAQa
  13. pVaS09QI8Y86eM4GdvowzWud9b0d4N8jcFDtIfA3NrDYjzmte8KraMsgEUuCET9F
  14. uHPSL/9uRagE/dq44s0CQCMQU4PMqkMtwzCFsV8ZqLmkDPn1binIAwRLYFcsQRDt
  15. gTi6rycz3Pk1hCVzBfyMd8zwqpwKmR5FoOXuJEv+mVg=
  16. −−−−−END RSA PRIVATE KEY −−−−−

用cat只看到了一些字符串,但我们完全不懂他的含义,openssl还提供了一个功能就是查看RSA

如果研究过非对称加密的朋友,可以用这个命令看出这对密匙的生成参数: 2个大素数, 1个模等

$ openssl rsa -in <fichier> -text -noout

[c-sharp] view plaincopy
  1. $openssl rsa −in maCle.pem −text −noout
  2. Private −Key : (1024 bit)
  3. modulus :
  4. 0 0 : a f : 7 9 : 5 8 : cb : 9 6 : d7 : a f : 4 c : 2 e : 6 4 : 4 8 : 0 8 : 9 3 : 6 2 :
  5. 3 1 : c c : 5 6 : e0 : 1 1 : f 3 : 4 0 : c7 : 3 0 : b5 : 8 2 : a7 : 7 0 : 4 e : 5 5 :
  6. 9 e : 3 d : 7 9 : 7 c : 2 b : 6 9 : 7 c : 4 e : e c : 0 7 : ca : 5 a : 9 0 : 3 9 : 8 3 :
  7. 4c :05:66:06:4 d :11:12:1 f :15:86:82:9 e : f6 :90:0 d :
  8. 0 0 : 3 e : f 4 : 1 4 : 4 8 : 7 e : c4 : 9 2 : a f : 7 a : 1 2 : c3 : 4 3 : 3 2 : e5 :
  9. 2 0 : f a : 7 a : 0 d : 7 9 : b f : 4 5 : 6 6 : 2 6 : 6 b : c f : 7 7 : c2 : e0 : 0 7 :
  10. 2 a : 4 9 : 1 d : ba : f a : 7 f : 9 3 : 1 7 : 5 a : a9 : ed : b f : 3 a : 7 4 : 4 2 :
  11. f 8 : 3 a : 7 5 : d7 : 8 d : a5 : 4 2 : 2 b : aa : 4 9 : 2 1 : e2 : e0 : d f : 1 c :
  12. 5 0 : d6 : ab : 2 a : e4 : 4 1 : 4 0 : a f : 2 b
  13. publicExponent: 65537 ( 0 x10001 )
  14. privateExponent :
  15. 3 5 : c8 : 5 4 : ad : f 9 : ea : db : c0 : d6 : cb : 4 7 : c4 : d1 : 1 f : 9 c :
  16. b1 : cb : c2 : db : dd : 9 9 : f 2 : 3 3 : 7 c : be : b2 : 0 1 : 5 b : 1 1 : 2 4 :
  17. f 2 : 2 4 : a5 : 2 9 : 4 d : 2 8 : 9 b : ab : f e : 6 b : 4 8 : 3 c : c2 : 5 3 : f a :
  18. de : 0 0 : ba : 5 7 : ae : ae : c6 : 3 6 : 3 b : c7 : 1 7 : 5 f : ed : 2 0 : f e :
  19. f d : 4 c : a4 : 5 6 : 5 e : 0 f : 1 8 : 5 c : a6 : 8 4 : bb : 7 2 : c1 : 2 7 : 4 6 :
  20. 9 6 : 0 7 : 9 c : de : d2 : e0 : 0 6 : d5 : 7 7 : ca : d2 : 4 5 : 8 a : 5 0 : 1 5 :
  21. 0 c : 1 8 : a3 : 2 f : 3 4 : 3 0 : 5 1 : e8 : 0 2 : 3 b : 8 c : ed : d4 : 9 5 : 9 8 :
  22. 7 3 : ab : e f : 6 9 : 5 7 : 4 d : c9 : 0 4 : 9 a : 1 8 : 8 2 : 1 e : 6 0 : 6 b : 0 d :
  23. 0d : 6 1 : 1 8 : 9 4 : eb : 4 3 : 4 a : 5 9
  24. prime1 :
  25. 0 0 : d5 : 4 6 : 7 f : 4 9 : 4 b : 5 e : 4 6 : f 2 : 9 f : 8 7 : e1 : 9 d : 0 f : 6 d :
  26. 4 f : 5 9 : 4 2 : 0 d : 8 b : d6 : e f : 7 f : 4 8 : 3 f : e4 : 1 0 : b5 : 5 e : dc :
  27. ac : 7 5 : 7 d : d1 : e e : 9 7 : 1 1 : f 4 : b f : c5 : 7 6 : 0 2 : 0 3 : dd : 5 c :
  28. 0d : bd : 3 6 : 1 8 : be : 4 f : 1 5 : 2 d : 0 b : e5 : 7 c : 0 8 : c7 : 3 6 : 2 9 :
  29. 7 9 : 8 0 : bc : 5 b : 0 7
  30. 2
  31. prime2 :
  32. 0 0 : d2 : a0 : 4 3 : 9 a : 3 1 : c c : 0 c : f c : 1 c : 1 9 : aa : 9 b : 4 3 : 6 9 :
  33. 7 2 : 9 9 : 8 4 : 0 8 : 1 a : 5 6 : 7 9 : 4 c : b4 : 0 5 : 0 3 : d f : 0 3 : 7 b : 2 d :
  34. ae : 1 3 : e0 : 8 1 : ea : 9 9 : 9 2 : f d : e f : d9 : 8 a : 5 b : b5 : 2 1 : a6 :
  35. ac : b8 : 4 d : e f : 0 7 : 3 5 : d f : 0 7 : f 2 : 5 4 : e c : 3 5 : 2 4 : 5 7 : e f :
  36. 8 9 : 4 3 : b4 : ed : bd
  37. exponent1 :
  38. 0 0 : bd : ac : e5 : d5 : 1 c : 8 7 : 6 b : 1 7 : aa : 5 3 : a1 : 8 e : 1 a : 4 3 :
  39. 3 f : f 7 : 8 4 : e c : 2 1 : 3 a : f 5 : 6 2 : c0 : b1 : b9 : b6 : 3 6 : 6 7 : 7 8 :
  40. 6 0 : 9 4 : 5 9 : 6 2 : d4 : 0 b : 5 c : f 7 : cb : 7 9 : e4 : 9 a : a4 : 2 f : 4 1 :
  41. 0 8 : 2 3 : 0 7 : b2 : 7 7 : c6 : 4 3 : 7 1 : f d : 8 b : 8 9 : 8 5 : 1 1 : 0 e : 9 5 :
  42. 5 2 : 2 e : f 0 : d5 : 0 f
  43. exponent2 :
  44. 0 4 : 1 a : a5 : 5 6 : 9 2 : d3 : d4 : 0 8 : f 1 : 8 f : 3 a : 7 8 : c e : 0 6 : 7 6 :
  45. f a : 3 0 : cd : 6 b : 9 d : f 5 : bd : 1 d : e0 : d f : 2 3 : 7 0 : 5 0 : ed : 2 1 :
  46. f 0 : 3 7 : 3 6 : b0 : d8 : 8 f : 3 9 : ad : 7 b : c2 : ab : 6 8 : cb : 2 0 : 1 1 :
  47. 4b : 8 2 : 1 1 : 3 f : 4 5 : b8 : 7 3 : d2 : 2 f : f f : 6 e : 4 5 : a8 : 0 4 : f d :
  48. da : b8 : e2 : cd
  49. coefficient :
  50. 2 3 : 1 0 : 5 3 : 8 3 : c c : aa : 4 3 : 2 d : c3 : 3 0 : 8 5 : b1 : 5 f : 1 9 : a8 :
  51. b9 : a4 : 0 c : f 9 : f 5 : 6 e : 2 9 : c8 : 0 3 : 0 4 : 4 b : 6 0 : 5 7 : 2 c : 4 1 :
  52. 1 0 : ed : 8 1 : 3 8 : ba : a f : 2 7 : 3 3 : dc : f 9 : 3 5 : 8 4 : 2 5 : 7 3 : 0 5 :
  53. f c : 8 c : 7 7 : c c : f 0 : aa : 9 c : 0 a : 9 9 : 1 e : 4 5 : a0 : e5 : e e : 2 4 :
  54. 4b : f e : 9 9 : 5 8

2.很多时候让刚刚生成的密匙以明码的形式存在是有危险的,所以openssl还提供了用对称加密法(DES, DES3等)加密RSA密匙的功能

 $ openssl rsa -in <RSA 密码 文件> -des3 -out <RSA 密码 文件>

例子:

[c-sharp] view plaincopy
  1. $opensslrsa −in maCle.pem −des3 −out maCle.pem
  2. w r i t i n g RSA key
  3. Enter PEM p a s s p h r a s e :
  4. V e r i f y i n g − Enter PEM p a s s p h r a s e :

3. 刚才说过,RSA包含1个公共+一个私密匙,openssl提供将公用部分从密匙里提取出来,因为在跟对方交流时,对方只要你的公共部分就可以了,如果你的私有部分也被人知道了,那RSA加密的意义就失去了;

所以记住:RSA的私有密匙只能有你一个人知道,如果泄露了,得马上更新一对新的RSA 密匙

 $openssl rsa -in < RSA 密码 文件 > -pubout -out < RSA 公共密码 文件 >

例子:

[c-sharp] view plaincopy
  1. $openssl rsa −in maCle.pem −pubout −out maClePublique.pem

4.加密文件

 $openssl rasutl -encrypt -in <原始文件> -inkey < RSA 密码 文件> -out <输出文件>

或者只用公用密码加密

 $openssl rasutl -encrypt -in <原始文件> -inkey -pubin < RSA 公共 密码 文件> -out <输出文件>

5。解密的话只要将 -encrypt 改为 -decrypt就好,当然文件对象改变一下

6. 签名不只适合小文件,如果对大文件的话得引进印章(Message Digests). 先计算该文件的印章

 $ openssl dgst <hachage算法>  -out  <印章文件> <原始大文件>

hachage算法有:

* MD5  (-md5)

* SHA1 (-sha1)

* RPEMD160 (-ripemd160)

然后要对该印章签名

$ openssl rsautl -sign -in <印章文件>  -inkey < RSA 密码 文件> -out <签名文件>

然后我们就可以将原始大文件+它的签名文件 发给对方了, 在对方可以用我们提供给他的RSA 公共 密码 文件 验证该文件,如果符合就说明是我们的文件;否则说明在传输过程中该文件已被人篡改过,不能相信这个文件内容

对方的验证方法:

先从受到的签名文件中获取“对方印章文件1 ”

 $ openssl rsautl -verify  -in <签名文件> -pubin -inkey < RSA 公共 密码 文件 > -out <对方印章文件1>

然后从收到的原始大文件中用同样的hachage算法 算出另一个““对方印章文件2 ”

 $ openssl dgst <hachage算法>  -out  <对方印章文件2> <原始大文件>

最后只要比较这两个获得的 “对方印章文件1 ”与 ““对方印章文件2 ”是否完全相同,如果是就说明文件未必篡改

 $ diff < 对方印章文件1 > < 对方印章文件2 >

7.证书的创建

首先得建立一个证书申请请求:

创建文件 req.cnf , 包含我们的个人信息

[c-sharp] view plaincopy
  1. [ req ]
  2. default_bits            = 1024
  3. distinguished_name      = req_DN
  4. [ req_DN ]
  5. countryName         = "1. Pays (code a 2 lettres) "
  6. countryName_default     = FR
  7. countryName_min         = 2
  8. countryName_max         = 2
  9. stateOrProvinceName     = "2. Departement ou province "
  10. stateOrProvinceName_default = Nord (59)
  11. localityName            = "3. Nom de la localite "
  12. localityName_default        = Villeneuve d/'Ascq
  13. 0.organizationName      = "4. Organisation "
  14. 0.organizationName_default  = Universite de Lille 1
  15. organizationalUnitName      = "5. Unite ou departement"
  16. organizationalUnitName_default  = "Licence & Master  info"
  17. commonName          = "6. Nom "
  18. commonName_max          = 64
  19. commonName_default      = Raymond Calbuth
  20. emailAddress            = "7. Adresse e-mail "
  21. emailAddress_max        = 60
  22. emailAddress_default        = Raymond.Calbuth@ronchin.fr
  23. extensions      = x509v3
  24. [ x509v3 ]
  25. subjectAltName      = email:copy
  26. basicConstraints        = CA:false,pathlen:0
  27. nsComment       = "Certificat emis par $caname"
  28. nsCertType      = client, email, objsign

 $ openssl  req −configreq.cnf −new −key maCle . pem −out maRequete . pem

可以查看我们的申请文件

例子:

[c-sharp] view plaincopy
  1. $ openssl req −config req.cnf −in maRequete.pem −text -noout
  2. Certificate Request :
  3. Data :
  4. V e r s i o n : 0 ( 0 x0 )
  5. S u b j e c t : C=FR, ST=Nord ( 5 9 ) , L=V i l l e n e u v e d ' Ascq , O=U n i v e r s i t e de L i l l e 1 , OU=L
  6. i n f o , CN=XXXX / e m a i l A d d r e s s=xxx@ l i f l . f r
  7. S u b j e c t P u b l i c Key I n f o :
  8. P u b l i c Key Algorithm : r s a E n c r y p t i o n
  9. 5
  10. RSA P u b l i c Key : ( 2 0 4 8 b i t )
  11. Modulus ( 2 0 4 8 b i t ) :
  12. 0 0 : b4 : f 3 : e0 : 6 5 : 5 0 : 1 2 : f 6 : 5 1 : c2 : 9 6 : 9 0 : 7 7 : 5 b : c3 :
  13. 2 5 : 4 6 : 1 7 : 1 f : 3 b : 0 e : b9 : a0 : 5 a : f a : 2 7 : 1 4 : 2 c : 4 5 : 9 6 :
  14. 8 8 : 6 8 : 9 c : 6 0 : b1 : 8 a : 9 4 : 2 c : 2 2 : 7 6 : f 0 : de : 7 e : 0 2 : 1 b :
  15. 1d : 1 d : 5 7 : b6 : b8 : 8 d : 5 5 : 7 e : 1 5 : a4 : 5 d : a1 : c e : 0 2 : 7 1 :
  16. cd : 5 6 : 3 0 : dc : 6 7 : 6 4 : f b : cb : c7 : bc : 6 4 : 7 5 : 2 3 : 4 c : 2 f :
  17. a5 : 0 6 : 4 7 : a6 : 3 9 : 4 6 : 7 4 : f 1 : 8 a : 9 1 : ed : ad : 8 f : 7 d : d3 :
  18. 3 4 : c0 : 8 7 : 7 9 : 6 1 : a7 : b9 : 8 c : 1 d : 8 c : 4 5 : 0 d : c4 : d f : a8 :
  19. ea : 2 2 : 0 c : 5 b : f 2 : 0 c : 6 b : 1 1 : 8 e : 2 b : f 6 : 6 a : 9 e : b0 : 1 d :
  20. e f : 5 3 : e7 : ba : 3 2 : 2 8 : e e : 9 8 : d4 : 8 3 : 1 0 : 6 3 : 6 4 : c2 : 4 f :
  21. 4 4 : 1 2 : 5 1 : f 2 : a6 : 3 1 : 6 8 : 3 0 : d2 : f 9 : 8 d : 7 a : b f : 2 3 : 0 9 :
  22. 1 8 : a4 : ab : 0 a : 2 1 : f c : 2 5 : 8 8 : ba : 0 9 : 5 a : 7 0 : 8 2 : 3 3 : 4 1 :
  23. 9 3 : f 8 : d8 : 0 a : b4 : 3 8 : ae : 4 7 : 8 c : 4 a : d1 : 8 8 : d1 : a f : b6 :
  24. 1 8 : 7 7 : b8 : 8 4 : 4 e : 7 a : ad : c0 : a6 : 2 3 : e7 : 9 4 : 6 c : 7 6 : cb :
  25. 0d : da : 1 6 : 1 6 : cb : a5 : 0 f : 7 5 : a6 : e0 : 7 8 : f f : 3 3 : e1 : d1 :
  26. 5b : 3 c : 8 d : dd : 0 6 : 7 a : 7 2 : e2 : be : 4 8 : c3 : 1 7 : 4 a : 4 f : bb :
  27. e0 : bb : f b : e6 : bd : 7 e : d4 : f 8 : c1 : 2 a : 5 a : 4 f : 6 a : 3 a : e0 :
  28. 2 0 : e6 : 6 3 : e5 : d5 : 6 5 : e e : d3 : 8 c : 7 2 : 2 2 : 5 4 : ca : f 2 : 4 0 :
  29. e f : c1
  30. Exponent : 65537 ( 0 x10001 )
  31. Attributes :
  32. a0 : 0 0
  33. S i g n a t u r e Algorithm : sha1WithRSAEncryption
  34. 5 4 : 1 b : b8 : 5 2 : 2 8 : f 1 : 2 9 : e9 : 5 c : 2 8 : bc : e3 : f 6 : 5 8 : cd : 0 f : e8 : 2 c :
  35. a8 : 8 3 : 1 d : d6 : f 3 : 6 b : 4 6 : f 8 : d5 : c6 : 3 7 : bb : 1 5 : f 5 : 3 4 : 5 8 : 5 6 : 3 d :
  36. 7b : f 1 : c e : 1 d : b f : 1 4 : 0 9 : f e : f e : f 3 : f 1 : 0 7 : 5 4 : 2 7 : 6 0 : 4 5 : 6 a : e f :
  37. 8 8 : 8 b : b7 : 8 9 : 7 4 : 7 7 : 5 e : 4 d : a5 : 5 c : ea : 5 c : b8 : 1 c : 7 a : 5 7 : b3 : 8 3 :
  38. 0d : 2 e : 1 e : 6 2 : 8 6 : f 4 : 0 1 : d4 : 4 d : 3 9 : 5 1 : 2 5 : 0 4 : cb : 0 0 : 3 3 : 2 a : 8 4 :
  39. 5 c : ae : 0 a : a0 : 6 f : 6 5 : c7 : 7 0 : 0 a : c f : 5 6 : 9 5 : d1 : 7 0 : 2 2 : 0 5 : e1 : f c :
  40. 2 a : d8 : 9 b : 2 1 : 3 e : 0 5 : bb : 5 c : 9 7 : b4 : 3 5 : 6 7 : 8 5 : e3 : 1 f : 8 b : 8 2 : 3 1 :
  41. e f : 7 6 : 0 b : 1 7 : 5 3 : a2 : 0 6 : 4 3 : 7 9 : 1 e : cb : a5 : 4 5 : 1 d : 6 a : c9 : d1 : 0 4 :
  42. 0 c : 4 4 : d7 : 8 7 : 4 4 : 2 c : 4 b : e f : 3 8 : 5 b : 7 2 : 3 8 : de : f f : 7 4 : ae : 5 9 : 1 7 :
  43. 1 2 : f 5 : 8 7 : 8 c : 0 0 : 5 6 : 0 0 : 3 f : f 0 : d4 : 0 8 : d2 : c1 : 4 b : ae : 8 4 : 0 f : f 3 :
  44. d5 : dd : ea : 4 8 : 0 b : 8 6 : 3 1 : 8 2 : c5 : f 5 : ae : 1 d : 5 2 : b2 : c6 : 7 4 : 6 2 : d1 :
  45. f 7 : 9 4 : 4 3 : b2 : 5 d : 9 a : e5 : 5 2 : c1 : 4 8 : 1 0 : f f : 2 7 : bb : d5 : e c : 0 0 : b8 :
  46. aa : 8 8 : 7 7 : c3 : 3 6 : f 9 : 8 7 : 4 1 : d9 : da : 5 8 : 9 a : c3 : 2 6 : 8 c : ba : e3 : 1 9 :
  47. f e : 2 5 : 4 2 : 2 5 : 1 2 : b4 : d4 : 7 9 : e1 : d9 : b9 : 9 4 : d8 : 8 3 : 9 0 : 3 6 : ac : ca :
  48. c6 : a7 : b2 : 9 c

我们拥有了一个证书申请,还需要一个证书颁发机构CA来给你的申请签名,否则无效

一般情况下,个人可以自己来充当这个CA机构,只需再创建一个证书(大多数人是这样的);

教授提供了一个CA证书(应该具有一点定的权威性吧),大家可以下载复制保存一下

查看证书信息:

$ openssl x509 -in <证书.pem>  -text  -noout

pereUbuCertif.pem

[c-sharp] view plaincopy
  1. -----BEGIN CERTIFICATE-----
  2. MIIEbzCCA1egAwIBAgIJAJHWGHcowKN0MA0GCSqGSIb3DQEBBQUAMIG3MQswCQYD
  3. VQQGEwJQTDEeMBwGA1UECBMVUHJvdmluY2UgZGVzIFBhbG90aW5zMRAwDgYDVQQH
  4. EwdVYnVQb2xlMRswGQYDVQQKExJSb3lhdW1lIGRlIFBvbG9nbmUxIjAgBgNVBAsT
  5. GURlcGFydGVtZW50IGRlcyBQaHluYW5jZXMxETAPBgNVBAMTCFBlcmUgVWJ1MSIw
  6. IAYJKoZIhvcNAQkBFhNQZXJlLlVidUBwYWxvdGluLnBsMB4XDTEwMDUyMDA3NDA0
  7. MVoXDTE0MDYyODA3NDA0MVowgbcxCzAJBgNVBAYTAlBMMR4wHAYDVQQIExVQcm92
  8. aW5jZSBkZXMgUGFsb3RpbnMxEDAOBgNVBAcTB1VidVBvbGUxGzAZBgNVBAoTElJv
  9. eWF1bWUgZGUgUG9sb2duZTEiMCAGA1UECxMZRGVwYXJ0ZW1lbnQgZGVzIFBoeW5h
  10. bmNlczERMA8GA1UEAxMIUGVyZSBVYnUxIjAgBgkqhkiG9w0BCQEWE1BlcmUuVWJ1
  11. QHBhbG90aW4ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfggDe
  12. ZHhHrFQ/Mig6WUg9q5hrhg9dTjltGngCx+IzCg3RgtgqOTVX23p8/fF9toPN/nzI
  13. k3MiW5fx36nDmaiEWcEjx6Fvgj9iwhTBMbeDAHPRLq+cq1ocqInAWxtomZ5kRzk3
  14. ywbC1bG8BKNUJXu9+vnrt/Mvd0klQjVFf0zcZQtKq3UcHByDRqwIN+k7RrccewIq
  15. nEROpC1v23hyIE4b4K6etp5uO4q+x/sJbil1VW6oE1/4t+6tiqXEDGwMdmGOOf9G
  16. znz3+MXpjIr3ak6kCd3sTezV+zAARjwCi3fD1f6aYU5wBvZdaop8HZLaXgav8nMw
  17. ZassKX0HZkw3S6TnAgMBAAGjfDB6MB4GA1UdEQQXMBWBE1BlcmUuVWJ1QHBhbG90
  18. aW4ucGwwDwYDVR0TBAgwBgEB/wIBADA0BglghkgBhvhCAQ0EJxYlQ2VydGlmaWNh
  19. dCBnZW5lcmUgcGFyIEVXIGF2ZWMgb3BlblNTTDARBglghkgBhvhCAQEEBAMCAQYw
  20. DQYJKoZIhvcNAQEFBQADggEBAHQGoCe+8ZIixzuwM7IpGuG728ckqblGpK+kiGMr
  21. MCMI5iMKo+NnGgUp8yUGk76mV/FrLMaIcjA3PJRPWML33yH2hZau+43mh9x9qZi2
  22. Wd/qOxI7/k1GUHZGCocAjdB9cp/LSDAff8js0AlCOFsfZ6AajwSpo6q2fPooTQDm
  23. U73lqGUQEBcnZJ7Yz0yulUamtQvKQhPfreiRHwokSiyzkCqDGO36gGOQ3g1FeTUR
  24. qONKFGiF6rttiQ3ZBNgQTK0v8nmpBuOcocNvTzMauQLgQOB719X0aWdCisqPV5NS
  25. lI5MJvn+anLVk9OzAULuCvfOEHYBiYePDo943+JtGirMT1E=
  26. -----END CERTIFICATE-----

PereUbuCle.pem

[c-sharp] view plaincopy
  1. -----BEGIN RSA PRIVATE KEY-----
  2. Proc-Type: 4,ENCRYPTED
  3. DEK-Info: DES-EDE3-CBC,4D9059B654C3EA93
  4. MN7eLnDfZE5PhhaHImzdOO5UYyf8Naw4FNWpm/mdWyTfyRgyrhVoQAeoJD68C37a
  5. Zkg0oITPoe9OTMv+rqQpBdMI0FE9LaFWhjY3Q/2ZFvoItcNN2DWLWPzAOdlkJUJu
  6. tVVM0yQ/2taETUVErU6EqjjZDCF7X+m4IJTRpRsp2sKIZRJvpxRoINlH9yTb8HOe
  7. xJQIDJdZi6U9r5wM6pK4SVYrJwkga1tMaHyQb/O1PuZdNQyOe+Ssr4LvFHkb1mKE
  8. CCpsOAEc4YzuKNlxfOPuCgCQPTMCp81D/fu0iOk8QC8uaXT8f2e114TPFp5LQlBI
  9. GrQn95JEE4eaXmSCbrnzVpicqi90jC3pz23jDaM36EZnzFGiMgLNUyBDB1gscQ6i
  10. JXsRPbDhRUvikwjZn7A8CrFmZpf0oZa9qv/BtaLBEVjGGKyVLCwL/0qCbgYHnD1U
  11. HSZS2YPS/ybr478thTP8b1QIhzbkkdy8tObhfZ8m3r4thFZXX6STBahuxuALheXs
  12. 2LlpZLRXpX9HhGjsP5GW8y1NFhNzL/e5T6pw/3EvaP6ez5isfrR0XVq/a9iGjt4/
  13. NSFUnQgXRbEwuPD1+EGQ+STSBpdxmf5Z/3pVlWeCB1ZKBb3PKy6EYmnXimBlMVGL
  14. D7Qq70GrY9LE5NEBbKGf07UwCJ09/mTVUp390pz/E+BscYXVLabGhAGYBBW8nKTY
  15. neDVjZa1QBI89ywrLvrXeNca5Vyoz/IiW/Bg/1QOkIjztPmDY/yi7/fQPuiai6Ag
  16. GpWaGZ60UEiBjX4/pkNR0c0p82/GWDlFWyNbKDNy8t1/qnnMtU3e7u7uJ3IA1jc4
  17. 1TpjFLtjMklepkR+Gc9EvrGil6Ip1W9qp3LolldEFBGVD7BCgLaMN7Yeo7+f2ch0
  18. XvAKPfFyulaGp2N6Q7urLtkxYmHnZqAKwr1exLwT1LHYBepmxNUokpgEbI167b90
  19. EB6X47rVb5YDbp5ro/8rVo7jzKrbkdA0vTFbmKYGwmlN9wFpC+K5S7uoGhVGtJ7A
  20. kMCiRqRlGCJa8+5ALPkfWNSp9c3O+DH28lrB18okF54gNmR65BFp8rlseL/jdvdO
  21. tL2WWFoJB8vt0J1JJ5Frvrf1pr2iKqSdoH2l8U4GArvb9lfIZUL4TeVYCctIX8rH
  22. iJN1VYg8cie20LBERNfowuG6kMoFg+ekqG4/untcXJ1q/hBeq17rY8eOuIn7N2hz
  23. NVRrkLETrwDIzJOWVGlYt2kdC3XK5Zs+X03ofQXKETA2IxL+O8F1dPRMPZDJRSde
  24. CmbiTiUgZs6OOXU3KxJs1CnyaA5U0UL385S/DtXY+UiwYEF9+HPi7dxINve0bbtc
  25. Fx5TVBcECr2Wu+EU24Xc+XqdofvcWxmAGDoIa+4fzFDwrCRPHRKUS51/BLSAg8QO
  26. Sb+AEImPjdbEjXhbkxTD0BLY4K+eQRewi6qbSXSO3udMuDVcIaR0LuzenOCjeA2v
  27. AeBn0uDCNi4YtB815OLtKhbJFIQn2tmCC+HLDexhPM0oQViRbJe8EXRrSjUeNYqb
  28. f2Gi1qz+EQ2f2feMQmEHTCqMigcbVGWYfs85nH4dZxkt8E2fwPmMbckq4vMk5vRt
  29. -----END RSA PRIVATE KEY-----

然后创建一个文件PereUbu.srl , 包含一行我们证书的序列号:

例如:

91:d6:18:dc:24:c0:a3:24

保存这个CA证书及它的密匙后,我们可以创建我们自己的证书了


$ openssl x509 -days 10 <有效时间>  -CAserial <序列号文件>  -CA <CA证书文件>  -CAkey <CA证书的密匙> -in <证书申请.pem>  -req  -out <证书.pem>

[c-sharp] view plaincopy
  1. $ openssl x509 -days 10 -CAserial PereUbu.srl -CA PereUbuCertif.pem -CAkey PereUbuCle.pem -in maRequete.pem -req -out monCertif.pem

已经完成,现在我们可以来检查一下我们的证书是否有效

$ openssl verify -CAfile PereUbuCertif.pem monCertif.pem

8.介绍一下如何用获得的证书对自己的邮件签名发送到对方

假设: 我们邮件的内容保存在 blabla.txt 中, 那么我们可以用一行命令就可以发送该邮件并附上签名

  $ openssl smime -sign -in <邮件内容文件 blabla.txt>  -signer monCertif.pem -inkey maCle.pem -from <自己的邮箱地址>  -to <对方邮箱地址> -subject "邮件主题"

也可以用 -out  选项讲邮件内容输出到一个文件,然后通过邮箱操作发送

而作为接收邮件的一方,如何检查邮件内容是否被篡改呢?

$ openssl smime -verify -in <受到的签名邮件 courrier.signe> /

                                     -signer <邮件附件中的发送方的证书> /

                                      -CAfile <CA颁发机构的证书PereUbuCertif.pem>

每次发送,接收邮件都用命令,肯定是不方便的,所以我们可以讲我们的证书加载到浏览器中,这样就方便多了。 但是本人建议还是使用邮件桌面软件方便,比如说Ubuntu下自带的“Evolution邮件”支持自己的签名,只要导入证书稍微设置一番,以后发送签名邮件就更正常邮件一样方便,这里就不多介绍了

from:http://blog.csdn.net/jiangsq12345/article/details/6066275

iOS -- OpenSSL生成RSA双密匙+签名证书(流程)相关推荐

  1. 如何用 openssl 生成RSA双密匙;签名证书;加密文件邮件

    网上已有好多关于openssl的帖子,但是基本上都很"实用",只讲如何创建证书来用于数据的加密,如何你只需要这些,那么可以去  "流浪的脚步"的博客 http: ...

  2. 转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名...

    转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 July 20, 20 ...

  3. java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  4. openssl生成RSA格式及pkcs1与pkcs8格式互相转换

    openssl简介 OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls ...

  5. 妙借Git自带的OpenSSL生成RSA公私钥的.pem 文件

    大家好,我是神韵,是一个技术&生活博主.出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己.二是希望我的文章可以帮到大家.欢迎来点赞打卡,你们的行动将是我无限的动力. 本篇主题是: ...

  6. Java(111):非对称加密RSA的使用(openssl生成RSA公私钥对)

    Java(111):非对称加密RSA的使用(openssl生成RSA公私钥对) 1.openssl生成RSA公私钥对 [root@loaclhost ~]# openssl version OpenS ...

  7. OpenSSL生成.key、.crt、.pfx证书(Windows下)

    OpenSSL生成.key..crt..pfx证书(Windows下) 最近在对接招行一网通支付,让人意想不到的是,在系统中使用过一次一网通后,就得永远使用这个一网通账户支付,除非解绑一网通支付账户的 ...

  8. 使用OpenSSL生成RSA证书

    一.生成RSA证书密钥对 下载OpenSSL windows版本 1)生成RSA私钥: genrsa -out private_key.pem 1024 该命令会生成1024位的私钥,生成成功的界面如 ...

  9. 用 openssl 生成 SSL 使用的私钥和证书,并自己做 CA 签名

    一.生成 CA 证书 1.生成 CA 的公私钥对. openssl genrsa -out ca.key 1024 2.生成 CA 的自签名证书,签名使用的私钥为 ca.key . openssl r ...

最新文章

  1. js浮点数精度丢失问题及如何解决js中浮点数计算不精准
  2. C++中的函数指针和函数对象总结
  3. spark sql and hive 3g数据测试
  4. windows下扩展yaf,并生成yaf框架文件(亲测)
  5. CF1497E2 Square-free division (hard version)
  6. 多线程之间的通信(等待唤醒机制、Lock 及其它线程的方法)
  7. 测试流程图_挑战美国Postman VS 龙测搭积木接口测试,谁与争锋
  8. Swift 弱引用与无主引用
  9. 一个实例明白AutoResetEvent和 ManulResetEvent的用法
  10. 用Java实现邮件的发送
  11. mysql正则防注入_防止sql注入的方法
  12. xshell5字体大小调整
  13. LeetCode刷了500+了总结了算法必背模板直接拿到字节实习offer
  14. 开发者API资源(接口整理)
  15. unity 解决图片无法拖进场景的问题
  16. linux延迟加载so,WebRTC Linux ADM 实现中的符号延迟加载机制
  17. Vue最全知识点集合
  18. 时区的转换nbsp;格林尼治标准时间(GMT…
  19. 快速爬取链家网的房源信息
  20. 新氧,今天受了点儿伤

热门文章

  1. linux 运行arm,在Ubuntu下编译运行arm架构程序
  2. python任务栏通知区域_Python之Bilibili自动更新邮件提醒并任务栏图标
  3. 商业数据分析的四个层次
  4. 会声会影2022安装下载卸载图文教程
  5. js之EventBus
  6. 另一个程序已锁定文件的一部分,进程无法访问 打不开磁盘“E:\Ubuntu-yun-lianxi\yun2 64 位.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机。
  7. raspberry pi_PocketCHIP与Raspberry Pi相比如何?
  8. TM2013 Preview1 优化笔记
  9. 了解您最新Gmail 邮箱
  10. 爪哇java怎么读_Javan[贾万,贾范,爪哇]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...