我正在实施https项目。所以我只是尝试使用tomcat进行ssl连接 我使用以下站点中的以下命令创建了密钥和证书。
http://mircwiki.rsna.org/index.php?title=Configuring_Tomcat_to_Support_SSL
genrsa –des3 –out tomcatkey.pem 2048
req –new –x509 –key tomcatkey.pem –out tomcatcert.pem –days 1095 -config "c:/openssl/tomcatkey.pem"
所以我从openssl命令获得了证书和密钥。(我用密钥作为“pratap”)
我将这两个文件放在tomcat文件夹中。
我更改了连接器元素8443
<Connector
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="c:/tomcat7/tomcatcert.pem"
SSLCertificateKeyFile="c:/tomcat7/tomcatkey.pem"
clientAuth="optional" SSLProtocol="TLSv1" SSLPassword="pratap" />
当我运行https://localhost:8443
时,它运行正常。
现在在eclipse中我创建了这个服务器并尝试从eclipse运行
但它显示以下错误。
java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
我没有在任何地方使用keystore命令。
任何人都可以对此有所了解......谢谢你......答案 0 :(得分:2)
您应该阅读http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html#Configuration。
BTW:“Keystore被篡改,或密码不正确” - 此错误表示您的密钥库崩溃或您使用了错误的密码。如果使用selfsigned cert remeber来创建信任库。答案 1 :(得分:1)
您需要将密钥库密码传递到连接器配置中。这是一个例子:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystorePass="qwerty"
clientAuth="false" sslProtocol="TLS" />
如果您想使用另一个密钥库,则需要创建一个:
keytool -genkey -alias tomcat -keyalg RSA -keystore /home/user/.keystore2
并在您的配置中使用它:
<Connector
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore2" keystorePass="qwerty"
clientAuth="false" sslProtocol="TLS"/>