2015-05-18 2 views
0

Чтобы включить 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> 

Опять же, выше третий вариант также не работает, пожалуйста, помогите мне решить любого из этих трех методов, которые я использовал. Пожалуйста, предложите способ.

Заранее спасибо.

+0

Что вы пытаетесь достичь? Запустить сервер tomcat в режиме https и развернуть ваше приложение с помощью приложения maven? или запустить встроенный сервер tomcat в https? –

+0

Да, я пытаюсь запустить мое приложение весной через https. Так или иначе, я получил ответ. Спасибо за беспокойство. –

ответ

1

Здравствуйте Nayana_Das,

мне удалось получить его работу, делая это:

pom.xml

<build> 

    <pluginManagement> 

     <plugins> 
      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <url>http://localhost:8080/manager</url> 
        <server>localhost</server> 
        <path>/${project.build.finalName}</path> 
       </configuration> 
      </plugin> 

     </plugins> 

    </pluginManagement> 

    <!-- To use the plugin goals in your POM or parent POM --> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <configuration> 
       <path>/</path> 
       <port>8080</port> 
       <httpsPort>8443</httpsPort> 
       <keystoreFile>${project.build.directory}/tomcat7.keystore</keystoreFile> 
       <keystorePass>tomcat7</keystorePass> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>keytool-maven-plugin</artifactId> 
      <version>1.5</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>generateKeyPair</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <keystore>${project.build.directory}/tomcat7.keystore</keystore> 
       <dname>cn=localhost</dname> 
       <keypass>tomcat7</keypass> 
       <storepass>tomcat7</storepass> 
       <alias>tomca7</alias> 
       <keyalg>RSA</keyalg> 
      </configuration> 
     </plugin> 
    </plugins> 
  1. Выполнить tomcat7: бежать за котом плагин;
  2. открыть и просмотреть https://localhost:8443/yoururl (при наличии ссылки);
  3. он будет жаловаться на проблемы безопасности, просто продолжить;
+0

Большое вам спасибо, это тоже сработало. –

0

Поскольку включение HTTPS через плагин maven tomcat не сработало для меня, я пошел на другой метод, поэтому, когда я пытаюсь использовать сервер причала, для развертывания моего приложения он работал. И кредит относится к этому site. Это дает очень простой способ настроить плагин Maven Jetty для связи SSL.

Благодаря Hinotori для правильного ответа на включение HTTPS с использованием maven tomcat7.

Смежные вопросы