GNU/Linux >> Belajar Linux >  >> Panels >> Panels

Cara Mengaktifkan Beberapa Situs HTTPS Untuk Satu IP Di Debian Etch Menggunakan Ekstensi TLS

Cara Mengaktifkan Beberapa Situs HTTPS Untuk Satu IP Di Debian Etch Menggunakan TLS Ekstensi

Cara ini khusus untuk Debian tetapi dapat di-porting ke distribusi lain karena konsepnya sama. Untuk menggunakan Ekstensi TLS, kita harus menambal dan mengkompilasi ulang apache2 dan mengkompilasi ulang OpenSSL dengan direktif enable-tlsext. Karena Ekstensi TLS relatif baru , beberapa browser internet tidak akan berfungsi sehingga server apache2 hanya akan mengirimkan situs default seperti yang dilakukan http 1.0 pada server http 1.1.

Cara ini mengasumsikan Anda telah mengikuti perfect_setup_debian_etch hingga selesai.

1. Mempersiapkan pbuilder

Instal pbuilder.

apt-get update
apt-get install pbuilder fakeroot Sudo devscripts apt-utils

Selanjutnya edit /etc/pbuilder/pbuilderrc pada baris 11 untuk mencerminkan situs terdekat Anda. Ini adalah situs yang akan digunakan untuk menyelesaikan ketergantungan.

MIRRORSITE=http://http.us.debian.org/debian

Dalam file yang sama pergi ke baris 20 dan atur DISTRIBUTION=etch

Terakhir, buat gambar pbuilder Anda.

pbuilder buat --disttribution etch

2. Menambal dan mengkompilasi ulang apache2.

Pertama kita harus membuat direktori untuk menyimpan sumber dan mengunduhnya.

mkdir /usr/src/apache2
cd /usr/src/apache2
apt-get source apache2

Salin dan simpan patch ini ke /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 - dukungan indikasi nama server untuk Apache 2.2(lihat RFC 4366, "Ekstensi Transport Layer Security (TLS)" ) berdasarkan tambalan dari proyek EdelKey (http://www.edelweb.fr/EdelKey/files/Apache-2.2.0+0.9.9+servername.patch)Membutuhkan openssl-SNAP-20060330 / openssl-0.9.8 -stable-SNAP-20070813 atau yang lebih baruuntuk bekerja dengan baik (ftp://ftp.openssl.org/snapshot/). Cabang 0.9.8 harus dikonfigurasi secara eksplisit untuk dukungan ekstensi TLS pada waktu kompilasi ("./config enable-tlsext"). Indeks:httpd-2.2.x/modules/ssl/ssl_engine_init.c===================================================================---- httpd-2.2.x/modules/ssl/ssl_engine_init.c (revisi 423224)+++ httpd-2.2.x/modules/ssl/ssl_engine_init.c (copy kerja)@@ -156,6 +156,87 @@ kembali OK; } +#ifndef OPENSSL_NO_TLSEXT+static int set_ssl_vhost(void *servername, conn_rec *c, server_rec *s) +{+ SSLSrvConfigRec *sc;+ SSL *ssl;+ BOOL ditemukan =FALSE;+ apr_array_header_t *names;+ int *names;+ + /* centang ServerName */+ if (!strcasecmp(servername, s->server_hostname))+ found =TRUE;++ /* jika belum cocok, periksa entri ServerAlias ​​*/+ if (!found) {+ names =s->nama;+ if (nama) {+ char **name =(char **) nama->elts;+ for (i =0; i nelts; ++i) {+ if(! name[i]) continue;+ if (!strcasecmp(servername, name[i])) {+ found =TRUE;+ break;+ }+ }+ }+ }++ /* jika masih tidak cocok, periksa entri ServerAlias dengan wildcard */+ if (!found) {+ names =s->wild_names;+ if (names) {+ char **name =(char **) names->elts;+ for (i =0; i nelts; ++i) {+ if(!nama[i .] ]) continue;+ if (!ap_strcasecmp_match(servername, name[i])) {+ ditemukan =TRUE;+ break;+ }+ }+ }+ }++ /* set SSL_CTX (jika cocok) */+ if ( ditemukan) {+ if ((ssl =((SSLConnRec *)myConnConfig(c))->ssl) ==NULL) + return 0;+ if (!(sc =mySrvConfig(s)))+ return 0; + SSL_set_SSL_CTX(ssl,sc->server->ssl_ctx);+ return 1;+ }+ return 0;+}++int ssl_set_vhost_ctx(SSL *ssl, const char *servername) +{+ conn_rec *c;++ if (nama server ==NULL) /* tidak boleh muncul. */+ return 0;++ SSL_set_SSL_CTX(ssl,NULL);++ if (!(c =(conn_rec *)SSL_get_app_data(ssl))) + return 0;++ return ap_vhost_iterate_given_conn(c,set_ssl_vhost,servername);+ }++int ssl_servername_cb(SSL *s, int *al, modssl_ctx_t *mctx)+{+ const char *servername =SSL_get_servername(s,TLSEXT_NAMETYPE_host_name);++ if (namaserver) {+ kembalikan ssl_set_vhost_ctx_SERSL_name_server)?(s,namaserver) :SSL_TLSEXT_ERR_ALERT_FATAL;+ }+ return SSL_TLSEXT_ERR_NOACK;+}+#endif+ /* * Inisialisasi per-modul */@@ -376,6 +457,29 @@ } } +static void ssl_init_server_extensions(server_rec *s,t ,+ apr_pool_t *ptemp,+ modssl_ctx_t *mctx)+{+ /*+ * Konfigurasi dukungan ekstensi TLS+ */++#ifndef OPENSSL_NO_TLSEXT+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s,+ "Mengonfigurasi fasilitas ekstensi TLS");++ jika (!SSL_CTX_set_tlsext_servername_callback(mc tx->ssl_ctx, ssl_servername_cb) ||+ !SSL_CTX_set_tlsext_servername_arg(mctx->ssl_ctx, mctx)) {+ ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, inisial__logsssl_error membuka versi servername_logsssl.", + "Tidak dapat untuk panggilan balik." (APLOG_MARK, APLOG_ERR, s);+ ssl_die();+ }+#endif+}+ static void ssl_init_ctx_protocol(server_rec *s, apr_pool_t *p, apr_pool_t *ptemp,@@ -709,6 +810,8 @@ /* XXX:dukungan proxy? */ ssl_init_ctx_cert_chain(s, p, ptemp, mctx); }++ ssl_init_server_extensions(s, p, ptemp, mctx); } static int ssl_server_import_cert(server_rec *s,@@ -1035,6 +1138,7 @@ } } +#ifdef OPENSSL_NO_TLSEXT /* * Memberikan peringatan ketika lebih dari satu server virtual sadar SSL menggunakan * IP:port yang sama. Ini tidak berhasil karena mod_ssl kemudian akan selalu menggunakan@@ -1079,6 +1183,7 @@ "Init:Anda tidak boleh menggunakan " "host virtual berbasis nama dalam hubungannya dengan SSL!!"); }+#endif } #ifdef SSLC_VERSION_NUMBERIndeks:httpd-2.2.x/modules/ssl/ssl_engine_kernel.c===================================================================--- httpd-2.2.x/modules/ ssl/ssl_engine_kernel.c (revisi 423224)+++ httpd-2.2.x/modules/ssl/ssl_engine_kernel.c (copy pekerjaan)@@ -231,7 +231,20 @@ * yang sedang aktif. */ +#ifndef OPENSSL_NO_TLSEXT /*+ * Kami akan beralih ke virtualhost lain dan ke ssl_ctx+ * jika diubah, kami akan memaksa negosiasi ulang.+ */+ if (r->hostname &&!SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name)) { + SSL_CTX *ctx =SSL_get_SSL_CTX(ssl);+ if (ssl_set_vhost_ctx(ssl,(char *)r->hostname) &&+ ctx !=SSL_get_SSL_CTX(ssl))+ renegosiasi =TRUE;+ }+#endif++ /* * dari SSLCipherSuite * * Kami menyediakan dua opsi di sini:@@ -997,6 +1010,9 @@ SSLDirConfigRec *dc =myDirConfig(r); apr_table_t *env =r->subprocess_env; char *var, *val ="";+#ifndef OPENSSL_NO_TLSEXT+ const char* nama server;+#endif STACK_OF(X509) *peer_certs; SSL *ssl; int i;@@ -1018,6 +1034,12 @@ /* flag HTTPS (=HTTP over SSL) yang selalu ada! */ apr_table_setn(env, "HTTPS", "aktif"); +#ifndef OPENSSL_NO_TLSEXT+ /* menambahkan konten ekstensi SNI TLS (jika disertakan dengan ClientHello) */+ if (namaserver =SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name))+ apr_table_set(env, "TLS_SNI", nama server);+#endif+ /* standar Variabel lingkungan SSL */ if (dc->nOptions &SSL_OPT_STDENVVARS) { for (i =0; ssl_hook_Fixup_vars[i]; i++) {Indeks:httpd-2.2.x/modules/ssl/ssl_toolkit_compat.h===================================================================---- httpd-2.2.x/modules/ssl/ssl_toolkit_compat.h (revisi 423224)+++ httpd-2.2.x/modules/ssl/ssl_toolkit_compat.h (copy pekerjaan )@@ -258,6 +258,12 @@ #define SSL_SESS_CACHE_NO_INTERNAL SSL_SESS_CACHE_NO_INTERNAL_LOOKUP #endif +#ifndef OPENSSL_NO_TLSEXT+#ifndef SSL_CTRL_SET_TLSEXT_HOSTNAME+ *#define OPENSSL_TO_TLSENSSL_TO} /ifendif */#define OPENSSL_TO}> 

Gunakan ctrl+d untuk keluar

cd apache2-2.2.3/
patch –p1

Ubah versinya.

cd debian/
dch –i

Dan ubah baris 1-5 sehingga terlihat seperti ini:

apache2 (2.2.3-4a+etch) stabil; urgensi=rendah
* Ekstensi TLS Diaktifkan
-- John Doe Sel, 5 Nov 2007 06:29:54 -0600

Kompilasi ulang paket sumber.

cd ../..
dpkg-source –b apache2-2.2.3/ apache2_2.2.3.orig.tar.gz

Kompilasi apache2 dengan pbuilder.

pbuilder membangun apache2_2.2.3-4a+etch.dsc

3. Kompilasi OpenSSL-0.9.8g

Edit /etc/apt/sources.list dengan editor favorit Anda dan tambahkan baris baru menggunakan sid untuk distribusi

deb-src http://ftp.debian.org/debian/ sid main

apt-get update
mkdir /usr/src/openssl
cd /usr/src/openssl/
apt-get source openssl

Edit file /usr/src/openssl/openssl-0.9.8g/debian/rules dan tambahkan enable-tlsext pada baris 22 sehingga menjadi seperti ini:

CONFARGS =--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib enable-tlsext 

cd openssl-0.9.8g/debian/
dch -i

Ubah versi pada baris 1-5 sehingga terlihat seperti ini:

openssl (0.9.8g-1) tidak stabil; urgensi=rendah
* Ekstensi TLS Diaktifkan
-- John Doe Sen, 5 Nov 2007 22:40:05 -0600

Kompilasi ulang paket sumber.

cd ../..
dpkg-source –b openssl-0.9.8g/ openssl_0.9.8g.orig.tar.gz

Kompilasi OpenSSL dengan pbuilder.

build pbuilder openssl_0.9.8g-1.dsc

Menginstal paket yang baru dibuat.

cd /var/cache/pbuilder/result
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

Jalankan perintah ini untuk memperbaiki dependensi apa pun.

apt-get install –f

4. Konfigurasikan ISPConfig untuk mengizinkan beberapa situs web aman pada satu alamat IP

Edit /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_web.lib.php dan cari yang berikut ini:

 ///////////////////////////// /////////////////////////////////////////////////////////// ///////////////////////////////////// $ssl_count =$go_api->db->queryOneRecord ("SELECT count(doc_id) as ssl_co if($ssl_count["ssl_count"]> 1) { // Es ada 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 di mana doc_id =}

Beri komentar agar terlihat seperti ini:

 ///////////////////////////// /////////////////////////////////////////////////////////// ///////////////////////////////////// // $ssl_count =$go_api->db->queryOneRecord("SELECT count(doc_id) as ssl_co // if($ssl_count["ssl_count"]> 1) { // // Es ada 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 di mana doc_id =// }

Cari lagi di file yang sama dan beri komentar.

Buat situs aman default yang akan dilihat pengguna jika mereka menggunakan browser yang tidak sesuai dengan RFC 4366.

mkdir /var/www/sharedip/ssl
cd /var/www/sharedip/ssl
openssl genrsa -des3 -passout pass:yourpassword -out 192.168.1.2.key2 1024
openssl req - baru -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 -key 192.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

Pastikan untuk memasukkan sandi Anda sendiri.
Selain itu, saya akan menggunakan tanda "*" untuk nama umum.

Edit /etc/apache2/apache2.conf dan letakkan ini di atas. Sertakan /etc/Apache2/vhosts/Vhosts_ispconfig.conf

NameVirtualHost 192.168.1.2:443 ServerName localhost ServerAdmin [email protected] DocumentRoot /var/www/sharedip SSLEngine on SSLCertificateFile /var/www/sharedip/ssl/192.168.1.2.crt SSLCertificateKeyFile /var/www/sharedip/ssl/192.168.1.2.key

Uji pembuatan beberapa situs dengan SSL diaktifkan.
Anda harus memiliki browser yang sesuai dengan RFC 4366 untuk dapat melihat situs dengan benar.
Untuk menguji browser Anda, buka https://dave.sni.velox.ch /dan periksa apakah browser Anda berfungsi.

http://edseek.com/~jasonb/articles/pbuilder_backports/index.html
https://dave.sni.velox.ch/
http://www.edelweb.fr/EdelKey/


Panels
  1. Debian – Bagaimana Cara Membuat Disk Squeeze Debian Usb Untuk Ppc?

  2. Cara Mengaktifkan/Menonaktifkan Ekstensi PHP Dari cPanel?

  3. Cara mengaktifkan/menonaktifkan ModSecurity untuk domain Anda di cPanel

  1. Apakah Mungkin Menginstal Dua Layanan Untuk Satu Paket Menggunakan Dh_installinit? Bagaimana?

  2. Cara mengaktifkan kompresi gzip untuk situs tertentu

  3. Cara mendengarkan beberapa koneksi tcp menggunakan nc

  1. Cara Mengaktifkan SSH di Debian 9 atau 10

  2. Cara Menjalankan ISPConfig 2 Pada Port 80 Menggunakan Fitur Reverse Proxy Apache (Debian Etch)

  3. cara menginstal gui untuk debian