tomcat7-maven-plugin с самозаверяющим сертификатом

Я пытаюсь использовать tomcat7-maven-plugin (версия 2.1) с tomcat 7.0.41 через https (порт 443) с ssl. Я создал самоподписанный сертификат.

сервер.xml

...

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"

ciphers="SSL_RSA_WITH_RC4_128_SHA"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystorePass="xxx" />

...

Однако запуск mvn tomcat7:deploy -X заканчивается ошибкой:

...

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:deploy (default-cli) on project com.systemincloud.service.connector: Cannot invoke Tomcat manager: peer not authenticated -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:deploy (default-cli) on project com.systemincloud.service.connector: Cannot invoke Tomcat manager
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141)
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:68)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:556)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:636)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:477)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:923)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.java:721)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.java:684)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.java:367)
    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85)
    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:81)
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:132)
    ... 22 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Я предполагаю, что это связано с тем, что этот сертификат является самозаверяющим. Я также экспортировал cer: keytool -export -alias tomcat -file tomcat.cer и импортировал его локально, но это не помогло. Не знаю, хорошее ли это направление.

Заранее спасибо за любую подсказку,

Марек


person Marek Jagielski    schedule 20.06.2013    source источник
comment
Я забыл о pom: ‹build›‹plugins›‹plugin›‹groupId›org.apache.tomcat.maven‹/groupId›‹artifactId›tomcat7-maven-plugin‹/artifactId›‹configuration›‹url›${url} ‹/url›‹server›${server}‹/server›‹path›${path}‹/path›‹/configuration›‹/plugin› ‹/plugins› ‹/build›   -  person Marek Jagielski    schedule 20.06.2013
comment
Я решил проблему ssh с запуском maven с помощью аргумента jvm -Djavax.net.ssl.trustStore=certs/sic-integration-connector.truststore. Мне помог этот сайт: доступ .redhat.com/site/documentation/en-US/ Есть ли проблема смешивать .keytore с *.truststore?   -  person Marek Jagielski    schedule 20.06.2013
comment
каково было решение? в моем случае я использую tomcat7-maven-plugin для развертывания моего проекта на сервере tomcat9, работающем по протоколу HTTPS и использующем самозаверяющий сертификат?   -  person Jay Rajput    schedule 21.02.2018
comment
@JayRajput моя проблема заключалась только в том, что когда я запускал mvn tomcat7:deploy, использующий соединение с приложением менеджера tomcat, он просто не распознавал мой самоподписанный сертификат. Достаточно было установить хранилище доверия с моим сертификатом.   -  person Marek Jagielski    schedule 22.02.2018


Ответы (1)


Он довольно старый, но, как сказано в комментарии, я решил его, запустив:

mvn tomcat7:deploy -Djavax.net.ssl.trustStore=certs/sic-integration-connector.truststore

с указанием на хранилище доверия.

person Marek Jagielski    schedule 22.02.2018
comment
Я использовал отличный keystore-explorer.org, чтобы создать пустое хранилище ключей jks и импортировать в него самозаверяющий ssl-сертификат сайта. с помощью пункта меню «Проверить SSL». Я знаю, что это можно сделать с помощью keytool и openssl, но этот графический интерфейс сэкономил мне несколько минут. - person andrej; 18.02.2020