簡體   English   中英

Tomcat Godaddy SSL證書私鑰錯誤

[英]Tomcat godaddy ssl certificate private keys error

我已經從godaddy購買了ssl證書,並且在配置它與Tomcat一起運行時遇到了一些麻煩。 特別是我得到以下錯誤消息:

java.security.KeyStoreException: Cannot store non-PrivateKeys

Godaddy提供了3個證書文件,我嘗試將它們添加到密鑰庫中,如下所示:

keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file gd_bundle-g2-g1.crt
keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file gdig2.crt.pem
keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file <random hex string>.crt

我在這里找到的網址http : //www.calamitycoder.com/WebSiteNotes/goDaddySHA2SSL.php

我已經將Tomcat的server.xml配置為:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
       maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
   keystoreFile="${user.home}/tomcat.keystore" keystorePass="password"
   clientAuth="false" sslProtocol="TLS">

`

Tomcat版本是8.5.20。

任何幫助將不勝感激。 不確定這是否是Tomcat版本,因為經過許多小時的搜索后,我並未發現太多有關此錯誤的信息。 謝謝 !

更新:

我刪除了當前鍵:

sudo keytool -delete -alias root -keystore tomcat.keystore
sudo keytool -delete -alias intermed -keystore tomcat.keystore
sudo keytool -delete -alias tomcat -keystore tomcat.keystore

並添加了注釋中建議的鍵:

keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file gd_bundle-g2-g1.crt
keytool -import -alias tomcat -keystore tomcat.keystore -file <random hex string>.crt

但不幸的是發現了同樣的錯誤:

Caused by: java.security.KeyStoreException: Cannot store non-PrivateKeys
    at sun.security.provider.JavaKeyStore.engineSetKeyEntry(JavaKeyStore.java:258)
    at sun.security.provider.JavaKeyStore$JKS.engineSetKeyEntry(JavaKeyStore.java:56)
    at sun.security.provider.KeyStoreDelegator.engineSetKeyEntry(KeyStoreDelegator.java:117)
    at sun.security.provider.JavaKeyStore$DualFormatJKS.engineSetKeyEntry(JavaKeyStore.java:70)
    at java.security.KeyStore.setKeyEntry(KeyStore.java:1140)
    at org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil.java:226)

我將繼續嘗試,任何其他想法都將受到歡迎。 謝謝 !

其他研究:

哥達迪證書

CentOS 7.3.1611

唯一更改-Tomcat 8.5.20從8.5.3升級

conf / server.xml

Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       port="8443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="tomcat.keystore" keystorePass="secret"
       clientAuth="false" ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
       sslProtocol="TLSv1.2"

在Tomcat 8.5.3中工作,但在8.5.20中工作

org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["https-jsse-nio-8443"]
java.lang.IllegalArgumentException: java.security.KeyStoreException: Cannot store non-PrivateKeys
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:85)
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:225)

更改它以直接使用證書文件。 並且還將密鑰文件添加到配置中。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/*.key"
                     certificateFile="conf/<random hex string>.crt"
                     certificateChainFile="conf/gd_bundle-g2-g1.crt"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

從8.5.20開始,我的證書帶有相同的錯誤消息,因此我必須使用

<Connector keyAlias="tomcat" .... >

在連接器中。 在添加別名之前,Tomcat嘗試使用隨附的CA證書失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM