der2text
将PEM-或DER编码的文件转换为人类和机器可读形式。可以对此表单进行编辑并馈入反向过程,以创建编辑的PEM或DER文件。
这对于检查和理解加密数据和设置需要特定形式的加密输入(例如创建异常或畸形证书)的测试很有用。
在所有情况下,假设文件为pem或der-格式,则以下往返过程应产生与输入相同的输出:
cat input | der2text | text2der > output
der2text实用程序
读取PEM或DER编码的输入,并产生可读且可编辑的输出。
用法:
der2text @latest
# add ~/go/bin/ to your $PATH
der2text /path/to/cert.pem\”>
go install github.com/syncsynchalt/ der2text /cmds/ der2text @latest # add ~/go/bin/ to your $PATH der2text /path/to/cert.pem
Text2der实用程序
读取der2text的“临时格式”输出,并从中创建PEM-或DER编码的数据。
用法:
der2text/cmds/text2der@latest
# add ~/go/bin/ to your $PATH
text2der /path/to/ der2text /output\”>
go install github.com/syncsynchalt/ der2text /cmds/text2der@latest # add ~/go/bin/ to your $PATH text2der /path/to/ der2text /output
临时格式
der2text生成一个临时文本文件,以输入到text2der。该文件旨在是人类可读和可编辑的,但也很容易使机器避开。格式是:
- 由零或更多空间组成的空白行或线,然后忽略“#”
- 第一行可以由pem编码{foo}的单词组成,其中{foo}是证书,证书请求,私钥等。这表示{foo}类型的PEM包装器。
- 带有空间的凹痕指示包含在上述构造类型或PEM编码中的项目。例如,在两个空间的凹痕上发生的构造集将包含所有由两个以上空间缩进的线。
- 缩进后,第一个单词通用,应用程序,特定于上下文或私有表示ASN.1类型类。该实用程序只能使类型的类型的类型的类型的通用人类可读,但可以保留所有其他类型的数据。
- 类型类别后,单词原始或构造的单词表示ASN.1原始类型的标志(内容代表此单一类型)与构造的(内容包含多个元素)。
- 对于可以是原始或构建该实用程序的类型,仅代表人类可读形式的原始类型。在大多数情况下,DER编码规则也会实现这一点。在所有情况下,无论是原始的还是构造的,都保留了数据。
- 原始/构造标志之后,ASN.1类型标签和元素内容如下:
- 结束,却一无所有
- 整数随后是数字或内容数据
- BOTSTRING,然后是正确的填充量(0-7位),然后是内容数据
- OctetString随后是内容数据
- 零是无关的
- OID然后是ASN.1对象标识符
- 对象描述后面是内容数据
- 外部又是内容数据
- 真实的内容是内容数据
- 列举,然后是数字或内容数据
- 嵌入式PDV随后是内容数据
- UTF8String随后是内容数据
- 相对底,然后是ASN.1对象标识符
- NumericString随后是内容数据
- PrintableString随后是内容数据
- 集合之后是较高的压痕级别,该线表示该集合中的数据
- 序列,然后是代表该集合中数据的较高压痕级的线
- T61String随后是内容数据
- videotexstring随后是内容数据
- IA5String(ASCII字符串),然后是内容数据
- utctime随后是内容数据
- 广义时间,然后是内容数据
- GraphicString随后是内容数据
- Visiblestring随后是内容数据
- 将军之后是内容数据
- compersalstring(UTF-32BE字符串),然后是内容数据
- 角色string随后是内容数据
- BMPSTRING(UTF-16BE字符串),然后是内容数据
- 未经用户标签= nn,然后是内容数据
- 这代表了我们在不了解ASN.1架构的情况下无法以人为可读的方式显示的一种类型。保留了这些数据,但可能不透明我们对编辑它的愿望。
- 如果构建构造,则内容数据将作为DER数据解析
在上面的列表中,“内容数据”包括:
- 角色:随后将数据转换为成对的十六进制的数据,由newline终止
- 角色'随后是由newline终止的数据。数据已修改如下:
- 新线转换为\\ n
- 马车回报转换为\\ r
最好将这些数据视为短暂的,以防将来的格式变化。换句话说,将数据保留为PEM或DER形式,并在应进行更改时将其转换为PEM或DER形式以进行存储。
示例输出
PEM ENCODED CERTIFICATE
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE INTEGER :00F4B0DA1F5D4A2788
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 1.2.840.113549.1.1.11
# Sha256WithRSAEncryption
UNIVERSAL PRIMITIVE NULL
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.6
# Country
UNIVERSAL PRIMITIVE PRINTABLESTRING \'US
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.8
# State
UNIVERSAL PRIMITIVE UTF8STRING \'Colorado
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.7
# Locality
UNIVERSAL PRIMITIVE UTF8STRING \'Parker
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.10
# OrganizationalUnit
UNIVERSAL PRIMITIVE UTF8STRING \'Ülfheim
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.3
# CommonName
UNIVERSAL PRIMITIVE UTF8STRING \'testcertificate.example.com
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 1.2.840.113549.1.9.1
# Email
UNIVERSAL PRIMITIVE IA5STRING \'fenris@ulfheim.net
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE UTCTIME \'180927171537Z
# 2018-09-27 17:15:37 GMT
UNIVERSAL PRIMITIVE UTCTIME \'190927171537Z
# 2019-09-27 17:15:37 GMT
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.6
# Country
UNIVERSAL PRIMITIVE PRINTABLESTRING \'US
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.8
# State
UNIVERSAL PRIMITIVE UTF8STRING \'Colorado
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.7
# Locality
UNIVERSAL PRIMITIVE UTF8STRING \'Parker
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.10
# OrganizationalUnit
UNIVERSAL PRIMITIVE UTF8STRING \'Ülfheim
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 2.5.4.3
# CommonName
UNIVERSAL PRIMITIVE UTF8STRING \'testcertificate.example.com
UNIVERSAL CONSTRUCTED SET
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 1.2.840.113549.1.9.1
# Email
UNIVERSAL PRIMITIVE IA5STRING \'fenris@ulfheim.net
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 1.2.840.113549.1.1.1
# RSA Encryption
UNIVERSAL PRIMITIVE NULL
UNIVERSAL PRIMITIVE BITSTRING PAD=0 :3082010A0282010100B772CB8D8B8E85F833350439EDC6C55E3AB4686A83A0DCF6C80C6DBBF10CCEF5AC799CBD0F5A62D2467AB708C2A2C34016B25C6C3057256328A0A4B7780FC08333E3238CB0E8E290144589EDA87AAB74CE6970DA1B29366B7A32E1CAF010EA4BCC8344774C896A04EDEA7B1A0937F952130706925AA6F42EDE577C081C825BE75232500F17077D8596D26B955456EC2A6CA01943A5FC328442B3C43BD540D8A40A8A8088A677E298ED3C8F16860B2007D17073241B5DFFA5835BDE5D200EC0BEEC798AEDAC587BF532073AC4664AEE6D091C3B92298A6BC461F3F5C16987980B5F449B0339B56F3F36353D4EE505728687E6E5000B70093BF64953C61AB253AF0203010001
UNIVERSAL CONSTRUCTED SEQUENCE
UNIVERSAL PRIMITIVE OID 1.2.840.113549.1.1.11
# Sha256WithRSAEncryption
UNIVERSAL PRIMITIVE NULL
UNIVERSAL PRIMITIVE BITSTRING PAD=0 :AFC3B8595D59E2EDB8CBB31486DE45FF89769215D6CE9FC46E43962BA77E8628FC68568AF7F6FB349CDC56D35CB318C2AB005BF22E2B3BF8DE1A38F6030BAB71135D1BD2F88222D7E5342794263A7C416689E69B90FF39C1CC54E8BAF1B0CDB92EF3A6F2B74AFA1985EDF095AD96C3A218F6C4B1E3449AE8D756BF23B059DCD35AB013DFC098CA4F8F44FCB76BE6E5BA003A0FC4CF0EDF39F85F7F1CBAF7F87C8479A168D24085F8EA705F245D9A7F9F91F27A73A18658243C7CE1B3E3F68BFDEDB4722621CBB21AA3B69511F078E741EB933B6457C13F08748361374ACDDAE5B00F757D3DE0D27A93C23908E967C5AE71D279D77264371DDB18CB200E44DBD9
