6

ポート 443 で SSL 接続を受け入れるようにホーム サーバーを構成しようとしています。

私は www.mydomain.com ドメインを持っています。mod_jk を使用して Apache2 と Tomcat をリンクしました。Web からの https リクエストも受け入れたいと思います。

これは私の構成です:

httpd.conf

<IfModule mod_jk.c>
    JKWorkersFile /etc/apache2/workers.properties
    JkShmFile /var/log/apache2/mod_jk.shm
    JKLogFile /var/log/apache2/mod_jk.log
    JkLogLevel debug
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
</IfModule>


<VirtualHost *:80>
    DocumentRoot "/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyTomcatAppName"
    ServerName www.mydomain.com
    ErrorLog "/private/var/log/apache2/www.mydomain.com-error_log"
    CustomLog "/private/var/log/apache2/www.mydomain.com-access_log" common
    JkMountCopy On
    JkMount /* ajp13
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyTomcatAppName"
    ServerName mydomain.com
    ErrorLog "/private/var/log/apache2/mydomain.com-error_log"
    CustomLog "/private/var/log/apache2/mydomaino.com-access_log" common
    JkMountCopy On
    JkMount /* ajp13
</VirtualHost>

次に、これは私の Worker.properties ファイルです。

worker.list=ajp13

worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009

これは私のserver.xmlです:

    <Host name="localhost"  appBase="/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
      <Context path="" docBase="/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyTomcatAppName" />

この構成では、http:// www.mydomain.com または http:// domain.com にアクセスしたときに MyTomcatAppName を正しくサーフィンします... 私の問題は、https 接続を使用して同じ Web サイトにアクセスすることなので、https:// www .mydomain.com または https:// domain.com. また、Mac Mini Server (Lion osx) に GoDaddy 証明書がインストールされているため、https:// www.mydomain.com (または https:// domain.com) と入力すると、ブラウザーは、 「mydomain.com」の証明書ですが、次のようにも書かれています:

Forbidden

You don't have permission to access / on this server.
Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8r DAV/2 mod_jk/1.2.30 Server at mydomain.com Port 443

これは、仮想ホスト タグで何かを見逃したためだと確信しています....どうすれば修正できますか?

4

2 に答える 2

8

解決策を見つけたので、ApacheとTomcatは正常に機能します...問題を解決するための手順を要約します。

考えてみると、mydomain証明書(GoDaddyによって署名されたもの)が正しくインストールされ、MacサーバーのAppleKeyChain内に保存されています。

  1. KeyChainアプリ(rootを使用)を開き、mydomain証明書ラベルを​​展開して、秘密鍵も表示されるようにします。
  2. 両方をp12拡張子で保存し、.p12から.pemファイルを生成します
  3. 秘密鍵:

    umask 0077
      openssl pkcs12 -in pkfilename.p12 -nocerts -nodes -out filename-key.pem
    umask 0022
    
  4. 証明書:

    openssl pkcs12 -in certfilename.p12 -clcerts -nokeys -out filename-cert.pem
    
  5. / etc /apache2/ディレクトリ内のfilename-key.pemとfilename-cert.pemをコピーします

  6. 上に示したのと同じhttpd.conf構成があることを考えるとVirtualHost、443(httpsポート)接続用にさらに2つ追加する必要があります。
  7. とにかく、保護したいServerNameごとに1つのVirtualHostを追加します。たとえば、mydomain.comの着信接続を保護したいだけです。

    <VirtualHost _default_:443>
        DocumentRoot "/Library/ApacheTomcat/apache-tomcat-6.0.33/webapps/MyServerAppName"
        ServerName mydomain.com
        ErrorLog "/private/var/log/apache2/https_mydomain.com-error_log"
        CustomLog "/private/var/log/apache2/https_mydomain.com-access_log" common
        SSLEngine On
        SSLCertificateFile /etc/apache2/filename-cert.pem
        SSLCertificateKeyFile /etc/apache2/filename-key.pem
        JkMountCopy On
        JkMount /* ajp13
    </VirtualHost>
    
  8. Listen 443httpd.confファイルに追加します。この行Listen 80を、先頭にある行の下に追加します。

これで、http://mydomain.comとhttps://mydomain.comの両方を閲覧できます。エラーが発生した場合は、内のログファイルを読み取ることができます/var/log/apache2/

Brunoユーザーに特に感謝します。秘密鍵と証明書ファイルの作成にどのように役立ちますか(ステップ3と4)。

このガイドラインが、セキュアSSL接続用にmod_jkでApacheとTomcatを構成するのに役立つことを願っています。

于 2011-12-07T07:52:22.743 に答える
3

プレーンHTTPリクエスト用に仮想ホストでmod_jkを構成しました(VirtualHost *:80)。SSL設定を構成Jk*したHTTPS仮想ホスト()でもこれらのオプションを構成する必要があります。VirtualHost *:443

于 2011-12-06T17:01:58.907 に答える