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
Tomcat SSL:未找到受信任的证书_Tomcat_Ssl_Ssl Certificate_Certificate_Keytool - Fatal编程技术网

Tomcat SSL:未找到受信任的证书

Tomcat SSL:未找到受信任的证书,tomcat,ssl,ssl-certificate,certificate,keytool,Tomcat,Ssl,Ssl Certificate,Certificate,Keytool,我使用keytool创建了一个证书: keytool -genkey -alias tomcat -keyalg RSA 将其导出并导入到我的密钥库: keytool -export -alias tomcat name.crt keytool -import -file name.crt 当我执行keytool-list时,我有两个条目: tomcat, Sept 15, 2010, keyEntry, Certificate fingerprint (MD5): ... mykey, S

我使用keytool创建了一个证书:

keytool -genkey -alias tomcat -keyalg RSA
将其导出并导入到我的密钥库:

keytool -export -alias tomcat name.crt
keytool -import -file name.crt
当我执行keytool-list时,我有两个条目:

tomcat, Sept 15, 2010, keyEntry,
Certificate fingerprint (MD5): ...
mykey, Sept 17, 2010, trustedCertEntry
Certificate fingerprint (MD5):...
请注意,两个条目的指纹相同

我将server.xml配置为指向.keystore文件

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       keystoreFile="${user.home}/.keystore" keystorePass="changeit"
       clientAuth="false" sslProtocol="TLS" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
是否需要进行任何其他配置?

您需要客户端(即浏览器)信任您的服务器证书

为此,您可以在浏览器中将服务器的证书作为受信任的证书导入,该证书仅在您控制浏览器时有效。或者你得到一个可信的权威机构签署的证书,这需要花钱

以不同的名称导出和重新导入没有任何意义

更新:

我想我开始明白你想做什么了。您希望java客户端通过https访问webapp。是吗

在这种情况下,您需要提供一个“信任库”,即包含受信任证书的密钥库。您需要将系统属性javax.net.ssl.trustStore设置为要使用的信任库的名称

您可能还可以使用手工制作的TrustManager。该网站似乎提供了以下信息:


这个简单的例子可能也会有所帮助:

您是否在
-export
-import
之间执行任何操作(为什么要重新导入刚刚导出的内容)?当
keytool
询问“你的名字和姓氏是什么?”时,你是否输入了完整的主机名(事实上这是通用名)?您的应用程序是否正在尝试连接到服务器本身(查看更多堆栈跟踪会很有用)。我重新导入了它,因为我认为它必须是trustedCertEntry。我没有自动取款机。我可以改用我的IP地址吗?我确实将证书导入了我的浏览器。所以我不能使用自签名证书?
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
...
sun.security.validator.ValidatorException: No trusted certificate found