文章总结: 本文介绍主机厂向供应商安全下发公钥的X.509证书应用方案。核心内容包括公钥的PEM、CRT、DER三种存储格式对比,使用OpenSSL工具解析公钥及生成自签名证书的完整流程,阐述X.509证书签名与验签原理,并演示通过SREC_CAT工具将DER证书转换为嵌入式S19文件的方法,为汽车网络安全实践提供可操作指导。
综合评分: 75
文章分类: 车联网安全,应用安全,安全工具,解决方案
主机厂公钥如何安全下发?X.509证书在汽车网络安全中的应用
谈思实验室
2026年9月23日 17:58
上海
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
以下文章来源于开心果 Need Car
,作者开心果 Need Car
开心果 Need Car
.
号主:开心果 Need Car,主要从事汽车Autosar开发,公众号主要分享 通信、诊断、存储、网络管理、标定、Bootloader等工程开发问题。致力于将学到的知识,分享给更多的Autosar从业者,努力解答一线开发工程师的困顿!
点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
在信息安全的话题里,非对称算法中的公钥传递是一个常见问题。这里的传递场景之一:主机厂将开发公钥分发给供应商。所以,这个过程就需要关注几个问题:
- 公钥存储的文件格式
- 如何基于这些文件解析公钥(比如X.509)
……
01
公钥存储的文件格式
以RSA2048算法为例,它的公钥使用 .pem、.crt 或 .der 格式。
02
如何解析公钥
(一)基于Openssl的公钥文件解析
PEM(Privacy Enhanced Mail)格式(Base64编码的 ASCII 文本)。
openssl rsa -pubin -in publickey.pem -text -noout
X.509 证书(如 .crt 文件),可以是PEM(文本)或DER(二进制)格式。
openssl x509 -in certificate.crt -text -noout
可以使用 -inform DER/PEM参数来确认使用的是DER还是PEM格式:
openssl x509 -in certificate.crt -inform DER -text -nooutopenssl x509 -in certificate.crt -inform PEM -text -noout
DER(Distinguished Encoding Rules)格式(如 .der 文件),二进制编码(ASN.1 DER 编码)。
openssl x509 -in certificate.der -inform der -text -noout
三种格式对比如下:
| | | | |
| — | — | — | — |
| 扩展名 | 全称 | 编码格式 | 常见用途 |
| .pem | Privacy Enhanced Mail | Base64 + ASCII | 通用证书、公钥、私钥 |
| .crt | Certificate | PEM 或 DER | SSL/TLS 证书 |
| .der | Distinguished Encoding Rules | 二进制 | Java、嵌入式系统 |
03
使用OpenSSL工具来生成一个 X.509 格式的证书(.crt 文件)
通常包括以下几个步骤:
步骤 1:生成私钥
openssl genrsa -out private.key 2048
步骤 2:生成证书签名请求(CSR)
openssl req -new -key private.key -out request.csr
会被提示输入一些信息,例如:国家(Country Name)、省份(State or Province)、城市(Locality)、组织(Organization Name)、通用名称(Common Name,例如域名)、邮箱地址。也可以直接回车。
步骤 3:使用 CSR 自签名生成 X.509 证书(.crt)
openssl x509 -req -in request.csr -signkey private.key -out certificate.crt -days 365
这会生成一个有效期为 365 天的自签名证书 certificate.crt。
如上流程执行示意如下:
最终会得到三个文件:
| | |
| — | — |
| 文件名 | 说明 |
| private.key | 私钥(保密) |
| request.csr | 证书签名请求(可用于申请 CA 签名) |
| certificate.crt | X.509 格式的公钥证书 |
得到的文件如下所示:
可以生成用于嵌入式的DER格式自签名证书;
openssl x509 -req -in request.csr -signkey private.key -outform DER -out certificate.der -days 365
X.509 证书规范本身就是基于ASN.1(Abstract Syntax Notation One)定义的结构。-outform DER 表示输出为 DER(Distinguished Encoding Rules)格式,它是 ASN.1 的一种二进制编码方式。所以,生成的 certificate.der 文件是一个ASN.1编码的X.509证书,符合 RFC 5280的结构规范。
生成的certificate.der证书,示意如下:
可以使用如下命令解析certificate.der证书:
openssl x509 -in certificate.der -inform DER -text -noout
04
X509证书中的签名和验签过程
(一)签名的内容
X.509 签名的内容包括:证书版本号、序列号、签名算法标识符(用于签名的算法,如 SHA256 with RSA)、颁发者信息(Issuer)、有效期(Not Before / Not After)、主题信息(Subject)、公钥信息(Subject Public Key Info)、扩展字段(如 Key Usage、Subject Alternative Name 等)、可选的唯一标识符(Issuer/Subject Unique ID)
这些内容构成了证书的 TBS(To Be Signed)部分。
(二)签名过程简述
- 证书颁发机构(CA,Certificate Authority)将上述 TBS 内容进行哈希处理(如 SHA-256)。
- 使用 CA 的私钥对哈希值进行加密,生成签名。
- 签名附加在证书末尾,形成完整的 X.509 证书。
(三)验证签名时
- 使用 CA 的公钥解密签名,得到原始哈希值。
- 对 TBS 部分重新计算哈希值。
- 比较两个哈希值是否一致,以验证证书是否被篡改。
- 使用SREC_CAT将*.der证书转换成*.s19文件
嵌入式工程中,传输给ECU的是二进制文件(eg:*.s19、*.hex、*.bin等),如何将*.der证书转换成*.s19文件?使用SREC_CAT.exe转换命令如下:
srec_cat certificate.der -binary -offset 0x0000 -o certificate.s19 -motorola
参数说明:
certificate.der:输入文件(DER 格式)
-binary:指定输入格式为二进制
-offset 0x0000:从地址 0 开始写入(可根据需要修改)
-o certificate.s19:输出文件名
-motorola:指定输出格式为 Motorola S-record(即 S19)
输出文件,如下所示:
https://www.cnblogs.com/linianhui/p/security-x509.html
参考链接:
https://www.cnblogs.com/charlieroro/p/10948173.html
Windows的SRecord下载链接:
https://sourceforge.net/projects/srecord/files/srecord-win32/1.65/srecord-1.65.0-win64.zip/download
注意:记得将SRecord添加到“系统变量”的path中,以便于在任何位置使用。
包含的工具:
- srec_cat.exe:用于格式转换、合并、裁剪等操作
- srec_cmp.exe:比较两个固件文件
- srec_info.exe:查看文件信息
将.s19 文件转换为二进制(.bin 或 .der):
srec_cat.exe DER_CERT.s19 -Motorola -o DER_CERT.der -Binary
然后可以使用 OpenSSL 解析 DER_CERT.der:
openssl asn1parse -in DER_CERT.der -inform DER
DER_CERT.der文件解析如下所示:
将DER_CERT.der文件解析的内容输出到*.txt文件,命令示意如下:
openssl asn1parse -in DER_CERT.der -inform DER > RootKey.txt
openssl操作如下:
DER_CERT.der文件在线解析如下所示:
*.der文件在线解析链接:
https://aks.jd.com/tools/sec/
pip install pyasn1
ASN1_DER_Parser.py脚本内容如下所示:
from pyasn1.codec.der.decoder import decodefrom pyasn1.codec.der.encoder import encodefrom pyasn1.type.univ import Sequence, BitStringimport binasciiimport textwrapimport sysdef format_hex(data: bytes, width: int = 16) -> str: hex_str = binascii.hexlify(data).decode() lines = textwrap.wrap(hex_str, width * 2) return '\n'.join( f"{' '.join(['0x'+line[j:j+2]+',' for j in range(0, len(line), 2)])}" for i, line in enumerate(lines) )def display_structure(obj, level=0, label=""): indent = ' ' * level encoded = encode(obj) hex_output = format_hex(encoded) typename = type(obj).__name__ value = obj.prettyPrint() # 自动识别公钥字段 if isinstance(obj, BitString) and len(obj) > 256: label = "Public Key" print(f"{indent}{label or typename}: {value}") print(f"{indent}Hex Dump:\n{indent}{hex_output.replace('\n', '\n' + indent)}\n") if isinstance(obj, Sequence): for i, component in enumerate(obj): display_structure(component, level + 1, f"Element[{i}]")def parse_der_file(file_path): with open(file_path, 'rb') as f: der_data = f.read() asn1_obj, _ = decode(der_data) print(f"\n Parsing DER file: {file_path}\n") display_structure(asn1_obj)if __name__ == "__main__": if len(sys.argv) != 1: print("Usage: python ASN1_DER_Parser.py <DER_FILE_PATH>") else: parse_der_file('C:/Code/src/DER_CERT.der')
运行命令:
python ASN1_DER_Parser.py
运行结果:
end
谈思汽车媒体门户
精品活动推荐
AutoSec系列沙龙
专业社群
部分入群专家来自:
新势力车企:
特斯拉、理想、极氪、小米、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯……
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚……
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用……
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、潍柴集团、地平线、紫光同芯、字节跳动、……
二级供应商(500+以上):
中科数测、ETAS、BlackDuck、NXP、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、加特兰微电子、浙江大学……
人员占比
公司类型占比
文章
不要错过哦,这可能是汽车网络安全产业最大的专属社区!
首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:谈思实验室 《主机厂公钥如何安全下发?X.509证书在汽车网络安全中的应用》