利用OpenSSL创建并验证证书

4,807 views

Published on

最后几页PPT是重点,是稍微可以炫耀一下的东东。

Published in: Technology, Education
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,807
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

利用OpenSSL创建并验证证书

  1. 1. 项目编号: 22 利用OpenSSL实现证书的创建和验证 组长:吴道远 组员:邵泽慧 徐林 邵依 陈浩
  2. 2. 一、创建证书 证书的层次结构
  3. 3. 一、创建证书 证书的层次结构 Root CA
  4. 4. 一、创建证书 证书的层次结构 Root CA Server Cert
  5. 5. 一、创建证书 创建根证书(Root CA,最高层认证中心) 1. 创建CA的私钥: openssl.exe genrsa -out rootroot-key.pem 1024 2. 创建CA的证书请求:(clzqwdy@gmail.com) openssl req -new –key rootroot-key.pem -out rootroot-req.csr -text 3. 对刚刚生成的证书请求进行自签名: openssl.exe x509 -req -in rootroot-req.csr -out rootroot-cert.pem -sha1 -signkey rootroot-key.pem -days 3650 -text -extfile openssl.cnf -extensions v3_ca 4. 将证书导出成浏览器支持的.p12格式:(PKCS标准) openssl.exe pkcs12 -export -cacerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  6. 6. 一、创建证书 创建根证书(Root CA,最高层认证中心) 1. 创建CA的私钥: openssl.exe genrsa -out rootroot-key.pem 1024 2. 创建CA的证书请求:(clzqwdy@gmail.com) openssl req -new –key rootroot-key.pem -out rootroot-req.csr -text 3. 对刚刚生成的证书请求进行自签名: openssl.exe x509 -req -in rootroot-req.csr -out rootroot-cert.pem -sha1 -signkey rootroot-key.pem -days 3650 -text -extfile openssl.cnf -extensions v3_ca 4. 将证书导出成浏览器支持的.p12格式:(PKCS标准) openssl.exe pkcs12 -export -cacerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  7. 7. 一、创建证书 创建根证书(Root CA,最高层认证中心) 1. 创建CA的私钥: openssl.exe genrsa -out rootroot-key.pem 1024 2. 创建CA的证书请求:(clzqwdy@gmail.com) openssl req -new –key rootroot-key.pem -out rootroot-req.csr -text 3. 对刚刚生成的证书请求进行自签名: openssl.exe x509 -req -in rootroot-req.csr -out rootroot-cert.pem -sha1 -signkey rootroot-key.pem -days 3650 -text -extfile openssl.cnf -extensions v3_ca 4. 将证书导出成浏览器支持的.p12格式:(PKCS标准) openssl.exe pkcs12 -export -cacerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  8. 8. 一、创建证书 创建根证书(Root CA,最高层认证中心) 1. 创建CA的私钥: openssl.exe genrsa -out rootroot-key.pem 1024 2. 创建CA的证书请求:(clzqwdy@gmail.com) openssl req -new –key rootroot-key.pem -out rootroot-req.csr -text 3. 对刚刚生成的证书请求进行自签名: openssl.exe x509 -req -in rootroot-req.csr -out rootroot-cert.pem -sha1 -signkey rootroot-key.pem -days 3650 -text -extfile openssl.cnf -extensions v3_ca 4. 将证书导出成浏览器支持的.p12格式:(PKCS标准) openssl.exe pkcs12 -export -cacerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  9. 9. 一、创建证书 创建根证书(Root CA,最高层认证中心) 1. 创建CA的私钥: openssl.exe genrsa -out rootroot-key.pem 1024 2. 创建CA的证书请求:(clzqwdy@gmail.com) openssl req -new –key rootroot-key.pem -out rootroot-req.csr -text 3. 对刚刚生成的证书请求进行自签名: openssl.exe x509 -req -in rootroot-req.csr -out rootroot-cert.pem -sha1 -signkey rootroot-key.pem -days 3650 -text -extfile openssl.cnf -extensions v3_ca 4. 将证书导出成浏览器支持的.p12格式:(PKCS标准) openssl.exe pkcs12 -export -cacerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  10. 10. 一、创建证书 创建Server证书 1. 创建Server的私钥: openssl.exe genrsa -out serverserver-key.pem 1024 2. 创建Server的证书请求:(hacker@gmail.com) openssl req -new -key serverserver-key.pem -out serverserver-req.csr -text 3. 用CA的证书用私钥对Server的证书请求进行签名: openssl.exe x509 -req -in serverserver-req.csr -CA rootroot-cert.pem -CAkey rootroot-key.pem -CAcreateserial -days 730 -out serverserver-cert.pem -text 4. 将证书导出成浏览器支持的.p12格式: openssl.exe pkcs12 -export -clcerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  11. 11. 一、创建证书 创建Server证书 1. 创建Server的私钥: openssl.exe genrsa -out serverserver-key.pem 1024 2. 创建Server的证书请求:(hacker@gmail.com) openssl req -new -key serverserver-key.pem -out serverserver-req.csr -text 3. 用CA的证书用私钥对Server的证书请求进行签名: openssl.exe x509 -req -in serverserver-req.csr -CA rootroot-cert.pem -CAkey rootroot-key.pem -CAcreateserial -days 730 -out serverserver-cert.pem -text 4. 将证书导出成浏览器支持的.p12格式: openssl.exe pkcs12 -export -clcerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  12. 12. 一、创建证书 创建Server证书 1. 创建Server的私钥: openssl.exe genrsa -out serverserver-key.pem 1024 2. 创建Server的证书请求:(hacker@gmail.com) openssl req -new -key serverserver-key.pem -out serverserver-req.csr -text 3. 用CA的证书用私钥对Server的证书请求进行签名: openssl.exe x509 -req -in serverserver-req.csr -CA rootroot-cert.pem -CAkey rootroot-key.pem -CAcreateserial -days 730 -out serverserver-cert.pem -text 4. 将证书导出成浏览器支持的.p12格式: openssl.exe pkcs12 -export -clcerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  13. 13. 一、创建证书 创建Server证书 1. 创建Server的私钥: openssl.exe genrsa -out serverserver-key.pem 1024 2. 创建Server的证书请求:(hacker@gmail.com) openssl req -new -key serverserver-key.pem -out serverserver-req.csr -text 3. 用CA的证书用私钥对Server的证书请求进行签名: openssl.exe x509 -req -in serverserver-req.csr -CA rootroot-cert.pem -CAkey rootroot-key.pem -CAcreateserial -days 730 -out serverserver-cert.pem -text 4. 将证书导出成浏览器支持的.p12格式: openssl.exe pkcs12 -export -clcerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  14. 14. 一、创建证书 创建Server证书 1. 创建Server的私钥: openssl.exe genrsa -out serverserver-key.pem 1024 2. 创建Server的证书请求:(hacker@gmail.com) openssl req -new -key serverserver-key.pem -out serverserver-req.csr -text 3. 用CA的证书用私钥对Server的证书请求进行签名: openssl.exe x509 -req -in serverserver-req.csr -CA rootroot-cert.pem -CAkey rootroot-key.pem -CAcreateserial -days 730 -out serverserver-cert.pem -text 4. 将证书导出成浏览器支持的.p12格式: openssl.exe pkcs12 -export -clcerts -in rootroot-cert.pem -inkey rootroot- key.pem -out rootroot.p12
  15. 15. 二、证书格式 1. X.509 标准 a) 类比于POSIX,反正就是个接口标准 b) 大多数证书格式遵循的. Also: X.500 PKCS c) 结构!!! 见server-cert.pem 2. .pem后缀的证书 a) PEM格式( -inform PEM ),Base64编码 b) -----BEGIN CERTIFICATE----- 与 -----END CERTIFICATE----- 3. .cer .crt .der后缀的证书 a) Usually: DER form,binary b) Sometimes: Base64 (or PEM form)
  16. 16. 二、证书格式 1. X.509 标准 a) 类比于POSIX,反正就是个接口标准 b) 大多数证书格式遵循的. Also: X.500 PKCS c) 结构!!! 见server-cert.pem 2. .pem后缀的证书 a) PEM格式( -inform PEM ),Base64编码 b) -----BEGIN CERTIFICATE----- 与 -----END CERTIFICATE----- 3. .cer .crt .der后缀的证书 a) Usually: DER form,binary b) Sometimes: Base64 (or PEM form)
  17. 17. 二、证书格式 1. X.509 标准 a) 类比于POSIX,反正就是个接口标准 b) 大多数证书格式遵循的. Also: X.500 PKCS c) 结构!!! 见server-cert.pem 2. .pem后缀的证书 a) PEM格式( -inform PEM ),Base64编码 b) -----BEGIN CERTIFICATE----- 与 -----END CERTIFICATE----- 3. .cer .crt .der后缀的证书 a) Usually: DER form,binary b) Sometimes: Base64 (or PEM form)
  18. 18. 二、证书格式 1. X.509 标准 a) 类比于POSIX,反正就是个接口标准 b) 大多数证书格式遵循的. Also: X.500 PKCS c) 结构!!! 见server-cert.pem 2. .pem后缀的证书 a) PEM格式( -inform PEM ),Base64编码 b) -----BEGIN CERTIFICATE----- 与 -----END CERTIFICATE----- 3. .cer .crt .der后缀的证书 a) Usually: DER form,binary b) Sometimes: Base64 (or PEM form)
  19. 19. 三、验证证书 Verifying a certificate chain all the way to the root CA
  20. 20. 三、验证证书 Verifying a certificate chain to an intermediate CA Root CA Server Cert
  21. 21. 三、验证证书 A certificate chain that can't be verified
  22. 22. 三、验证证书 demo原理 + 命令行方式验证 + 编程方式验证 1. 结合课上讲的原理demo一下: a) root-cert.pem AND server-cert.pem b) 是否过期 + 签名是否正确(即是否是这个CA签的) + CA是否可信 c) Demo: 验证签名是否正确的具体过程 2. 用CA的证书来验证Server的证书: openssl verify -CAfile rootroot-cert.pem serverserver-cert.pem 3. 验证一个已经过期的证书:(and编程验证) openssl verify -CAfile iTrustchina-root-base64.cer iTrustchina-server-base64.cer
  23. 23. 三、验证证书 demo原理 + 命令行方式验证 + 编程方式验证 1. 结合课上讲的原理demo一下: a) root-cert.pem AND server-cert.pem b) 是否过期 + 签名是否正确(即是否是这个CA签的) + CA是否可信 c) Demo: 验证签名是否正确的具体过程 2. 用CA的证书来验证Server的证书: openssl verify -CAfile rootroot-cert.pem serverserver-cert.pem 3. 验证一个已经过期的证书:(and编程验证) openssl verify -CAfile iTrustchina-root-base64.cer iTrustchina-server-base64.cer
  24. 24. 三、验证证书 demo原理 + 命令行方式验证 + 编程方式验证 1. 结合课上讲的原理demo一下: a) root-cert.pem AND server-cert.pem b) 是否过期 + 签名是否正确(即是否是这个CA签的) + CA是否可信 c) Demo: 验证签名是否正确的具体过程 2. 用CA的证书来验证Server的证书: openssl verify -CAfile rootroot-cert.pem serverserver-cert.pem 3. 验证一个已经过期的证书:(and编程验证) openssl verify -CAfile iTrustchina-root-base64.cer iTrustchina-server-base64.cer
  25. 25. 三、验证证书 demo原理 + 命令行方式验证 + 编程方式验证 1. 结合课上讲的原理demo一下: a) root-cert.pem AND server-cert.pem b) 是否过期 + 签名是否正确(即是否是这个CA签的) + CA是否可信 c) Demo: 验证签名是否正确的具体过程 2. 用CA的证书来验证Server的证书: openssl verify -CAfile rootroot-cert.pem serverserver-cert.pem 3. 验证一个已经过期的证书:(and编程验证) openssl verify -CAfile iTrustchina-root-base64.cer iTrustchina-server-base64.cer
  26. 26. 四、Http代理 一个正常的Http Proxy处理CONNECT()时的情况
  27. 27. 四、Http代理 Man In the Middle Proxy Client Web Server
  28. 28. 四、Http代理 Man In the Middle CONNECT Proxy Client Web Server
  29. 29. 四、Http代理 CA sign a server cert to Host Man In the Middle CONNECT Proxy Client Web Server
  30. 30. 四、Http代理 CA sign a server cert to Host Man In the Middle CONNECT SSL Proxy Client Web Server
  31. 31. 四、Http代理 CA sign a server cert to Host Man In the Middle CONNECT SSL get Request Proxy Client Web Server
  32. 32. 四、Http代理 CA sign a server cert to Host Man In the Middle Connect host: port CONNECT SSL get Request Proxy Client Web Server
  33. 33. 四、Http代理 CA sign a server cert to Host Man In the Middle Connect host: port CONNECT SSL SSL get Request Proxy Client Web Server
  34. 34. 四、Http代理 CA sign a server cert to Host Man In the Middle Connect host: port CONNECT SSL SSL get Request Proxy send Https URL Client Web Server
  35. 35. Thank You Very Much!

×