Чтобы включить HTTPS, я создать самозаверяющий сертификат SSL с использованием Keytool -genkey, затем настроили то же самое в pom.xmlКак запустить приложение Spring от Maven Tomcat7 через HTTPS?
В pom.xml, я использовал следующий код:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- application path always starts with/-->
<path>/</path>
<!-- http port -->
<port>8080</port>
<httpsPort>8443</httpsPort>
<keystoreFile>src/main/tomcatconf/xxx.keystore</keystoreFile>
<keystorePass>xxx123</keystorePass>
<warRunDependencies>
<warRunDependency>
<dependency>
<groupId>a groupId</groupId>
<artifactId>and artifactId</artifactId>
<version>version</version>
<type>war</type>
</dependency>
<contextPath>/</contextPath>
</warRunDependency>
</warRunDependencies>
<enableNaming>true</enableNaming>
<extraDependencies>
<extraDependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</extraDependency>
<extraDependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</extraDependency>
</extraDependencies>
</configuration>
</plugin>
Но это не сработало, тогда я использовал параметр serverXml в pom.xml и добавил файл server.xml в пути webapps.
<?xml version='1.0' encoding='utf-8'?>
<Server port="${shutdown.port}" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener
className="com.springsource.tcserver.serviceability.rmi.JmxSocketListener"
port="${jmx.port}" bind="127.0.0.1" useSSL="false"
passwordFile="${catalina.base}/conf/jmxremote.password" accessFile="${catalina.base}/conf/jmxremote.access"
authenticate="true" />
<Listener
className="com.springsource.tcserver.serviceability.deploy.TcContainerDeployer" />
<Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Executor name="tomcatThreadPool" namePrefix="tomcat-http--"
maxThreads="300" minSpareThreads="50" />
<Connector SSLEnabled="true" acceptCount="100"
connectionTimeout="20000" executor="tomcatThreadPool" keyAlias="tcserver"
keystoreFile="${catalina.base}/conf/xxx.keystore" keystorePass="xxx123"
maxKeepAliveRequests="15" port="${bio-ssl.https.port}"
protocol="org.apache.coyote.http11.Http11Protocol" redirectPort="${bio-ssl.https.port}"
scheme="https" secure="true" />
<Connector port="8080" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
<Host appBase="webapps" autoDeploy="true" deployXML="false"
name="localhost" unpackWARs="true">
<Context docBase="../../webapp" path="/webapp" reloadable="true" />
</Host>
</Engine>
</Service>
Снова второй метод также не работает, так что попробовал еще один, где я пытался использовать Keytool-Maven-плагин для создания хранилища ключей в самом pom.xml.
Для этого я добавил следующий код в pom.xml:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>keytool-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>generate-resources</phase>
<id>clean</id>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<phase>generate-resources</phase>
<id>genkey</id>
<goals>
<goal>genkey</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>${project.build.directory}/tomcat-ssl.keystore</keystore>
<dname>cn=localhost</dname>
<keypass>tomcat-learn</keypass>
<storepass>tomcat-learn</storepass>
<alias>tomcat-learn</alias>
<keyalg>RSA</keyalg>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- application path always starts with/-->
<path>/</path>
<!-- http port -->
<port>8080</port>
<httpsPort>8443</httpsPort>
<keystoreFile>${project.build.directory}/tomcat-ssl.keystore</keystoreFile>
<keystorePass>tomcat-learn</keystorePass>
<warRunDependencies>
<warRunDependency>
<dependency>
<groupId>a groupId</groupId>
<artifactId>and artifactId</artifactId>
<version>version</version>
<type>war</type>
</dependency>
<contextPath>/</contextPath>
</warRunDependency>
</warRunDependencies>
<enableNaming>true</enableNaming>
<extraDependencies>
<extraDependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</extraDependency>
<extraDependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</extraDependency>
</extraDependencies>
</configuration>
</plugin>
Опять же, выше третий вариант также не работает, пожалуйста, помогите мне решить любого из этих трех методов, которые я использовал. Пожалуйста, предложите способ.
Заранее спасибо.
Что вы пытаетесь достичь? Запустить сервер tomcat в режиме https и развернуть ваше приложение с помощью приложения maven? или запустить встроенный сервер tomcat в https? –
Да, я пытаюсь запустить мое приложение весной через https. Так или иначе, я получил ответ. Спасибо за беспокойство. –