Alibaba Cloud SSL証明書サービスを使用すると、SSL証明書をダウンロードしてJettyサーバーにインストールし、JettyサーバーでHTTPSを有効にすることができます。 このトピックでは、SSL証明書のインストール方法について説明します。

  1. Jettyサーバーのバージョンを確認してください。 Jetty 9.2.22以降を使用することを推奨します。
  2. Alibaba CloudからTomcat形式の証明書をダウンロードします。 CSRファイルを手動で生成する場合は、次のコマンドを実行してPFX証明書キーペアファイルを生成します。
    openssl pkcs12 -export -out 214362464370691.pfx -inkey 214362464370691.key -in 214362464370691.pem
  3. 次のコマンドを実行して、証明書キーペアファイルの形式をPFXからJKSに変換します。
    Windowsシステムでは、% JAVA_HOME %/jdk/binディレクトリでコマンドを実行します。
    keytool -importkeystore -srckeystoreキーペアファイル。pfx -destkeystore証明書名。jks -srcstoretype PKCS12 -deststoretype JKS
    Enterキーを押し、JKS証明書のパスワードを2回入力してから、PFX証明書のパスワードを1回入力します。 入力したパスワードは、pfx-password.txtファイルに記録する必要があります。 JKS証明書のパスワードは、PFX証明書のパスワードと同じである必要があります。 そうしないと、Jettyサーバーの起動に失敗する可能性があります。 コマンドライン実行
  4. JettyサーバーのSSLを設定します。
    1. HTTP経由でJettyサーバーにアクセスできることを確認してください。 アクセスが正常かどうかを確認する
    2. 証明書をコピーします。 Jettyサーバーディレクトリのetcディレクトリに移動し、JKS証明書を格納するディレクトリを作成してから、JKS証明書を新しいディレクトリにコピーします。
      # pwd
      /opt/jetty9222/etc
      # mkdir cert
      # cd cert /
      # cp。./../../keys/jetty.jks.
      # ls
      jetty.jks
      コマンドライン
    3. jettyサーバーディレクトリのetcディレクトリにあるJetty-ssl.xmlファイルを編集し、証明書関連のパラメーターを設定します。 設定したパスワードは、pfx-password.txtファイルに記録する必要があります。 jetty-ssl.xmlファイル
      <?xml version="1.0"?>
      <Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
        <Set name="KeyStorePath"><プロパティ名="jetty.base" default="" 。/>/<プロパティ名="jetty.keystore" default="etc/cert/jetty.jks"/></Set>
        <Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="214362464370691"/></Set>
        <Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="214362464370691"/></Set>
        <Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/cert/jetty.jks"/></Set>
        <Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="214362464370691"/></Set>
        <Set name="EndpointIdentificationAlgorithm"></Set>
        <Set name="NeedClientAuth"><Property name="jetty.ssl.needClientAuth" default="false"/></Set>
        <Set name="WantClientAuth"><Property name="jetty.ssl.wantClientAuth" default="false"/></Set>
        <Set name="ExcludeCipherSuites">
          <Array type="String">
            <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
            <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
            <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
            <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
            <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
            <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
            <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
          </Array>
        </Set>
        <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>
      </設定>
    4. jettyサーバーディレクトリのetcディレクトリにあるJetty-https.xmlファイルを編集し、HTTPSサービスのポート443を設定します。 jetty-https.xmlファイル
      <?xml version="1.0"?>
        <Call id="httpsConnector" name="addConnector">
          <Arg>
            <New class="org.eclipse.jetty.server.ServerConnector">
              <Arg name="server"><Ref refid="Server" /></Arg>
              <Arg name="acceptors" type="int"><Property name="ssl.acceptors" default="-1"/></Arg>
              <Arg name="selectors" type="int"><Property name="ssl.selectors" default="-1"/></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="https.port" default="443" /></Set>
              <Set name="idleTimeout"><Property name="https.timeout" default="30000"/></Set>
              <Set name="soLingerTime"><Property name="https.soLingerTime" default="-1"/></Set>
              <Set name="acceptorPriorityDelta"><Property name="ssl.acceptorPriorityDelta" default="0"/></Set>
              <Set name="selectorPriorityDelta"><Property name="ssl.selectorPriorityDelta" default="0"/></Set>
              <Set name="acceptQueueSize"><Property name="https.acceptQueueSize" default="0"/></Set>
            </New>
          </Arg>
        </Call>
      </Configure>
    5. Jetty サーバーディレクトリで start.ini ファイルを編集し、必要に応じてポート番号を変更した後、Jetty サーバーディレクトリでjetty-https.xmljetty-ssl.xmlをサーバ起動時に実行します。
      jetty.port=80
      jetty.dump.stop=
      etc/jetty-ssl.xml
      etc/jetty-https.xml
    6. Jettyサーバーを再起動し、HTTPSでアクセスできるかどうかを確認します。 結果の検証