当前位置: 首页 > 知识库问答 >
问题:

如何解决错误:无法加载密钥库类型[PKCS12]

劳鹏云
2023-03-14

我想在Spring Boot中的安全endpoint上设计https的使用我生成PKCS12格式的证书并将生成的证书放在资源文件夹下当我运行gradle build命令时,我可能会出现以下错误

2020-12-15 22:03:11.093  INFO 14592 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@60c8a093, org.springframework.security.web.context.SecurityContextPersistenceFilter@2f2bff16, org.springframework.security.web.header.HeaderWriterFilter@599e4d41, org.springframework.security.web.csrf.CsrfFilter@36681447, org.springframework.security.web.authentication.logout.LogoutFilter@7efb53af, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@333c8791, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@588f63c, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@44cffc25, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@1457fde, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@fc807c1, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7ecec90d, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2a369e14, org.springframework.security.web.session.SessionManagementFilter@10f7c76, org.springframework.security.web.access.ExceptionTranslationFilter@70887727, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@237f7970]
2020-12-15 22:03:11.388 ERROR 14592 --- [           main] org.apache.tomcat.util.net.SSLUtilBase   : Failed to load keystore type [PKCS12 ] with path [file:/C:/Users/stein.PC01/Development/Tutorial/BasicAutentication/build/resources/main/certificate.p12%20] due to [PKCS12  not found]

java.security.KeyStoreException: PKCS12  not found
        at java.base/java.security.KeyStore.getInstance(KeyStore.java:871) ~[na:na]
        at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:184) ~[tomcat-embed-core-9.0.35.jar:9.0.35]

proerty文件如下所示

server.ssl.key-store-type=PKCS12 
server.ssl.key-store=classpath:certificate.p12 
server.ssl.key-store-password=XXXXXXX

程序

package com.laurentiuspilca.ssia;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

}

控制器看起来像这样

package com.laurentiuspilca.ssia.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello!";
    }
}

SSL生成命令是openssl

gradle文件如下所示:

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.4.1'
}

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security:2.3.0.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web:2.3.0.RELEASE'
    testImplementation 'org.springframework.boot:spring-boot-starter-test:2.3.0.RELEASE'
    testImplementation 'org.springframework.security:spring-security-test:5.3.2.RELEASE'
    testImplementation 'io.rest-assured:spring-mock-mvc:4.3.1'
    testImplementation  'io.rest-assured:rest-assured-common:4.3.1'
}

group = 'com.laurentiuspilca'
version = '0.0.1-SNAPSHOT'
description = 'Hello World with user and password'
java.sourceCompatibility = JavaVersion.VERSION_1_8


tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

共有2个答案

公西俊才
2023-03-14

通过删除服务器后面的空格修复了此错误。ssl。密钥存储类型和服务器。ssl。密钥存储区

岳枫
2023-03-14

我不确定,但问题可能在类路径:证书之后为空。p12。错误是资源/主/证书。p12)表示空白字符。你能检查一下有没有空白的?或者资源/主/证书中缺少证书文件。p12?

 类似资料:
  • 升级自制软件时遇到错误 DYLD:库未加载: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib引用自: /usr/local/bin/php原因:未找到图像中止陷阱:6

  • 我试图为某些设备生成密钥时出错。我能够在运行4.4.2的三星Galaxy Note上重现错误。 我创建了一个小应用程序,只能通过从Android开发者页面“生成新私钥”下的https://developer.android.com/training/articles/keystore.html逐行复制代码来生成密钥 错误似乎发生在kpg.generateKeyPair(),在Android Key

  • 三个月前我得到了我应用程序的发布密钥。现在我格式化了我的计算机,当我用我的releasekey签名我的应用程序时,我得到了错误:java.lang.runtimeException:keystore Load:无效的keystore格式。 我应该如何解决这个错误? 该命令是:jarsigner-verbose-keystore“d:\releasekey.keystore”“d:\myapp.ap

  • 任务“:app:packageRelease”的执行失败。 执行com时发生故障。Android建筑格雷德尔。内部的任务。工人$ActionFacade.com。Android石斑鱼类。常见的签字。KeytoolException:无法从存储区“/Users/husseinawaesha/key.jks”读取密钥:密钥库格式无效

  • 问题内容: 对于Java的最终结业,我们在测试中包含“异常”部分,其中包括try,catch和finally调用。当我尝试将示例代码放入Eclipse时,遇到了错误并抛出了新的领域。所有错误都显示“无法解析键入”。 如何解决此问题,以便可以学习/查看代码应该执行的操作? Q4类 Q4Exception类 问题答案: 我认为值得一提的是,在Eclipse中,Ctrl + Shif + O可以为您解决

  • JKS密钥存储使用专有格式。建议使用“keytool-importkeystore-srckeystore-destkeystore-deststoreType PKCS12”迁移到PKCS12这是一种行业标准格式 在生成密钥时,我在android studio 3.4(32位版本)中得到了这种类型的错误,但当我在另一台使用android studio 3.4(64位版本)的笔记本电脑中生成相同的