配置wildfly时无法在密钥库中找到密钥

时间:2016-01-14 15:17:24

标签: jboss wildfly wildfly-8 keytool

我们有几个.cer个文件,并使用keytool命令导入密钥库。现在我们使用该密钥库配置Wildfly 8.x SSL。什么时候开始,我们得到以下错误:

 22:38:56,992 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.server.controller.management.security_realm.UndertowRealm.key-manager: org.jboss.msc.service.StartException in service jboss.server.controller.management.security_realm.UndertowRealm.key-manager: WFLYDM0083: The KeyStore /home/demo/mykeystore.jks does not contain any keys.
    at org.jboss.as.domain.management.security.FileKeystore.assertContainsKey(FileKeystore.java:169)
    at org.jboss.as.domain.management.security.FileKeystore.load(FileKeystore.java:120)
    at org.jboss.as.domain.management.security.FileKeyManagerService.start(FileKeyManagerService.java:145)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您已从CA签署证书,则无法使用keytool将私钥导入密钥库。您需要使用PKCS12格式的openssl导入private.key。然后使用keytool生成密钥库。

假设您有以下可用文件

  • 私有key.pem
  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • YOUR_DOMAIN_com.crt或STAR_YOUR_DOMAIN_com.crt(来自CA的签名证书)

步骤:

$cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > ssl-bundle.crt

$openssl pkcs12 -export -chain -in STAR_YOUR_DOMAIN_com.crt -inkey 
 private-key.pem -out keystore.p12 -name YOURDOMAIN -CAfile ssl-bundle.crt

现在您可以使用keytool导入

$keytool -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -alias YOURDOMAIN

答案 1 :(得分:0)

请阅读Wildfly-8 SSL setup guide的链接。 StackOverflow上已经询问过A similar question,也许这也可以指导你。最后,两个非现场链接herehere可能会对此问题有所了解。

您没有包含您的配置(相关部分)以及您采取了哪些步骤,因此除了我在评论中所说的内容之外,很难说出任何其他内容。

基本上你应该做什么:

  • 生成密钥。使用keytool,OpenSSL,....使用keytool的示例: $ keytool -genkey -alias foo -keyalg RSA -keystore foo.keystore -validity 10950

  • 配置WildFly。基于上一个的示例:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
  <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"  redirect-port="443" />

  <connector name="https" scheme="https" protocol="HTTP/1.1" socket-binding="https" enable-lookups="false" secure="true">
    <ssl name="foo-ssl" password="secret" protocol="TLSv1" key-alias="foo" certificate-key-file="../standalone/configuration/foo.keystore" />
  </connector>
  ...
</subsystem>

第一步中生成的密钥应该转到certificate-key-file="<path>"配置的目录。