Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PKIX路径生成失败,但证书位于cacerts中_Java_Ssl_Https_Cas - Fatal编程技术网

Java PKIX路径生成失败,但证书位于cacerts中

Java PKIX路径生成失败,但证书位于cacerts中,java,ssl,https,cas,Java,Ssl,Https,Cas,我有一个同样被描述的问题。 问题是,我创建了一个证书并将其添加到tomcat的密钥库中,然后将其复制到cacertstruststore。然而,不知何故,我仍然得到这个错误 我所做的: 1) keytool-genkey-alias cas-keyalg RSA-keystore cas.keystore -storepass changeit 2) keytool-exportcert-alias cas-file cas.crt-keystore cas.keystore 步骤2)因为我想将

我有一个同样被描述的问题。 问题是,我创建了一个证书并将其添加到tomcat的密钥库中,然后将其复制到
cacerts
truststore。然而,不知何故,我仍然得到这个错误

我所做的:

1) keytool-genkey-alias cas-keyalg RSA-keystore cas.keystore -storepass changeit

2) keytool-exportcert-alias cas-file cas.crt-keystore cas.keystore

步骤2)因为我想将证书放入tomcat密钥库和
cacerts

3) keytool-import-alias cas-file cas.crt-keystore“C:\Program Files\Java\jdk1.8.0\u 77\jre\lib\security\cacerts“

4) keytool-import-alias cas-file“C:\Program Files\Java\jdk1.8.0_7\jre\bin\cas.crt”-密钥库 “D:\portal\apache-tomcat-8.0.3\conf\portal.keystore”

现在,通过步骤3和步骤4,我在tomcat密钥库和信任库
cacerts
中添加了证书

现在我可以列出我的信任和密钥库了

使用此命令

keytool-list-v-keystore“C:\Program Files\Java\jdk1.8.0\u 77\jre\lib\security\cacerts”-别名cas

。。。我明白了:

Keystore-Kennwort eingeben:
Aliasname: cas
Erstellungsdatum: 09.09.2016
Eintragstyp: trustedCertEntry

Eigentümer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
Aussteller: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
Seriennummer: xxx
Gültig von: Fri Sep 09 10:40:55 CEST 2016 bis: Thu Dec 08 09:40:55 CET 2016
Zertifikat-Fingerprints:
         MD5:  ....
         SHA1: ....
         SHA256: ....
         Signaturalgorithmusname: SHA256withRSA
         Version: 3

Erweiterungen:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [...
]
]
Keystore-Kennwort eingeben:

Keystore-Typ: JKS
Keystore-Provider: SUN

Keystore enthält 1 Eintrag

Aliasname: cas
Erstellungsdatum: 09.09.2016
Eintragstyp: trustedCertEntry

    Eigentümer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
    Aussteller: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
Seriennummer: ...
Gültig von: Fri Sep 09 10:40:55 CEST 2016 bis: Thu Dec 08 09:40:55 CET 2016
Zertifikat-Fingerprints:
         MD5:  ...
         SHA1: ...
         SHA256: ...
         Signaturalgorithmusname: SHA256withRSA
         Version: 3

Erweiterungen:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
]

]
因此:

keytool-list-v-keystore “D:\portal\apache-tomcat-8.0.30\conf\portal.keystore”-别名cas

我明白了:

Keystore-Kennwort eingeben:
Aliasname: cas
Erstellungsdatum: 09.09.2016
Eintragstyp: trustedCertEntry

Eigentümer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
Aussteller: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
Seriennummer: xxx
Gültig von: Fri Sep 09 10:40:55 CEST 2016 bis: Thu Dec 08 09:40:55 CET 2016
Zertifikat-Fingerprints:
         MD5:  ....
         SHA1: ....
         SHA256: ....
         Signaturalgorithmusname: SHA256withRSA
         Version: 3

Erweiterungen:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [...
]
]
Keystore-Kennwort eingeben:

Keystore-Typ: JKS
Keystore-Provider: SUN

Keystore enthält 1 Eintrag

Aliasname: cas
Erstellungsdatum: 09.09.2016
Eintragstyp: trustedCertEntry

    Eigentümer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
    Aussteller: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx
Seriennummer: ...
Gültig von: Fri Sep 09 10:40:55 CEST 2016 bis: Thu Dec 08 09:40:55 CET 2016
Zertifikat-Fingerprints:
         MD5:  ...
         SHA1: ...
         SHA256: ...
         Signaturalgorithmusname: SHA256withRSA
         Version: 3

Erweiterungen:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
]

]
如果不清楚:证书(CA)是相同的

因此,我的印象是,证书现在位于tomcat服务器和信任库
cacerts
的密钥库中。但不知何故,当我在CAS服务器上输入凭据并被重定向(下面是完整的stacktrace)时,仍然会出现此异常:

这些是我的tomcats
server.xml中的连接器:

<Connector port="8743" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" keystoreFile="${catalina.base}/conf/portal.keystore" keystorePass="changeit" 
               secure="true" connectionTimeout="240000" 
               clientAuth="false" sslProtocol="TLS" allowUnsafeLegacyRenegotiation="true" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8309" protocol="AJP/1.3" redirectPort="8743" />

您的
连接器
元素定义了一个密钥库。这是一个寻找私钥及其证书的地方

您的异常与truststore有关,这是一个可以找到或不找到可信CA证书的地方


您需要通过配置或通过
javax.net.ssl.truststore
系统属性来定义Tomcat使用的信任库。

我的问题出乎意料。我有一个Tomcat,它有一个修改过的
setenv.bat
,其中的选项指向密钥库的另一个位置。一般来说,我对Tomcat和应用程序服务器不太了解,所以我无法在早些时候弄清楚这一点

您可以导航到tomcat/bin目录。修改catalina.sh(或catalina.bat,具体取决于您的操作系统)

将以下属性添加到JAVA_选项

JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=$CATALINA_HOME/certificates/truststore.ks -Djavax.net.ssl.trustStorePassword=truststorePassword -server"

我最近不得不自己解决一些信任库/密钥库问题。我发现一个非常有助于轻松查看/修改信任/密钥库的工具是。

如何检查值
javax.net.ssl.trustStore
has您可以将密钥库文件位置更改为在连接器中使用cas.keystore吗?“信任库问题”让我咯咯地笑了起来