虚拟密钥开发者指南
虚拟密钥是一种公钥/私钥对,用于在与车辆交互时进行授权。 公钥必须由可信用户添加到车辆中,而私钥则需要安全地保存在应用程序的服务器上。 在执行命令或接受车队遥测配置之前,车辆会验证有效载荷是否由其系统中存在的公钥对应的私钥签名。
设计说明
虚拟密钥为用户提供了重要的保护层。添加密钥到车辆中需要可信用户的参与,从而防止即使是特斯拉的后台也无法访问这些功能。 这确保了只有授权方才能通 过车队遥测执行命令或访问设备数据。 如果用户想随时撤销访问权限,可以通过车辆的“锁屏”界面移除虚拟密钥。
设置步骤
创建密钥对
要创建私钥,请运行以下命令:
openssl ecparam -name prime256v1 -genkey -noout -out private-key.pem
接着,生成关联的公钥:
openssl ec -in private-key.pem -pubout -out public-key.pem
注意:车辆 仅支持 prime256v1
类型的密钥。
托管公钥
公钥需要保持可通过以下路径访问:
https://developer-domain.com/.well-known/appspecific/com.tesla.3p.public-key.pem
注意:
private-key.pem
必须保密,切勿托管到任何域上。
在公钥可以公开访问后,调用 合作伙伴账户注册 接口,将此密钥注册到特斯拉系统中。
添加到车辆
特斯拉可以为通过 B2B 计划 购买的车辆添加虚拟密钥。注意:需要保证车辆已配对的钥匙数量小于20个,用户可在fleet_status接口查询已经配的钥匙数量 在 B2B 计划之外购买的车辆不允许特斯拉远程添加钥匙。对于这些情况,虚拟钥匙必须由具有车辆访问权限的用户添加。
要通过 Tesla 移动应用程序请求虚拟密钥配对:
- 确保用户已 授权应用程序 并授予
vehicle_device_data
、vehicle_cmds
或vehicle_location
范围。 - 将用户引导至密钥配对深层链接:
https://tesla.com/_ak/*developer-domain.com*
拥有多辆车的用户可以在打开密钥配对链接之前选择车辆,或者可以添加可选的 vin
参数:
https://tesla.com/_ak/*developer-domain.com*?vin=VIN123
删除密钥
用户可以通过车辆的“锁屏”界面删除密钥以移除访问权限。 此外,也可以通过撤销第三方应用程序的访问权限来远程撤销密钥。
术语解释
- 虚拟密钥: 虚拟密钥是开发者应用程序用来与车辆安全通信的公钥/私钥对。
- 公钥: 一种加密密钥,用于车辆验证有效载荷是否来自可信来源。
- 私钥: 一种加密密钥,用于车辆命令代理对发送给车辆的有效载荷进行签名。私钥必须保密,以防止未经授权的车辆访问。
- 签名命令: 签名命令是通过应用程序私钥签名的命令(例如解锁车门)。 最简单的签名命令方法是通过车辆命令代理完成。