非管理员权限下导入JFrog证书到Keystore遇权限拒绝错误求解决
无需管理员权限的解决方案
问题根源是系统默认的cacerts.jks存放在Program Files目录下,普通用户没有写入权限,没法直接修改。可以通过以下步骤绕开这个限制:
第一步:复制系统密钥库到个人目录
先把系统默认的密钥库复制到你有读写权限的位置(比如桌面),命令如下:copy "%JAVA_HOME%\jre1.8.0_202\lib\security\cacerts.jks" C:\Users\Ramen\Desktop\my_cacerts.jks这样你就拥有这个副本的完全操作权限了。
第二步:导入证书到自定义密钥库
修正你原命令的语法错误(原命令里keystore参数的引号没闭合),然后导入证书到刚才复制的自定义密钥库:keytool -importcert -file C:\Users\Ramen\Desktop\jfrog.cer -keystore C:\Users\Ramen\Desktop\my_cacerts.jks -alias JFROG_NEW输入密钥库密码(默认是
changeit),按提示确认导入即可。第三步:让Java应用使用自定义密钥库
运行Java程序或构建工具时,通过JVM参数指定使用这个自定义密钥库:- 直接运行Java类:
java -Djavax.net.ssl.trustStore=C:\Users\Ramen\Desktop\my_cacerts.jks -Djavax.net.ssl.trustStorePassword=changeit YourMainClass - Maven项目:在
pom.xml的maven-surefire-plugin中添加系统属性:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemPropertyVariables> <javax.net.ssl.trustStore>C:\Users\Ramen\Desktop\my_cacerts.jks</javax.net.ssl.trustStore> <javax.net.ssl.trustStorePassword>changeit</javax.net.ssl.trustStorePassword> </systemPropertyVariables> </configuration> </plugin> - Gradle项目:在
build.gradle的任务中添加系统属性:test { systemProperty 'javax.net.ssl.trustStore', 'C:\\Users\\Ramen\\Desktop\\my_cacerts.jks' systemProperty 'javax.net.ssl.trustStorePassword', 'changeit' }
- 直接运行Java类:
另外注意:你原命令里的keystore参数引号没有闭合,这也是导致异常的潜在原因之一,执行前一定要检查命令语法。
内容的提问来源于stack exchange,提问作者Lalmohan yadav
相关产品推荐
相关产品推荐

