Me gustaría usar ssl /https como se describe en

http://docs.codehaus.org/display/JETTY/How+para+configuración+SSL

el uso de jetty-maven-plugin, pero no sé cómo configurar el plugin. Cualquier sugerencia, por ejemplo, tutorial, tutorial ?

También, me pregunto cómo llevar a cabo el Paso 3b de la mencionada tutorial, donde la manipulación del servidor jetty es necesario (java -classpath $JETTY_HOME/lib/jetty-util-6.1-SNAPSHOT.jar:$JETTY_HOME/lib/jetty-6.1-SNAPSHOT.jar org.mortbay.jetty.security.PKCS12Import jetty.pkcs12 keystore).

Aquí es el único de trabajo, claro el paso a paso que he encontrado para Jetty 9: juplo.de/configure-https-for-jetty-maven-plugin-9-0-x/…

OriginalEl autor Ta Sas | 2010-09-25

3 Comentarios

  1. 24

    Puede utilizar Maven para crear un certificado de desarrollo y utilizar al iniciar Jetty. En primer lugar, configure el keytool-maven-plugin para crear un certificado de desarrollo:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>keytool-maven-plugin</artifactId>
      <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}/jetty-ssl.keystore</keystore>
        <dname>cn=my.hostname.tld</dname><!-- put your CN here-->
        <keypass>jetty6</keypass>
        <storepass>jetty6</storepass>
        <alias>jetty6</alias>
        <keyalg>RSA</keyalg>
      </configuration>
    </plugin>

    Cambiar la CN como usted desea. A continuación, configure el maven-jetty-plugin para utilizar el certificado de desarrollo:

    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
      <version>6.1.10</version>
      <configuration>
        <contextPath>/context</contextPath>
        <scanIntervalSeconds>5</scanIntervalSeconds>
        <connectors>
          <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
            <port>8080</port>
            <maxIdleTime>60000</maxIdleTime>
          </connector>
          <connector implementation="org.mortbay.jetty.security.SslSocketConnector">
            <port>8443</port>
            <maxIdleTime>60000</maxIdleTime>
            <keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
            <password>jetty6</password>
            <keyPassword>jetty6</keyPassword>
          </connector>
        </connectors>
      </configuration>
    </plugin>

    Ejecutar mvn jetty:run y abrir https://localhost:8443/context.

    Pascal, que están un poco de una maravilla … de nuevo gracias mucho!
    Eres bienvenido. Me alegro de que te gustó esta respuesta.
    +1 Excelente respuesta! Diría usted que los Jetty configuraciones también se pueden utilizar con la carga plugin con Embarcadero?
    ¿Crees que podría ilustrar lo anterior con las últimas versiones de los keytool-maven-plugin y la versión de Eclipse de la jetty-maven-plugin? Ambos tienen cambios significativos en comparación con el tiempo esta pregunta.
    He abierto un nuevo ASÍ que aquí: stackoverflow.com/questions/21832716/…. Muchas gracias de antemano!

    OriginalEl autor Pascal Thivent

  2. 10

    En caso de que usted está recibiendo este error utilizando Pascal solución:-

    Could not find goal 'genkey' in plugin org.codehaus.mojo:keytool-maven-plugin:1.3
    1. El uso de ‘generateKeyPair’ como el objetivo. (genKey está en desuso creo. )
    2. Agregar la versión del plugin.

    El plugin definición debe verse como :-

           <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>keytool-maven-plugin</artifactId>
                <version>1.3</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}/jetty-ssl.keystore</keystore>
                    <dname>cn=my.hostname.tld</dname><!-- put your CN here -->
                    <keypass>jetty6</keypass>
                    <storepass>jetty6</storepass>
                    <alias>jetty6</alias>
                    <keyalg>RSA</keyalg>
                </configuration>
            </plugin>

    OriginalEl autor Kumar Sambhav

  3. 3

    En caso de que quiera hacer uso de Muelle 9, nota que desde el embarcadero-9.0 no es posible configurar un conector https directamente en el pom.xml: necesita usar jetty xml de los archivos de configuración para hacerlo.[1].

    Aquí está un ejemplo:

    pom.xml

    <properties>
    <jetty-version>9.1.2.v20140210</jetty-version>
    </properties>
    ...
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${jetty-version}</version>
    </dependency>
    ...
          <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>keytool-maven-plugin</artifactId>
                <version>1.3</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}/jetty-ssl.keystore</keystore>
                    <dname>cn=127.0.0.1</dname><!-- put your CN here -->
                    <keypass>dypBdX1NB3gXA0DXCy9nfyJ4jqUDlaydgbo9OU12g</keypass>
                    <storepass>dypBdX1NB3gXA0DXCy9nfyJ4jqUDlaydgbo9OU12g</storepass>
                    <alias>jetty</alias>
                    <keyalg>RSA</keyalg>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>${jetty-version}</version>
                <configuration>
                    <jettyXml>src/main/resources/jetty.xml,src/main/resources/jetty-ssl.xml,src/main/resources/jetty-https.xml</jettyXml>
                </configuration>
            </plugin>    

    jetty-https.xml

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
      <Call id="httpsConnector" name="addConnector">
        <Arg>
          <New class="org.eclipse.jetty.server.ServerConnector">
            <Arg name="server"><Ref refid="Server" /></Arg>
            <Arg name="factories">
              <Array type="org.eclipse.jetty.server.ConnectionFactory">
                <Item>
                  <New class="org.eclipse.jetty.server.SslConnectionFactory">
                    <Arg name="next">http/1.1</Arg>
                    <Arg name="sslContextFactory"><Ref refid="sslContextFactory"/></Arg>
                  </New>
                </Item>
                <Item>
                  <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                    <Arg name="config"><Ref refid="sslHttpConfig"/></Arg>
                  </New>
                </Item>
              </Array>
            </Arg>
            <Set name="host"><Property name="jetty.host" /></Set>
            <Set name="port"><Property name="jetty.https.port" default="8443" /></Set>
            <Set name="idleTimeout">30000</Set>
          </New>
        </Arg>
      </Call>
    </Configure>

    jetty-ssl.xml

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
    
    <!-- ============================================================= -->
    <!-- Configure a TLS (SSL) Context Factory                         -->
    <!-- This configuration must be used in conjunction with jetty.xml -->
    <!-- and either jetty-https.xml or jetty-spdy.xml (but not both)   -->
    <!-- ============================================================= -->
    <Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
      <Set name="KeyStorePath"><Property name="jetty.home" default="." />/<Property name="jetty.keystore" default="target/jetty-ssl.keystore"/></Set>
      <Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="dypBdX1NB3gXA0DXCy9nfyJ4jqUDlaydgbo9OU12g"/></Set>
      <Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="dypBdX1NB3gXA0DXCy9nfyJ4jqUDlaydgbo9OU12g"/></Set>
      <Set name="TrustStorePath"><Property name="jetty.home" default="." />/<Property name="jetty.truststore" default="target/jetty-ssl.keystore"/></Set>
      <Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="dypBdX1NB3gXA0DXCy9nfyJ4jqUDlaydgbo9OU12g"/></Set>
      <Set name="EndpointIdentificationAlgorithm"></Set>
      <Set name="ExcludeCipherSuites">
        <Array type="String">
          <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
          <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
        </Array>
      </Set>
    
      <!-- =========================================================== -->
      <!-- Create a TLS specific HttpConfiguration based on the        -->
      <!-- common HttpConfiguration defined in jetty.xml               -->
      <!-- Add a SecureRequestCustomizer to extract certificate and    -->
      <!-- session information                                         -->
      <!-- =========================================================== -->
      <New id="sslHttpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
        <Arg><Ref refid="httpConfig"/></Arg>
        <Call name="addCustomizer">
          <Arg><New class="org.eclipse.jetty.server.SecureRequestCustomizer"/></Arg>
        </Call>
      </New>
    
    </Configure>

    jetty.xml

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
     <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
     <Set name="secureScheme">https</Set>
     <Set name="securePort">
      <Property name="jetty.secure.port" default="8443" />
     </Set>
     </New>
    </Configure>
    Esto se pone muy de cerca, pero me estoy poniendo: [ERROR] 1) No hay aplicación para org.codehaus.mojo.keytool.KeyToolCommandLineBuilder estaba preso. [ERROR] mientras que la localización de org.codehaus.mojo.keytool.DefaultKeyTool – ¿alguna idea?
    Y como de costumbre, responder a mi propia pregunta. keytool-maven-plugin -> la versión 1.5 en lugar de 1.3

    OriginalEl autor user454322

Dejar respuesta

Please enter your comment!
Please enter your name here