在Linux或macOS上使用STM32CubeIDE时,如何将证书颁发机构(CA)证书导入JRE信任库?
本文描述了在使用Linux时如何将CA证书导入JRE信任库,但相同的方法适用于macOS,只是路径略有不同。
 

1.背景

与STM32CubeIDE捆绑的JRE Java Runtime Environment仅包含公共证书颁发机构(CA)。有时,您需要添加一个专用CA,例如在使用代理服务器访问Internet时。
可能出现以下问题在STM32CubeIDE中,如果CA未包含在信任库中:
javax.net.ssl.ssl握手异常:sun.security.validator.ValidatorException:PKIX路径构建失败:
sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效证书路径

2.解决方案

下面列出了如何将专用CA证书导入JRE的信任库的两种方法。这两种方法都使用Java密钥工具将私有CA导入STM32CubeIDE使用的信任库。
 


2.1方法1–导入JRE信任库的当前版本

将CA证书导入JRE的信任库的当前版本。
优点:使公共CA证书始终保持最新
缺点:每次JRE更新时,都需要重新导入私有CA证书

1.关闭STM32CubeIDE
2.打开STM32CubeIDE安装文件夹3。打开<stm32cubeide.ini>并在文件中找到当前JRE,例如:-vm插件/com.st.stm32cube.ide.jre.linux64_x.x.x.xxxxx/jre/bin
4.使用keytool导入CA证书

$cd插件/com.st.stm32cube.ide.jre.linux64_x.x.xxxxx/jre
$bin/keytool-importcert-alias aUniqueName-密钥库lib/security/cacerts-文件PathToTheCaToImport.cer
默认信任库密码为“changeit”,需要保留为

5.对每个所需的CA证书重做步骤4
 

2.2方法2–从JRE的信任库的当前版本复制

JRE信任库当前版本中的证书重复。
优点:配置在STM32CubeIDE JRE更新中保持不变
缺点:已被吊销的公共CA证书将在STM32CubeIDE中保持受信任
1.关闭STM32CubeIDE

2.打开STM32CubeIDE安装文件夹
3.打开
<stm32cubeide.ini>并在文件中找到当前JRE,例如:

-虚拟机

插件/com.st.stm32cube.ide.jre.linux64_x.x.xxxxx/jre/bin
4.复制当前信任库

$cp插件/com.st.stm32cube.ide.jre.linux64_x.x.x.xxxxx/jre/lib/security/cacerts/某处/cacerts
5.使用keytool导入CA证书
$cd插件/com.st.stm32cube.ide.jre.linux64_x.x.xxxxx/jre

$bin/keytool-importcert-alias aUniqueName-密钥库/某处/cacerts-文件PathToTheCaToImport.cer
默认信任库密码为“changeit”,需要保留为

6.对每个所需的CA证书重做步骤5
7.将这些行添加到<stm32cubeide.ini>的末尾

-Djavax.net.ssl.trustStore=/某处/caerts

-Djavax.net.ssl.trustStorePassword=更改它
 

3.参考文献

Java语言关键工具命令文档:关键工具