Week1:20175234 赵诗玥 学习笔记

Week1:20175234 赵诗玥 学习笔记

本周学习规划

  • 收集相关资料,学习证书格式的相关知识
  • 收集相关资料,学习OpenSSL的使用方法
  • 安装OpenSSL
  • 使用OpenSSL命令行查看证书,并实现证书格式转换

学习笔记

常见证书标准

  • x509

    • 基本的证书格式,只包含公钥。
      x509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息。
  • PKCS#7

    • Public Key Cryptography Standards #7。
    • PKCS#7一般把证书分成两个文件,一个公钥、一个私钥,有PEM和DER两种编码方式。PEM比较多见,是纯文本的,一般用于分发公钥,看到的是一串可见的字符串,通常以.crt,.cer,.key为文件后缀。DER是二进制编码。
    • PKCS#7一般主要用来做数字信封。
  • PKCS#10

    • 证书请求语法。
  • PKCS#12

    • Public Key Cryptography Standards #12。
    • 一种文件打包格式,为存储和发布用户和服务器私钥、公钥和证书指定了一个可移植的格式,是一种二进制格式,通常以.pfx或.p12为文件后缀名。
    • 使用OpenSSL的pkcs12命令可以创建、解析和读取这些文件。
    • P12是把证书压成一个文件,xxx.pfx。主要是考虑分发证书,私钥是要绝对保密的,不能随便以文本方式散播。所以P7格式不适合分发。.pfx中可以加密码保护,所以相对安全些。

常见数字证书编码格式

  • PEM Format

    • Privacy Enhanced Mail

    • 内容以"-----BEGIN..."开头,以"-----END..."结尾

    • 查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout

    • ASCII文件使用Base64编码

    • 常用后缀为 .pem, .crt, .cer, .key

    • Apache 使用 PEM 证书。

  • DER Format

    • Distinguished Encoding Rules
    • 二进制文件
    • 扩展名 .cer & .der
    • 查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
    • 一般用于java平台
  • PFX Format

    • PFX也称为PKCS#12(Public Key Cryptography Standards #12),常见的扩展名是: .pfx 和 .p12
    • 二进制文件,用于存储服务器证书,公钥和私钥都包含,而且加密.

安装OpenSSL

  • 访问官网下载OpenSSL
  • 按照默认选项安装
  • 配置环境变量,在系统环境的PATH增加OpenSSL的bin文件完整目录
  • 测试运行

OpenSSL常用命令

  • 1、对称加密

对称加密需要使用的标准命令为 enc ,用法如下:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64]
[-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md]
[-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]
in filename:指定要加密的文件存放路径

out filename:指定加密后的文件存放路径

salt:自动插入一个随机数作为文件内容加密,默认选项

e:可以指明一种加密算法,若不指的话将使用默认加密算法

d:解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的算法一致

a/-base64:使用-base64位编码格式

  • 2、单向加密

单向加密需要使用的标准命令为 dgst ,用法如下:
openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary]
[-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] [-prverify
filename] [-signature filename] [-hmac key] [file...]
[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一种加密算法

out filename:将加密的内容保存到指定文件中

  • 3、生成密码

生成密码需要使用的标准命令为 passwd ,用法如下:
openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] {password}
常用选项有:
1:使用md5加密算法

salt string:加入随机数,最多8位随机数

in file:对输入的文件内容进行加密

stdion:对标准输入的内容进行加密

  • 4、生成随机数

生成随机数需要用到的标准命令为 rand ,用法如下:
openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
out file:将生成的随机数保存至指定文件中

base64:使用base64 编码格式

hex:使用16进制编码格式

  • 5、生成密钥对

首先需要先使用 genrsa 标准命令生成私钥,然后再使用 rsa 标准命令从私钥中提取公钥。

genrsa 的用法如下:openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
out filename:将生成的私钥保存至指定的文件中

des|-des3|-idea:不同的加密算法

numbits:指定生成私钥的大小,默认是2048

ras 的用法如下:
openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg]
[-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]
in filename:指明私钥文件

out filename:指明将提取出的公钥保存至指定文件中

pubout:根据私钥提取出公钥

OpenSSL命令行使用

证书签发

第一步:生成客户端的密钥,即客户端的公私钥对,且要保证私钥只有客户端自己拥有。
第二步:以客户端的密钥和客户端自身的信息(国家、机构、域名、邮箱等)为输入,生成证书请求文件。其中客户端的公钥和客户端信息是明文保存在证书请求文件中的,而客户端私钥的作用是对客户端公钥及客户端信息做签名,自身是不包含在证书请求中的。然后把证书请求文件发送给CA机构。
第三步:CA机构接收到客户端的证书请求文件后,首先校验其签名,然后审核客户端的信息,最后CA机构使用自己的私钥为证书请求文件签名,生成证书文件,下发给客户端。此证书就是客户端的身份证,来表明用户的身份。

  • 修改\OpenSSL-Win64\bin\openssl.cfg配置文档

  • 根据配置文档新建目录、文件

  • 打开CA_default的目录,构造伪随机数

  • x509也可以用来签署他人的证书请求,即颁发证书

OpenSSL命令行查看证书

OpenSSL实现证书格式转换

遇到的问题及解决措施

参考资料

猜你喜欢

转载自www.cnblogs.com/ysz-123/p/12712091.html