<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<!-- =============================================================== -->
<!-- Configure SSL for the Jetty Server                              -->
<!-- this configuration file should be used in combination with      -->
<!-- other configuration files.  e.g.                                -->
<!--    java -jar start.jar etc/jetty-ssl.xml                        -->
<!--                                                                 -->
<!--  alternately, add to the start.ini for easier usage             -->
<!-- =============================================================== -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">

  <!-- if NIO is not available, use org.eclipse.jetty.server.ssl.SslSocketConnector -->

  <Call name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.exssl.EnhancedSslSelectChannelConnector">
        <Set name="Port">8443</Set>
        <Set name="maxIdleTime">30000</Set>
        <Set name="Acceptors">2</Set>
        <Set name="AcceptQueueSize">100</Set>
        <Set name="Keystore"><Property name="jetty.home" default="." />/etc/jetty.keystore</Set>
        <Set name="Password">webtide</Set>
        <Set name="KeyPassword">webtide</Set>
        <Set name="truststore"><Property name="jetty.home" default="." />/etc/jetty.keystore</Set>
        <Set name="trustPassword">webtide</Set>
        <Set name="crlPath"><Property name="jetty.home" default="." />/etc/crlfile.pem</Set>
      </New>
    </Arg>
  </Call>
</Configure>
