TLSを使用してDebianEtchで1つのIPに対して複数のHTTPSサイトを有効にする方法拡張機能
このハウツーはDebian固有ですが、概念が同じであるため、他のディストリビューションに移植できます。TLS拡張を使用するには、apache2にパッチを適用して再コンパイルし、enable-tlsextディレクティブを使用してOpenSSLを再コンパイルする必要があります。TLS拡張は比較的新しいため、一部のインターネットブラウザは機能しないため、apache2サーバーはhttp1.0がhttp1.1サーバーで行うのと同じようにデフォルトのサイトのみを配信します。
このハウツーは、perfect_setup_debian_etchを最後まで実行したことを前提としています。
1。 pbuilderの準備
pbuilderをインストールします。
apt-get update
apt-get install pbuilder fakeroot sudo devscripts apt-utils
次に、11行目の/ etc / pbuilder / pbuilderrcを編集して、最も近いサイトを反映します。これは、aptが依存関係を解決するために使用するサイトです。
MIRRORSITE =http://http.us.debian.org/debian
同じファイルで20行目に移動し、DISTRIBUTION =etch
を設定します。最後に、pbuilderイメージを作成します。
pbuilder create --distributionetch
2。 apache2にパッチを適用して再コンパイルします。
まず、ソースを保存してダウンロードするためのディレクトリを作成する必要があります。
mkdir / usr / src / apache2
cd / usr / src / apache2
apt-get source apache2
このパッチをコピーして/usr/src/apache2/apache2-2.2.3/httpd-2.2.3-sni.patch
に保存しますcat> /usr/src/apache2/apache2-2.2.3/httpd-2.2.3-sni.patch
httpd-2.2.3-sni.patch-Apache 2.2のサーバー名表示のサポート(RFC 4366「TransportLayerSecurity(TLS)Extensions」を参照) )EdelKeyプロジェクト(http://www.edelweb.fr/EdelKey/files/apache-2.2.0+0.9.9+servername.patch)のパッチに基づく必要がありますopenssl-SNAP-20060330 / openssl-0.9.8 -stable-SNAP-20070813以降が正しく機能します(ftp://ftp.openssl.org/snapshot/)。 0.9.8ブランチは、コンパイル時にTLS拡張サポート用に明示的に構成する必要があります( "./ configenable-tlsext")。インデックス:httpd-2.2.x / modules / ssl / ssl_engine_init.c ===================================================================--- httpd-2.2.x / modules / ssl / ssl_engine_init.c(リビジョン423224)+++ httpd-2.2.x / modules / ssl / ssl_engine_init.c(作業コピー)@@ -156,6 +156,87 @@ return OK; } +#ifndef OPENSSL_NO_TLSEXT + static int set_ssl_vhost(void * servername、conn_rec * c、server_rec * s)+ {+ SSLSrvConfigRec * sc; + SSL * ssl; + BOOL found =FALSE; + apr_array_header_t * names; + int i; + + /*ServerNameを確認します*/+ if(!strcasecmp(servername、s-> server_hostname))+ found =TRUE; ++ / *まだ一致していない場合は、ServerAliasエントリを確認します* / + if(!found){+ names =s-> names; + if(names){+ char ** name =(char **)names-> elts; + for(i =0; i |
ctrl+dを使用して終了します
cd apache2-2.2.3 /
バージョンを変更します。
cd debian /
そして、1行目から5行目を次のように変更します。
ソースパッケージを再コンパイルします。
cd ../..
pbuilderを使用してapache2をコンパイルします。
お気に入りのエディタで/etc/apt/sources.listを編集し、配布にsidを使用して新しい行を追加します
apt-get update
ファイル/usr/src/openssl/openssl-0.9.8g/debian/rulesを編集し、22行目にenable-tlsextを追加して、次のようにします。
cd openssl-0.9.8g / debian /
1〜5行目のバージョンを次のように変更します。
ソースパッケージを再コンパイルします。
cd ../..
OpenSSLをpbuilderでコンパイルします。
新しくビルドされたパッケージをインストールします。
cd /var/cache/pbuilder/result
このコマンドを実行して、依存関係を修正します。
/home/admispconfig/ispconfig/lib/classes/ispconfig_isp_web.lib.phpを編集して、以下を検索します。
次のようにコメントアウトします:
同じファイルでもう一度検索し、コメントアウトします。
RFC4366に準拠していないブラウザを使用しているかどうかをユーザーが確認できるデフォルトの安全なサイトを作成します。
mkdir / var / www / sharedip / ssl
必ず自分のパスワードを入力してください。
/etc/apache2/apache2.confを編集し、これを上に配置します。/etc/apache2/vhosts/Vhosts_ispconfig.confを含めます
SSLを有効にして複数のサイトを作成することをテストします。
http://edseek.com/~jasonb/articles/pbuilder_backports/index.html
patch –p1
dch –i
apache2(2.2.3-4a + etch)安定; urgency =low
*有効なTLS拡張
-JohnDoe
dpkg-source –b apache2-2.2.3 / apache2_2.2.3.orig.tar.gz pbuilder build apache2_2.2.3-4a + etch.dsc
3。 OpenSSLのコンパイル-0.9.8g
deb-src http://ftp.debian.org/debian/ sid main
mkdir / usr / src / openssl
cd / usr / src / openssl /
apt-get source openssl
CONFARGS =--prefix =/ usr --openssldir =/ usr / lib / ssl no-idea no-mdc2 no-rc5 zlib enable-tlsext
dch -i
openssl(0.9.8g-1)不安定; urgency =low
*有効なTLS拡張
-JohnDoe
dpkg-source –b openssl-0.9.8g / openssl_0.9.8g.orig.tar.gz pbuilderビルドopenssl_0.9.8g-1.dsc
dpkg –i apache2_2.2.3-4a + etch_all.deb
dpkg –i apache2.2-common_2.2.3-4a + etch_i386.deb
dpkg –i apache2-mpm-prefork_2.2.3-4a + etch_i386.deb
dpkg –i libssl0.9.8_0.9.8g-1_i386.deb
dpkg –i openssl_0.9.8g-1_i386.deb apt-get install –f
4。 1つのIPアドレスで複数の安全なWebサイトを許可するようにISPConfigを構成します
/////////////////////////////// /////////////////////// // SSL Cert auf derIPExistiertのオブジェクトを確認します/////////////// /////////////////////////////////////// $ ssl_count =$ go_api-> db-> queryOneRecord ("SELECT count(doc_id)as ssl_co if($ ssl_count [" ssl_count "]> 1){// Es presentiert bereits ein SSL Web mit dieser IP $ status =" NOTIFY ";$errorMessage。=$go_api-> lng( "error_web_ssl_exist"); $ go_api-> db-> query( "UPDATE isp_isp_web set web_ssl =0 where doc_id =}
/////////////////////////////// /////////////////////// // SSL Cert auf derIPExistiertのオブジェクトを確認します/////////////// /////////////////////////////////////// // $ ssl_count =$ go_api-> db-> queryOneRecord( "SELECT count(doc_id)as ssl_co // if($ ssl_count [" ssl_count "]> 1){// // Es presentiert bereits ein SSL Web mit dieser IP // $ status =" NOTIFY "; // $errorMessage。=$go_api-> lng( "error_web_ssl_exist"); // $ go_api-> db-> query( "UPDATE isp_isp_web set web_ssl =0 where doc_id =//}
cd / var / www / sharedip / ssl
openssl genrsa -des3 -passout pass:yourpassword -out 192.168.1.2.key2 1024
openssl req- new -passin pass:yourpassword -passout pass:yourpassword -key 192.168.1.2.key2 -out 192.168.1.2.csr -days 365
openssl req -x509 -passin pass:yourpassword -passout pass:yourpassword-key192.168。 1.2.key2 -in 192.168.1.2.csr -out 192.168.1.2.crt -days 365
openssl rsa -passin pass:yourpassword -in 192.168.1.2.key2 -out 192.168.1.2.key
chmod 400 192.168.1.2.key
また、一般名にはアスタリスクの「*」を使用します。
NameVirtualHost 192.168.1.2:443
サイトを正しく表示するには、RFC 4366準拠のブラウザが必要です。
ブラウザをテストするには、https://dave.sni.velox.chにアクセスしてください。 /そしてブラウザが機能するかどうかを確認します。リンク:
https://dave.sni.velox.ch/
http://www.edelweb.fr/EdelKey/