主题中讨论的其他器件: CC3235SF、 UNIFLASH、 CC3220SF
尊敬的团队:
我想为 CC3235MODSF 生成我们公司自己的生产代码签名证书。 SWUP332A 描述了生成私钥和证书签名请求文件的方法。
我已经生成了这两个文件。 问题是 、我现在找不到一个 CA、它为2048的 RSA 密钥长度生成了完整的信任链。 他们只颁发密钥长度为3072和4096的证书。
CC3235是否支持具有更长 RSA 密钥的证书?
此致
Ulrich
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的团队:
我想为 CC3235MODSF 生成我们公司自己的生产代码签名证书。 SWUP332A 描述了生成私钥和证书签名请求文件的方法。
我已经生成了这两个文件。 问题是 、我现在找不到一个 CA、它为2048的 RSA 密钥长度生成了完整的信任链。 他们只颁发密钥长度为3072和4096的证书。
CC3235是否支持具有更长 RSA 密钥的证书?
此致
Ulrich
您好、Kobi、
感谢您参考文档 SWRU547a。
供您参考:自2021年1月1日起、正式 CA 仅颁发密钥长度大于3072位的代码签名证书。
阅读完 SWRU547a 文档后、有一些未解决的问题、但该文档没有回答或忽略。
以下说明的目的是创建特定于供应商的代码签名证书、以保护 CC3235MODSF 项目的固件。
我不是证书生成方面的专家。 因此、我们必须与 TI 一起检查下面描述的过程。 OTP 内容出现故障将不可避免地导致 CC3235SF 模块或器件不可用。
在生成 OTP 内容和证书列表之前、需要特定于供应商的根 CA 证书和代码签名证书。 如文档 SWUP332A 中所述、我们使用 OpenSSL 生成密钥和证书。
OpenSSL req -x509 -SHA256 -天3650 -新密钥 RSA:2048 -节点-打包 my-root-ca-key.key -输出 my-root-ca.crt
OpenSSL x509 -输入 my-root-ca.crt -outform der -out my-root-ca.der
OpenSSL x509 -输入 my-root-ca.crt -outform pem -out my-root-ca.pem
OpenSSL RSA -in my-root-ca-key.key -out my-root-ca-key.pem
OpenSSL req -newkey rsa:2048 -SHA256 -nodes -keoutmy-code-cert-key.key -out my-code-cert.csr
OpenSSL x509 -req -CA my-root-ca.crt -cakey my-root-ca-key.key -in my-code-cert.csr -out my-code-cert-ca.crt -days 3650
OpenSSL x509 -输入 my-code-cert-ca.crt -outform der -out my-code-cert-ca.der
OpenSSL x509 -输入 my-code-cert-ca.crt -outform pem -out my-code-cert-ca.pem
OpenSSL RSA -in my-code-cert-key.key -out my-code-cert-ca-key.pem
根据文档 SWRU547a、使用"SLImageCreator"生成证书目录。
SLImageCreator.exe 工具 make_cert_catalog --cert_folder "C:\Certs\KnownCA"--out_file "C:\Certs\my-cert-catalog-
20211022.lst"
SLImageCreator.exe 工具签名--file "C:\Certs\my-cert-catalog-20211022.lst"--priv"C:\Certificates\my-root-ca-key.pem"
--out_file "C:\Certs\my-cert-catalog-20211022.lst.signed.bin"--fmt "binary_sha2"
根据文档 SWRU547a、使用"SLImageCreator"创建 OTP 内容。
SLImageCreator.exe 工具 meta --cert "C:\Certifications\my-root-ca.pem"--out_file "C:\otp\evotron-ca_otp.meta"
-mac "0000000000000000"--usechain
SLImageCreator.exe 工具签名--file "C:\otp\evotron-ca_otp.meta"--priv"C:\Certificates\my-root-ca-key.pem"
--out_file "C:\otp\evotron-ca_otp.meta.sig"--fmt "binary_sha2"
SLImageCreator.exe 工具 INF --algo 2 --sign1 "C:\otp\evotron-ca_otp.meta.sig"
--sign2 "C:\oto\evotron-ca_otp.meta.sig"--meta "C:\oto\evotron-ca_otp.meta"--out_file "C:\otp.evotron-ca_otp.inf"
文件"evotron-ca_otp.inf"已在目录"C:\OTP"中创建、请参见屏幕截图。
下一个屏幕截图显示了我们特定于供应商的证书目录的结构。
OTA 映像使用"UniFlash" V 6.4.0创建。
我已上传生成的 TAR 归档文件进行检查。
e2e.ti.com/.../20211021153136_5F00_CC3220SF_5F00_DCC240x.tar
Kobi、
您是否愿意检查或检查我的程序? OTP 只能编程一次。 如果我的过程中出现错误或错误、则 CC3235SF 将无法使用。 器件很少且价格昂贵。
非常感谢您的善意帮助。
此致
Ulrich
从一开始看、这似乎是可以的。
我可以在这里建议您使用较旧版本的 Uniflash (版本6.0.0、您可以 在 Uniflash 下载页面中找到、查找"以前的版本")。
该版本存在一个问题、即未使用 OTP (而是将内容写入常规闪存段)。
您可以使用此选项在开发过程中验证您的设置。
然后移至最新的 Uniflash 版本之一以制作产品。
需要注意的一点 是、供应商目录功能仅使用 uniflash (即连接 simplelink 器件)。 Gang 映像目前不支持该功能。
您好、Kobi、
感谢您的友好支持、但我还有一些问题。
1.到目前为止,我无法安装特定于供应商的证书。 到目前为止、我已经完成了以下工作:
我已生成以下证书和密钥:
-根 CA 证书"evotron-root-ca",
-代码签名"dcc2404-cert-ca",使用根 CA 签名
- OTA 签名"ota-dcc2404-cert-ca"、使用代码签名签名进行签名
之后、我根据说明生成了证书目录和 OTP 信息文件。
现在、我尝试使用 UniFlash 6.0.0在 CC2'3235SF 中加载证书目录、证书、OTP 和 MCU 映像、但不知怎么说、我无法再获取任何其他内容。 我正确地假设 OTP 是通过 UART0编程而不是通过 OTA 编程的。 此假设是否正确? SWRU547A 文档第13页的第7.4节规定:
第7.4节的最后一句说明 MCU 映像必须使用根 CA 密钥进行签名。 这是否仅适用于具有 OTP 内容的这一个映像? 所有其他没有 OTP 内容的 MCU 映像是否可以随后使用代码签名证书进行签名?
然后是有关 OTA 捆绑包加密的另一个问题。 其中、UniFlash 工具指定了要用于加密 OTA 捆绑包的证书。
此致、
Ulrich
您好 Ulrich、
仅对于目录更新、您需要 OTP 私钥(因为目录由其签名)。 对于不涉及目录的其他 OTA 更新、您可以使用任何所需的密钥、但匹配的公共密钥(证书)必须驻留在文件系统中、并且其文件名必须在处理 OTA 的 MCU 代码中进行相应更新。
请参阅:
此致、
Shlomi
您好、Shlomi、
感谢你对我的第二个问题的答复。 但第二个问题只是一个边演。
我遇到了特定于供应商的代码签名证书问题。 我在 e2e 中发现了一个已解决的问题、Kobi 告诉客户 OTP 不支持证书链。 请参阅此处: https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/912445/cc3235sf-vendor-specific-certificate-catalog-and-otp---not-working
这就是我生成了一个特定于供应商的根 CA 和上面描述的密钥的原因。 然后、我生成了一个特定于供应商的证书目录、其中仅包含根 CA 和 OTP INF 文件、如上所述。
之后、我使用 UniFlash 6.0.0、因为 Kobi 告诉我要测试供应商特定的证书。 我添加了生成的特定于供应商的证书目录、
服务包、证书
和使用 my-root-ca.pem 私钥签名的 MCU-Image。 然后、我使用 UART0开始编程。 Uniflash 会准备一些文件、其中一个文件的大小为94708、另一个文件的大小为1008、映像编程的运行速率高达99%。 最终失败的有:
我不知道导致这个问题的原因是什么。
此致、
Ulrich
您好!
首先、使用旧的 Uniflash 仅适用于 Gen2器件、即 CC3220。 对于 Gen3、较旧的 Uniflash 没有该错误、因此您刷写到 OTP 中的任何内容都已刷写、您无法更改它。
但是、我仍然看不到该过程的问题、因为您在 OTP 部分中包含了根 CA 证书、并将其包含在目录中。
您得到的错误通常表示在根据目录进行测试时 mcuflashimage 的身份验证失败。
您将哪个证书与 mcuflashimage 一起使用? 这是根 CA 吗?
Shlomi
您好、Shlomi、
不使用 mcuflashimg 的编程运行时不显示错误消息。
这是我使用以下 OpenSSL 命令创建的公共证书:
OpenSSL req -x509 -SHA256 -天3650 -新密钥 RSA:2048 -节点-打包 C:\Certificates\evotron-root-ca-key.key -out C:\Certificates\evotron-root-ca-cert.crt
---- 开始证书--
MIIENzCCAx+gAwIBAgIUJXLkxtur2C76IKIwrUtnXILlWKWDQYJKoZIhvcNAQEL
BQAwgaxCzAJBgNVBAYTAKRFMRMwEQYDVQIDApUaHVlcmlluZ2VUMQ0wCwYDVQH
DARTdWhsMR4wHAYDVQKDBVldm90cm9uIEdtYkggJibd4gS0cxEzARBgNVBAsM
CkNBLWV2b3Ryb24xHTAbBgNVBAMMFGV2b3Ryb24tcm9vdC1jYS1jZXJ0MSMwIQYJ
KoZIhvcNAQkBFhRpbmZvQGV2b3Ryb24tZ21iaC5kZTAeFw0yMTEwMjYxMzQ3Mjha
Fw0zMTEwMjQxMzQ3MjhAMIGqMQswCQYDVQGEwJERTETMBA1UECAwKVG1ZXJp
bmdlbjENMAsGA1UEBwwEU3VobDEeMBwGA1UECgwVZXZvdHJvbibBHBWJIICYgQ28u
IEtHMRMwEQYDVQLDAPDQS1ldm90cm9uMR0wGwDVQDDBRldm90cm9uLXJvb3Qt
Y2EtY2VydDEJMCEGCSqGSIb3DQEARYUaW5mb0Bldm90cm9uLWdtYmguZGUwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDwuFyukvfK9jOf2ZGZYXlIB9r8
+kuX0/B7M8kzjkAKYwJUIEgt0Ut15zxeUBp23opZZj8sErwopnxiaqzY/MfMdi2l
nLs2kor9QG1vQA25xXWiZ3OvdWIlmvkerHrRvI4MN4Df1p9oG44mbY6UPoAM4zF
Hjzd4xUyrGxsZvAdrXx8R/JVAfWM5TAOUUor92otN8TRd7+vKeKJWraaT5e/eppL
k0mofrQVyRtG+VgQMH/3KOVEA91DavA/S1U2qos/Gy0pofgabgo9dFRYZl/WzG
lf0sMzN0DhqT/o2r7fecxZw1SIQI0o8fc2kT+3KXrU0AmsUuyhpqMUaIqXprAgMB
AAGjUzBRMB0GA1UdDgQWBBQRkKWFcrK9sVq+SOej3DYTgOVMKDAfBgNVHSMEGDAW
gBQRkKWFcrK9sVq+SOej3DYTgOVMKDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
DQEBCwUAA4IBAQAX0aQ/A/00gSNZsVyt8h6AoNU0nJrOxFoFiibYLNHMAfxpJ6j5
yBJFF65XwCtVuB81hZdC1fuWl4Ubclo9NGJxNaxR39qQYPaorgXIhLhrmHvLdPau
ui05KdlAyMC0PUKNHB9LrTiNFsbgklJ/REW+5cBcbjD4SAVC5h1xIWebfcGl+S3
xAqKWBU1AvjHTtHJJJiogSVY62TEDmsm/5Ci1daBktOnkCuw/ZT/O0eb2rFBiQFB
VJRXMFlM6hnxSP4aTACCOK6gO6KoAnv2fgu3rKWcRdJvaOA0O+Fwb1PfxJ4bY/E
b RZI4kQxa 非 IFzUe0WCpKGVESKYJRWKUEGb
---- 结束证书--
此致
Ulrich
您好、Shlomi、
我已经再次阅读了文档 SWRU547A 和 SWPU332A。 我的回答是:
我必须生成2个证书,即供应商根 CA“my-root-ca-cert”和代码签名证书“my-app-cert”。
OTP INF 文件“my-otp.inf”包含供应商根 CA“my-root-ca-cert.pem”。 此证书是使用 OpenSSL 命令生成的:
OpenSSL req -x509 -SHA256 -天3650 -新密钥 RSA:2048 -节点-打包 C:\Certificates\my-root-ca-key.key -out C:\Certificates\my-root-ca-cert.crt
证书目录包含代码签名证书“my-app-ca-cert.der””。 证书目录使用“my-root-ca-cert”的私钥签名。 使用 OpenSSL 命令生成代码签名证书:
OpenSSL req -x509 -SHA256 -天3650 -新密钥 RSA:2048 -节点-打包 C:\Certificates\my-app-ca-key.key -out C:\Certificates\my-app-ca-cert.crt
“my-app-ca-cert”的私钥用于对 MCU 映像进行签名。
两个证书“my-root-ca-cert”和“my-app-ca-cert”都以 PEM-format 放置在编程映像的根目录中。
如果我理解 SWPU332A 的第2.2章、代码签名证书"my-app-ca-cert"的 CN 必须为"my-app-ca-cert"。
所以我明天会尝试这个。
此致、
Ulrich
您好 Ulrich、
没错。
正如我所想的那样、没有 mcuflashimg 的编程工作、这证明了它失败、因为它无法验证 mcuflashimg 证书链。
Shlomi
早上好、Slomi、
我已经按照您的建议完成了这项工作、但它没有运行。 每次出现相同的错误消息。
因此、我已经分析了 TI 游乐场证书"dummy-root-ca-cert"和"dummy-trusted ca-cert"、您会看到以下"dummy-trusted-ca-cert"由"dummy-root-ca-cert"签名。 两者都以 DER 格式存储在运动场中。
我也这么做了、测量:
上述证书"my-root-ca-cert"存储在 OTP 中、证书目录使用"my-root-ca-cert"的私钥签名。
我已为我的应用"my-app-root-cert"生成了根证书。 这存储在证书目录中。 我已经为我的应用程序"my-app-ca-cert"生成了代码签名、该签名由"my-app-root-cert"签名。
因此、OTP 包含用于加密证书目录的公钥。 证书目录包含"my-app-root-ca"、这是用于加密代码签名证书"my-app-ca-cert"的公钥。 代码签名证书对 mcuflashimg 进行加密。
我测试过这一点、但没有成功。 令人沮丧!
问题:
1.对于存储在 OTP 中的自定义证书的生成,是否有特别的知识? 我已使用以下 OpenSSL 命令完成此操作:
OpenSSL req -x509 -SHA256 -天3650 -新密钥 RSA:2048 -节点-打包 C:\Certificates\evotron-root-ca-key.key -out C:\Certificates\evotron-root-ca-cert.crt
此证书的公钥如上所示。
2.除证书的 CN 之外,是否有其他建议建议涉及代码签名证书的生成? 我已使用以下 OpenSSL 命令生成证书:
OpenSSL req -x509 -SHA256 -天3650 -新密钥 RSA:2048 -节点-打包 C:\Certificates\my-app-ca-key.key -out C:\Certificates\my-app-ca-cert.crt
公钥如下所示:
---- 开始证书--
MIIELTCCAxWgAwIBAgIUAMmxzgBOyFrK9en0gmt+5ly510wDQYJKoZIhvcNAQEL
BQAwgaUxCzAJBgNVBAYTAKRFMRMwEQYDVQIDApUaHVlcmlluZ2VQ0wCwYDVQH
DARTdWhsMR4wHAYDVQKDBVldm90cm9uIEdtYkggJibd4gS0cxEzARBgNVBAsM
CkNBLWV2b3Ryb24xGDAWBgNVBAMMD2RjYzI0MDQtY2EtY2VydDEJMCEGCSqGSIb3
DQEJARYUaW5mb0Bldm90cm9uLWdtYmguZGUwHhcNMjExMDI3MDkwNDAzWhcNMzEx
MDI1MDkWNDAzWjCBpTELMAkGA1UEMBhCRExEzARBgNVBAGMClRodWVyaW5nZW4x
DTALBgNVBACMBFN1aGwxHjAcBgNVBAoMFWV2b3Ryb24gR21iSCAmIENvLiBLRzET
MBEGA1UECwwKQ0EtZXvdHJvbjEMBYGA1UEAwwPZGNJQwNC1jYS1jZXJ0MSMw
IQYJKoZIhvcNAQkBFhRpbmZvQGV2b3Ryb24tZ21iaC5kZTCCASIwDQYKoZIhvcN
AQEBBQADggEPADCCAQOQCggEBALFcDkMyZ2jcgmU5OHk9eXmYlvwkRcH2Vuw7o+SW
jRwaFw/FBt+JsnlLPb175G8rHLj1Mq9a4nhxJS/MSF + phEeFOnHrHm4XMea+JxJ
Y6WppFId2J0DK51+6CTcBssII8UbvOxSFaxx3G1KdvlYfj3VCNQSHpCNDvXZ7Q
B+Y4KLUCKEXG0+/JgDBsiStvxj67jn4T3J3XwWTGnM5AqsQESQttCRVMVyr+E
5ZUjwPBDqyrX80k9I2dftzY7g9FP2NLw+KTzjsjAmVwHvP7nk85AWCMyqyNVbFRm
89QOEfudGkNkviNe+Ykao8WJTdKUjJXopqtFBzM8lPMPruCAwEAAAaNTMFEwHQYD
VR0OBBYEFHoIldNcn+uCDSgB8UbqIFPsdlEUMB8GA1UdIwQYMBaAFEIldNcn+UC
DSgB8UbqIFPSdlEUMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
Achm2MVL2r6WEWkurQxp3UKPaNeq/XnnxOqdMoP61yj+Syse+E6f8lo26Gz9CNm
Hp8jLJTN4V5mycXH2P7SM7F7wRrexdx2Pq+WPeM1DjWSM6uI9uwXFSweI63/je++
5d2TOFAUJcjIoNS7J0Chth3hnt2jFqvbtbS+U629MPZI8kOFs23Gshc1ZXRCdA/
LIff3ZfVEymTEnXLqQOGXMO/8jEetg7tqpMa200mz9SxmfR/rN0Mw66JdeanXJbB
YaBQvxZI/T9ZBBIa2F3T+6G5RaI3cZouxzeFGmtMXeVLHNvm3ROlgTCQUAt0ou0q
MOmyyvg/yZH0rDkNVqbtgQc=
---- 结束证书--
3.游乐场证书没有文件扩展名。 这是建议吗?
4.是否有任何提示?
Shlomi、
我也有 CC3220SF LaunchPad。 因此、如果 UniFlash 6.0.0中存在此功能。 您能不能推荐做什么。
Ulrich
您好、Shlomi、
OTP INF 文件的生成可能会导致问题。 我这样做的方式如下:
SLImageCreator.exe 工具 meta --cert "C:\Certificates\evotron-root-ca-cert.pem"--out_file "C:\Certificates\otp\evotron-root-ca-otp.meta"--mac "000000000000"--usechain
选项--usechain 是签名2的选项,是否正确?
下一步:
SLImageCreator.exe 工具签名--file "C:\Certificates\otp\evotron-root-ca-otp.meta"--priv"C:\Certificates\evotron-root-ca-key.pem "--out_file "C:\Certificates\otp\evotron-root-ca-otp.meta.sig"--fmt "binary_sha2"
最后:
SLImageCreator.exe 工具 INF --algo 2 --sign1 "C:\Certifications\otp\evotron-root-ca-otp.meta.sig"--sign2 "C:\otp\evotron-root-ca-meta.sig"--meta "C:\otron-ca-otp.sig"--meta\otp\evotron-c-ca-otp.ma.files"--"\meta_Certificates\cates\cates\cates\certificates\cates\cates\cates\cates\cat evotron-root-ca-otp.inf"
我问我什么是错误的。
此致、
Ulrich
您好!
我对所有证书名称有点困惑。 您能详细说明吗?
目录中最终会有什么内容?
my_app_root_cert 和 my_app_root_ca 是否相同?
您需要的是确保您的链作为示例与您提供的 dummy_trusted_ca_cert 链接正常、即"颁发给"和"颁发者"按预期链接。
如果我使用 链中较高的证书 my-app-ca-cert.crt、它看起来像是一个自签名证书、不会链接到 my_app_root_cert 请参见下图:

由于此证书不在目录中、因此它将失败。
我建议只在测试中使用您知道目录中确实存在的链中的较低证书直接对 mchflashimg 进行签名。
请告诉我它是否起作用。
Shlomi
您好、Shlomi、
我的代码签名证书不起作用有两个原因:
OTP 证书仍然有效。
我已联系我们的 FAE、他已联系 Roger Monk。 我和他一起解决了这个问题。
此致、
Ulrich
奇怪的是、在生成证书时、是否解决了将电子邮件地址字段留空的问题? 谢谢。
戴维·R.