zoukankan      html  css  js  c++  java
  • 175210课设第一周报告

    计划完成的任务

    • 了解 ASN.1 语法规范
    • 学习 X509 证书(证书格式,内容等)
    • 学习并使用 openssl 工具

    了解 ASN.1 语法规范

    概览

    ASN.1 描述了一种对数据进行表示、编码、传输和解码的数据格式,个人感觉和jsonxml 意义差不多。

    ASN1含有一套编码规则,包括了:
    • BER basic encoding rules
    • DER distinguished encoding rules
    • CER canonical encoding rules
    • PER packed encoding rules
    • XER XML encoding rules
    我们来看看这些编码标准和证书的对应关系
    • linux 下常用的.crt 证书,可以采用der编码(但更多情况下使用pem 编码)

    • windows 下的.cer证书,采用cer编码

    • 上述的证书不包含密钥。.key文件存储一个公钥或私钥,使用derpem编码

    • ber是最初的编码标准,der等都是在其基础上发展而来的。ber用的较少

    • per感觉用的较少,没找到多少资料

    数据类型

    NULL:只包含一个值NULL,用于传送一个报告或者作为CHOICE类型中某些值
    
    INTEGER:全部整数(包括正数和负数)
    
    REAL:实数,表示浮点数
    
    ENUMERATED:标识符的枚举(实例状态机的状态)
    
    BITSTRING:比特串
    
    OCTETSTRING:字节串
    
    OBJECT IDENTIFIER,RELATIVE-OID:一个实体的标识符,它在一个全世界范围树状结构中注册
    
    EXTERNAL,EMBEDDED PDV:表示层上下文交换类型
    
    …String(除了BITSTRING、OCTETSTRING外):各种字符串
    
    CHARACTERSTRING:允许为字符串协商一个明确的字符表
    
    UTCTime,GeneralizedTime:日期
    

    我还没有深入研究,先跳过

    观察 X509 证书(证书格式,内容等)

    生成证书

    • 我是自签名证书,所以先要生成 CA 私钥
      openssl genrsa -des3 -out ca.key 2048 如图

    使用genrsa生成一个RSA的私钥文件,并使用DES3对称算法来加密该私钥文件,Enter pass phrase for ca.key 是让我们输入 DES3 加密算法的密钥

    • 自签名证书
      openssl req -new -x509 -days 365 -key ca.key -out ca.crt

    req是创建一个请求,-key后接证书的私钥,-out后接输出,days指定证书有效期,如图:

    查看证书内容

    • 打印证书的内容
      openssl x509 -in ca.crt -noout -text
      -text是输出对象

    • 查看证书所有者信息
      openssl x509 -in ca.crt -noout -subject

    • 查看证书序列号
      openssl x509 -in ca.crt -noout -serial

    • 查看证书的 SHA 特征值(就是用SHA算法得到的哈希值)
      openssl x509 -sha1 -in ca.crt -noout -fingerprint

    • 查看证书公钥
      openssl x509 -in ca.crt -pubkey -noout

    学习并使用 openssl 工具

    上文观察证书内容已经对openssl有介绍了,现在看看 openssl asn1parse命令。
    用法如下:

    openssl  asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i][ -dump ] [dlimit number] [-oid filename] [-strparse offset] [-genstr string ] [-genconf file]
    

    选几个重要的参数看

    -inform PEM|DER 指定输入内容的格式
    -in filename 指定输入文件
    -i 缩进
    

    试一试
    输入openssl asn1parse -i -in ca.crt,结果如下:

    选一行37:d=3 hl=2 l= 9 prim: OBJECT

    • 37 表示节点在整个文件中的偏移长度
    • d=3 表示节点深度
    • hl=2 表示节点头字节长度
    • l=9 表示节点数据字节长度
    • prim 表示该节点为原始节点,包含数据 ( cons 表示该节点为结构节点,表示包含子节点或者子结构数据 )
    • OBJECT 是ASN.1 定义的数据类型

    总结

    本周任务完成。偏重于概念的理解和工具的使用。还需仔细研究 ASN.1 编码标准。

  • 相关阅读:
    Android自定义Dialog效果
    Attempt to invoke virtual method 'void android.app.ActionBar.setTitle的解决方法
    Android 震动 和 停止 代码
    任意手机虚拟按键增加方法
    [vijos]1066弱弱的战壕<线段树>
    [bzoj]1059矩阵游戏<二分图匹配*匈牙利算法>
    [bzoj]1053反质数<暴搜>
    [codevs]1250斐波那契数列<矩阵乘法&快速幂>
    [codevs2597]团伙<并查集>
    [noip模拟赛]虫洞holes<SPFA>
  • 原文地址:https://www.cnblogs.com/mtzf/p/12721052.html
Copyright © 2011-2022 走看看