1. (BER – Basic encoding rules 基础编码规则 中 标识符的组成)
Q:
为什么Sequence在ASN.1文档中定义是UNIVERSAL 16, 而在解析TLV的时候我们经常看到是30?
A:
X.609中说到 ASN.1 的 tag 一共有四种类型:universal,application,context-specific 和 private,其中我们用不到application 和 private。
如下面图,标识符由三部分组成:Class、P/C、Tag number。
Class(第8-7位)由图中的table1决定,即universal = 00;context-specific = 10.
P/C(第6位)primitive基本数据类型(不可拆分) = 0;constructed复合数据类型(可拆分) = 1
Tag number(第5-1位)二进制具体的tag值。
所以以Sequence为例,Sequence的Class=00,P/C=1,Tag number=十进制的16=10000,组成他的标识符=00110000=0x30。
从这里看Tag number似乎只能支持到最多11111即UNIVERSAL 31。
确实如此,如果Tag number大于等于31,ASN.1设计了high tag number方式的数据结构。后面加一个字节(后面加的字节如果是最后一个字节则第一位固定为0,如果不是最后一个字节则第一位固定为1,用后7位表示Tag),最后剔除后面加的各个字节的最高位,剩下的二进制拼接出来的值就是Tag number。
比如要表示UNIVERSAL 66,Class=00;P/C=0;
第一个字节00011111,第二个字节00100011
他的标识符就是0001111100100011=0x1F23
参考:
ASN.1 常用类型 编码详解 入门-CSDN博客
ASN.1 编码 – xiululu – 博客园 (cnblogs.com)
ASN.1 语法・二 – 张明丰的博客 | Mingfer’s Blog
2. (关于SSL证书)
Q:
DER、PEM、CER、CRT、P7B、P12的区别?
A:
DER
DER是一种编码方法,本身可以表示任何类型的数据,但通常用来编码证书。
证书的结构使用ASN.1(Abstract Syntax Notation One 一种数据描述语言)描述。BER和DER都是二进制编码方法。
DER二进制格式的证书,一般以 “.der” 为扩展名,和 PEM 格式不同,它不是文本形式,无法直接通过文本编辑器清晰查看里面的具体内容。 其编码更为紧凑,相较于 PEM 格式在存储时占用空间相对小一些。
应用场景:
常被 Java 应用程序使用,比如在 Java 开发的 Web 应用中导入证书时,可能会用到 DER 格式的证书来进行相关安全配置,另外在一些基于 Windows 操作系统的证书存储体系中也会涉及到该格式的应用。
PEM
PEM是一种将二进制数据编码为字符串的方法。它包含header和footer,用来指定数据的开始和结束,header和footer中间是base64数据。如果数据是证书,那么会简单的编码DER证书。PEM代表Privacy Enhanced Mail
PEM可读性较强,可使用文本编辑器直接打开查看内容。 它不仅可用于存储服务器证书,还能用于存储私钥、证书链等相关信息。
应用场景:
在很多基于 Linux 系统的服务器配置以及一些开源软件的证书配置中较为常用,例如在配置 Nginx、Apache 等 Web 服务器时,经常会使用 PEM 格式的证书来建立安全连接。
CER
.cer指的是证书certificate,通常是DER编码格式的,也可以是PEM格式,也就是说cer只是个后缀名,内容可以是DER编码或者PEM编码。
常以 “.cer” 为扩展名,同样可以是 Base64 编码的文本格式(类似 PEM、CRT 格式),不过在 Windows 操作系统环境下应用较多,在呈现形式上也比较接近文本格式的证书表示方式。 它主要用于存放公钥证书,方便在 Windows 系统中进行证书的安装、管理以及验证等操作。
应用场景:
在 Windows 服务器或者客户端上安装服务器证书、根证书等操作时经常使用,例如将网站的 SSL 证书导入到 IE 浏览器或者 Windows 系统的证书存储中,很多时候就是使用 CER 格式的证书文件来完成的。
CRT
一般以 “.crt” 作为扩展名,从本质上来说它和 PEM 格式类似,也是基于 Base64 编码的文本格式,不过在不同的环境中使用习惯有所区别。有时候人们提到的 CRT 格式证书,在内容呈现上和 PEM 格式几乎一样,只是扩展名不同而已。 常用于在类 Unix 系统等环境下表示证书文件,并且在进行证书相关的配置时经常出现。 应用场景 在一些 Linux、Unix 服务器上配置 SSL/TLS 安全连接时,常作为证书文件格式出现,也用于向客户端提供服务器证书,确保安全通信时客户端能验证服务器的身份。
应用场景:
在一些 Linux、Unix 服务器上配置 SSL/TLS 安全连接时,常作为证书文件格式出现,也用于向客户端提供服务器证书,确保安全通信时客户端能验证服务器的身份。
PKCS#7
扩展名常为 “.p7b” 或 “.p7c” 等,是一种用于打包多个证书和证书链的格式,它能够把服务器证书、中间证书等相关证书内容整合在一个文件中,方便进行整体的分发和管理。 基于二进制编码,内容不是直接可读的文本形式,在结构上更注重对多个证书的组织和封装。
应用场景:
常用于在不同的安全系统之间交换证书以及证书链,例如在企业级的安全架构中,当需要从证书颁发机构获取包含完整证书链的证书文件,然后部署到多个服务器或者客户端设备上时,PKCS#7 格式就很适用,可以一次性将所有关联证书进行传递和配置。
PKCS#12
一般以 “.pfx” 或 “.p12” 为扩展名,它不仅可以包含证书,还能把私钥以及证书链等相关的安全信息整合到一起,并且采用加密的方式进行存储,会要求设置密码来保护文件内容,安全性较高。 同样是二进制格式,无法直接查看内部信息,只有通过输入正确的密码解密后才能获取里面的证书、私钥等内容进行相应的配置使用。
应用场景:
在需要将证书和对应的私钥一起进行备份、迁移或者在不同应用间进行部署时特别有用,比如将 Web 服务器的证书和私钥从一台服务器迁移到另一台服务器,或者在 Windows 系统下导出含私钥的证书以便在其他客户端软件上使用时,PKCS#12 格式是比较理想的选择。
从技术上讲,.crt和.cer没有本质区别。微软平台广泛使用 CER 安全文件,而许多基于 Unix 的系统则更喜欢使用 CRT 格式的网络服务器 SSL 证书。CER 和 CRT 文件既可以是二进制文件,也可以是 base64 编码的ASCII 文件。 文件扩展名并不决定编码。 但CER 文件通常是 base64 编码的二进制文件,而 CRT 文件通常是 base64 编码的 ASCII 文件。
CER 和 CRT 通常采用基本编码的X.509 格式,而 PFX 文件则包含整个证书链和私钥,并受密码保护,以确保安全。
Base64和Binary可以使用openssl命令行工具转换:
将 CRT (一般是base64)转换为 CER(一般是binary):
openssl x509 -in input.crt -out output.cer
将 CER (一般是binary)转换为 CRT(一般是base64):
openssl x509 -inform der -in certificate.cer -out certificate.crt
参考:
深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)_csr crt-CSDN博客
一文搞懂X509证书PEM DER CRT CER的区别_x509 pem-CSDN博客
不同SSL证书格式的适用场景
SSL证书、 der、 cer、 pem区别
3.
Q:
WFS_PIN_PUBLICENCKEY和WFS_PIN_PUBLICVERIFICATIONKEY的作用?
A:
例子:
WFS_PIN_PUBLICENCKEY:
MIIDWQYJKoZIhvcNAQcCoIIDSjCCA0YCAQExADAPBgkqhkiG9w0BBwGgAgQAoIIDKjCCAyYwggIOoAMCAQICEEdyZ0VQMkNhMTgxMjAwMjIwDQYJKoZIhvcNAQELBQAwLDELMAkGA1UEBhMCQ0gxDDAKBgNVBAoTA0dSRzEPMA0GA1UEAxMGQ0EgR1JHMB4XDTI0MTAxNjA2NTc0NVoXDTQ0MTAxNjA2NTc0NVowNzELMAkGA1UEBhMCQ0gxEzARBgNVBAoTCkdyZ2JhbmtpbmcxEzARBgNVBAMTCjE4MTIwMDIyIEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQAJKb2EVeGxLDVHUpl0wFq8xCOeCueCjTPIfwyu+q2unOjwOOKS0h0GUjjmhZMJiwbBS0QobHTsdVEiFMgN2/T3CQNQxXUB6+a2QD8FXHmpj3h7tY38Clq2HF/XW7mKnVWFL9CcbI5R9FSjFK/saVx5tpH9G9sQnsRdDiMwu7MS85ejR8ffRehWp6bMAytJtLYJ+SY35UI8nAqDCX97LTY5N2Ftkz/vCzULC7s2xdDjcZXRk3LTPkzEJyV0ea/JgPoglzTd/ixBITS6ctFCKcaZR5wJI+RdLorVKljFcI84RFeOpWdSZXYe0QtNCZwDYAmC3W3UEK8n8fIhJefFdxFBAgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP/yI3pisnpgpaKL/YwohtXEjzDqMAsGA1UdDwQEAwIEMDANBgkqhkiG9w0BAQsFAAOCAQEAEwI3nH1zGaCTB4YtmuTNHaPKXsO52sPH/6sDoy6tP3H61PpceI7mBhqUZHCWEHvvfEozwqGNiGspz+Pyeey38OqCAG+1xj0DEOciMRu6LjlS/9wuwrd2XXLnJrLwRl2DsPuERQOym60Nq+Iyg4omq4tYdbAMVChdHK7ng3qUvbAK0K75nP1kHGibe2Yy0TCrprL+rb4oZV5YlpzOwqKvt80U9gOc+cpvQ54JsVf4fjl4OxwVkYKK2B3dS5iq2qZ1SDoBPb7rcGjiE6QVJLyWrB1XsosI7SCpfW7AhPtNIOHj7TqJa1cbv/2HswNbrzUqYw54snFJlaMHQAZZlUWtwTEA
WFS_PIN_PUBLICVERIFICATIONKEY:
MIIDWQYJKoZIhvcNAQcCoIIDSjCCA0YCAQExADAPBgkqhkiG9w0BBwGgAgQAoIIDKjCCAyYwggIOoAMCAQICEEdyZ1JQMkNhMTgxMjAwMjIwDQYJKoZIhvcNAQELBQAwLDELMAkGA1UEBhMCQ0gxDDAKBgNVBAoTA0dSRzEPMA0GA1UEAxMGQ0EgR1JHMB4XDTI0MTAxNjA2NTc0NVoXDTQ0MTAxNjA2NTc0NVowNzELMAkGA1UEBhMCQ0gxEzARBgNVBAoTCkdyZ2JhbmtpbmcxEzARBgNVBAMTCjE4MTIwMDIyIEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQATeZ+kzkqpUNFDLF0K7frpEyuDdJDLELSfNNZlj7hP/Ea08VIZchN2ZW1aRHNtWpn73/v7/kDFrLVG90rbOHL1qZcKh2xWdnBU5wfqtLi/XQ2cstPJMNrQiNYwXDJiTQ/9uMLcMIXVEEAMa7gJ9lJ7GCiwITx+UFZraIqIG9uiLcXx4SoOhaM12wAgatygnW0vlg+1/kLYCt8nHXgg0yGSPeLzbMR2zkeNmrxKqbDdNWWH3DHGKFgYwo7pt821/DMJ7sfRTzX9jEMh2hQ8gKLA7R32sX6OTTptMrfUvqdrsYxGHsFoWkJVo364oo9lyTD2gtEr+eJ0+H1gHP/bjmmZAgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFApxZmcNNhK3jGm1ssdLTFh9CjJ7MAsGA1UdDwQEAwICBDANBgkqhkiG9w0BAQsFAAOCAQEAKYyuNg0aEA31tAd1ZA8TbgpYUNP4S8lQoj/e9OmaSq4nNM/Mh38NiH71zkY1dxf225pLC+oqywe3i8k9SFQZeaUfgdk376PK8BvWDRLFz45LmRdA6Cy6GPsrizYhEokInoIrgvhEm1TZoMUfUAEa5vLr3c6II4yJ9M3NOmrHLPkkWSRFq4jDs+nPr5QypSzsq7p2BGamXHctJ05hTUfHYPCAsVo+m5f1w/GwHeIIB9HbMzmtUNv0TQPycuE2Qg79fTPQWSc7/2P/5jamlqxxoz+9Jq+/fhYsmncL0FWkLmj80W9l36vuZvgOQ/atKBPPRvGTojBZspF1P3GFT8G5VTEA
这两个token本身都是用GRGCA验签的。
发表回复