在Spring Boot中使用GoDaddy SSL证书

时间:2019-12-19 13:13:08

标签: spring-boot ssl

我知道这可能看起来很熟悉,但是我向所有人保证,我已经检查并重新运行了所有答案,但仍然无法使用有效的GoDaddy SSL证书。 这是我在Spring Boot应用程序中制作和使用密钥库所采取的步骤。 感谢您对此文章的任何建议或评论。

  1. 我已经从GoDaddy帐户下载了与tomcat选项相关的证书包(尚未生成并提交CSR,仅使用了GoDaddy预先生成的证书包)。 该软件包包含以下文件集。

    • gd_bundle-g2-g1.crt(中级证书)
    • [Random_Hex] .crt(根证书)
    • gdig2.crt.pem(公共密钥)
  2. 使用上述文件和keytool,我已经生成了运行以下命令的密钥库

    • keytool -import -trustcacerts -alias intermediate -file gd_bundle-g2-g1.crt -keystore mydomain.jks
    • keytool -import -trustcacerts -alias mydomain.com -file <randomhex>.crt -keystore mydomain.jks
    • keytool -importkeystore -srckeystore mydomain.jks -destkeystore mydomain.p12 -srcstoretype JKS -deststoretype PKCS12 -deststorepass Password -srcalias mydomain.com -destalias mydomain
  3. 将上一步中生成的.p12文件放入我的Spring Boot项目的“ resources”路径中,并按如下所示更新application.properties文件,我希望该项目运行并在HTTPS上公开我的Web应用程序。 / p>

server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:mydomain.p12
server.ssl.key-store-password=Password
server.ssl.key-password=Password
server.ssl.key-alias=mydomain.com
  1. 但是无论我使用哪个配置或多少次重新创建密钥库,我都会遇到以下错误。
  

org.apache.catalina.LifecycleException:协议处理程序启动失败       在org.apache.catalina.connector.Connector.startInternal(Connector.java:1008)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.catalina.core.StandardService.addConnector(StandardService.java:227)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:263)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:195)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:297)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552)〜[spring-context-5.1.9.RELEASE.jar:5.1.9.RELEASE]       在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.SpringApplication.run(SpringApplication.java:312)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在org.springframework.boot.SpringApplication.run(SpringApplication.java:1203)〜[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]       在com.pincha.patient.MyApp.main(MyApp.java:10)〜[classes /:na]   引起原因:java.lang.IllegalArgumentException:jsse.alias_no_key_entry       在org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:585)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.catalina.connector.Connector.startInternal(Connector.java:1005)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       ...省略了14个通用框架   引起原因:java.io.IOException:jsse.alias_no_key_entry       在org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:325)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       在org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97)〜[tomcat-embed-core-9.0.22.jar:9.0.22]       ...省略了20个常见框架

1 个答案:

答案 0 :(得分:1)

@蜘蛛鲍里斯:

这不是密钥库,而是信任库。没有私人的 物质,这只是回到GoDaddy根CA的信任链。 为了将其存储到密钥库中,必须有一个密钥对 包括只有您拥有的私钥和包含 包含由GoDaddyCA签名的服务器域名。这是 CSR是什么-您生成此密钥对,然后要求GoDaddy 签字。 TL; DR:您需要一个密钥对。