Pertanyaan Apakah buruk untuk mengalihkan http ke https?


Saya baru saja memasang Sertifikat SSL di server saya.

Kemudian mengatur pengalihan untuk semua lalu lintas di domain saya di Port 80 untuk mengalihkannya ke Port 443.

Dengan kata lain, semua saya http://example.com lalu lintas sekarang dialihkan ke yang sesuai https://example.com versi halaman.

Pengalihan dilakukan dalam file Apache Virtual Hosts saya dengan sesuatu seperti ini ...

RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 

Pertanyaan saya adalah, apakah ada kelemahan untuk menggunakan SSL?

Karena ini bukan Pengalihan 301, akankah saya kehilangan tautan jus / peringkat di mesin telusur dengan beralih ke https?

Saya menghargai bantuannya. Saya selalu ingin menyiapkan SSL di server, hanya untuk praktik melakukannya, dan akhirnya saya memutuskan untuk melakukannya malam ini. Sepertinya ini berjalan dengan baik sejauh ini, tetapi saya tidak yakin apakah itu ide yang bagus untuk menggunakan ini di setiap halaman. Situs saya bukan eCommerce dan tidak menangani data sensitif; itu terutama untuk penampilan dan sensasi menginstalnya untuk belajar.


UPDATED MASALAH

Anehnya Bing membuat tangkapan layar ini dari situs saya sekarang karena menggunakan HTTPS di mana-mana ...

enter image description here 


245
2018-01-28 00:12




[WTF - Saya tidak dapat menambahkan jawaban (meskipun sepertinya saya memiliki cukup rep).] Jawaban saya akan (sebagian) menjadi itu TERKADANG ITU BURUK. Pertimbangkan untuk mengirimkan COOKIE atau Kunci API dalam GET melalui HTTP. Jika situs Anda mengalihkan permintaan HTTP ke permintaan HTTPS, panggilan ini akan berfungsi, tetapi COOKIE atau Kunci API akan dikirim secara jelas. Beberapa API mematikan HTTP, pendekatan yang lebih kuat - tidak ada HTTP sama sekali sehingga Anda bahkan tidak dapat menjalankannya kecuali Anda menggunakan HTTPS. Contoh: "Semua permintaan API harus dilakukan melalui HTTPS. Panggilan yang dilakukan melalui HTTP biasa akan gagal" dari stripe.com/docs/api?lang=php#authentication - codingoutloud
@codingoutloud - alternatifnya adalah bahwa semuanya terjadi melalui HTTP tanpa HTTPS sama sekali. Bagaimana itu lebih baik? - Mark Henderson♦
@BenCrowell, itu karena a portal tawanan terlihat sangat banyak seperti sslstrip-pengalihan gaya serangan (mereka berdua membajak permintaan-in-the-middle) jadi HSTS-Perhatikan browser akan memblokir keduanya. - Jeffrey Hantin
Sadarilah bahwa menggunakan https berarti semua yang Anda sertakan juga harus https atau mungkin tidak memuat - misalnya memuat jquery menggunakan src="://example.com/jquery.js" - perhatikan kurangnya http atau https sehingga peramban memuat yang sesuai. Saya mengalami mimpi buruk mencoba untuk mendapatkan beberapa hal yang tertanam Amazon untuk memuat dengan benar sebagai API (dimuat melalui https) menghasilkan tautan http - yang berarti mereka tidak berfungsi dengan baik sampai saya menemukan parameter tidak terdokumentasi untuk beralih tautan https - Basic
Jason; pembaruan Anda harus menjadi pertanyaan baru, mungkin pada Webmasterkarena tidak berhubungan (secara teknis) dengan pertanyaan awal Anda. Tapi mungkin style sheet Anda berasal dari domain yang tidak aman. - Mark Henderson♦


Jawaban:


Itu [R] bendera sendiri adalah a 302 pengarahan ulang (Moved Temporarily). Jika Anda benar-benar ingin orang menggunakan versi HTTPS dari situs Anda (petunjuk: Anda lakukan), maka Anda harus menggunakannya [R=301] untuk pengalihan permanen:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] 

SEBUAH 301 menyimpan semua google-fu Anda dan pagerank yang diperoleh dengan susah payah utuh. Yakinkan mod_rewrite diaktifkan:

a2enmod rewrite

Untuk menjawab pertanyaan tepat Anda:

Apakah buruk untuk mengalihkan http ke https?

Tidak. Ini sangat bagus.


309
2018-01-28 00:27



Terima kasih atas informasinya, bos saya mengatakan kepada saya alasan mengapa ia hanya menjalankan https di halaman tertentu dari situsnya, adalah bahwa ia menggunakan lebih banyak sumber daya server untuk menjalankannya di setiap halaman. Apakah Anda tahu sesuatu tentang itu atau apakah itu benar? - JasonDavis
@jasondavis Hanya jika Anda tidak menghabiskan beberapa menit untuk mengoptimalkannya. - Michael Hampton♦
"Ini menggunakan lebih banyak sumber daya server untuk menjalankannya di setiap halaman." CPU modern memiliki fitur akselerasi enkripsi yang membuat SSL hampir gratis. Jangan khawatir tentang biaya overhead. - Adam Davis
@AdamDavis Algoritma crypto mungkin ringan, tetapi overhead handshake masih ada. Juga, HTTPS mencegah proxy HTTP dari caching konten Anda. Di paling kasus, overhead HTTPS sangat minim dan bermanfaat, tetapi berhati-hatilah dengan terlalu menggeneralisasikan. - 200_success
Ini membunuh caching bersama, yang berguna untuk beberapa pola penggunaan situs, dan sering melindungi sedikit (apakah penting orang-orang dapat mengetahui Anda mengunjungi situs tersebut, tetapi bukan detail dari apa yang Anda lakukan? Itulah satu-satunya situasi di mana SSL berguna). Keuntungan utama SSL pada setiap sumber daya adalah Anda tidak perlu "mengamankan" mis. orang-orang melihat "tentang kami", tetapi Anda tidak dapat tergelincir dan gagal menggunakannya dalam kasus di mana Anda seharusnya. - Jon Hanna


Sementara saya mendukung ide situs SSL saja, saya akan mengatakan satu kelemahan adalah biaya tergantung pada desain situs Anda. Maksudku, misalnya jika Anda melayani banyak gambar individu di img tag, ini dapat menyebabkan situs Anda berjalan jauh lebih lambat. Saya akan menyarankan siapa pun yang menggunakan server SSL saja untuk memastikan mereka bekerja pada yang berikut ini.

  1. Periksa seluruh situs untuk tautan internal dan pastikan semuanya menggunakan HTTPS jika Anda mengkhususkan nama domain Anda sendiri di tautan, sehingga Anda tidak menyebabkan pengalihan sendiri.
  2. Perbarui <meta property="og:url" untuk menggunakan versi https dari domain Anda.
  3. Jika Anda menggunakan <base href= lagi perbarui untuk menggunakan HTTPS.
  4. Memasang Protokol SPDY jika memungkinkan
  5. Pastikan untuk menggunakan Sprite Gambar CSS jika memungkinkan, untuk mengurangi jumlah permintaan.
  6. Perbarui peta situs Anda untuk menunjukkan status https, sehingga laba-laba dari waktu ke waktu mempelajari perubahan ini.
  7. Ubah preferensi Mesin Telusur seperti Alat Webmaster Google untuk memilih HTTPS
  8. Jika memungkinkan, hapus media apa pun yang bersifat statis ke server HTNPS HTTPS.

Jika di atas ditangani, maka saya ragu Anda akan memiliki banyak masalah.


49
2018-01-28 02:08



SPDY adalah saran yang bagus; bahkan tampaknya ada modul menambahkan dukungan SPDY ke Apache 2.x. - Calrion
Menggunakan "//yourserver.com/some-uri" alih-alih "yourserver.com/some-uri"menyelesaikan masalah (1) karena peramban akan memilih skema yang tepat (http atau https) tergantung pada skema yang dimuat laman. - MauganRa
@MauganRa Kecuali, tentu saja, ini adalah tautan dari laman artikel http ke laman masuk https, misalnya. - Mołot
Google melihat URL yang dikunjungi seseorang melalui Referer tajuk. Misalnya situs ini menggunakan jQuery dari Google CDN dan browser saya mengirim permintaan ke Google setiap kali saya memuat ulang situs. Dengan demikian a Referer header juga dikirimkan ke Google yang diatur ke URL situs ini. Jadi Google dapat melacak situs yang saya kunjungi selama waktu alamat IP saya tidak berubah (dan jika saya menggunakan layanan Google selama waktu ini, Google juga dapat menghubungkan informasi ini dengan akun Google saya). - Stephan Kulla
Untuk 1) Saya baru saja melakukan pencarian dan mengganti dalam basis data MySQL saya ke https ... saya menggunakan WordPress sehingga sangat mudah untuk memperbarui ratusan tautan - JasonDavis


Saya sudah mengatur https maka Anda harus menggunakannya di mana saja di situs ini. Anda akan menghindari risiko masalah konten campuran dan jika Anda memiliki alat yang diperlukan, mengapa tidak membuat seluruh situs aman?

Mengenai pengalihan dari http ke https jawabannya tidak sesederhana itu.

Mengarahkan akan membuatnya lebih mudah bagi pengguna Anda, mereka hanya mengetikkan whateversite.com dan dialihkan ke https.

Tapi. Bagaimana jika pengguna terkadang berada di jaringan yang tidak aman (atau dekat Troy Hunt dan Pineapple-nya)? Maka pengguna akan meminta http://whateversite.com karena kebiasaan lama. Itu adalah http. Itu bisa dikompromikan. Pengalihan bisa mengarah ke https://whateversite.com.some.infrastructure.long.strange.url.hacker.org. Untuk pengguna biasa itu akan terlihat cukup sah. Tapi lalu lintas bisa dihadang.

Jadi kami memiliki dua persyaratan yang bersaing di sini: Agar mudah digunakan dan aman. Untungnya, ada obat yang disebut Header HSTS. Dengan itu Anda dapat mengaktifkan redirect. Browser akan pindah ke situs yang aman, tetapi berkat header HSTS juga mengingatnya. Ketika pengguna mengetikkan whateversite.com di jaringan yang tidak aman, browser akan langsung menuju https, tanpa melompati pengalihan melalui http. Kecuali Anda menangani data yang sangat sensitif, saya pikir itu adalah tradeoff yang adil antara keamanan dan kegunaan untuk sebagian besar situs. (Ketika saya baru-baru ini mengatur aplikasi yang menangani rekam medis, saya menggunakan semua https tanpa redirect). Sayangnya Internet Explorer tidak memiliki dukungan untuk HSTS (sumber), jadi jika audiens target Anda kebanyakan menggunakan IE dan datanya sensitif Anda mungkin ingin menonaktifkan pengalihan.

Jadi jika Anda tidak menargetkan pengguna IE, lanjutkan dan gunakan redirect, tetapi aktifkan header HSTS juga.


38
2018-01-28 07:40



Lebih banyak orang perlu memperhatikan hal ini juga. Hal lain adalah bahwa orang menganggap mereka aman karena titik akhir adalah HTTPS, mengabaikan fakta bahwa semua informasi yang dikirim ke halaman dalam GET atau POST dalam teks biasa. - Velox
@Velox - Saya tidak berpikir implikasi dari "orang menganggap mereka aman karena titik akhir adalah HTTPS, mengabaikan fakta bahwa semua informasi yang dikirim ke halaman dalam GETs atau POSTs dalam teks biasa" cukup akurat. Meskipun ada beberapa getchas, GET params kuota tidak berjalan dengan jelas selama transportasi melalui HTTPS. Lihat misalnya: stackoverflow.com/questions/323200/… Payload POST juga dilindungi, sementara juga tidak rentan terhadap pencatatan log dan header rujukan. - codingoutloud
@codingoutloud Itulah poin saya. Lebih dari HTTPS mereka dienkripsi, tetapi dalam permintaan awal ke halaman HTTP mereka tidak. - Velox
@Velox - Jika seluruh situs mengalihkan ke HTTPS, maka tidak mungkin bahwa parameter GET akan dikirim sebelum HTTPS ditendang (dan semuanya akan tetap HTTPS setelah titik tersebut). Masih ada satu permintaan awal di mana cookie akan dikirim, yang dapat diperbaiki dengan HSTS ... dan jendela serangan kecil untuk SSLStrip, yang mungkin bisa dikalahkan oleh JavaScript, tetapi itu adalah perlombaan senjata sendiri. - Brilliand
@Brilliand Fair point, tetapi titik lemah dalam keamanan membuat semuanya lemah. Selalu layak dipertimbangkan. - Velox


Tidak ada yang salah dengan ini, dan sebenarnya itu praktik terbaik (untuk situs itu harus dilayani melalui koneksi aman). Bahkan, apa yang Anda lakukan sangat mirip dengan konfigurasi yang saya gunakan:

<VirtualHost 10.2.3.40:80>
  ServerAdmin me@example.com
  ServerName secure.example.com
  RedirectMatch 301 (.*) https://secure.example.com$1
</VirtualHost>

# Insert 10.2.3.40:443 virtual host here :)

Itu 301 kode status menunjukkan a permanen mengalihkan, menginstruksikan klien yang mampu untuk menggunakan URL aman untuk koneksi masa depan (misalnya memperbarui bookmark).

Jika Anda hanya akan melayani situs melalui TLS / SSL, saya akan merekomendasikan petunjuk lebih lanjut untuk mengaktifkan HTTP Keamanan Transportasi yang Ketat (HSTS) di Anda aman virtual host:

<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=1234; includeSubdomains"
</IfModule>

Header ini menginstruksikan klien yang mampu (kebanyakan dari mereka hari ini, saya percaya) bahwa mereka seharusnya hanya menggunakan HTTPS dengan domain yang disediakan (secure.example.com, dalam hal ini) untuk selanjutnya 1234 detik. Itu ; includeSubdomains porsi adalah pilihan dan menunjukkan bahwa arahan tidak hanya berlaku untuk domain saat ini, tetapi juga di bawahnya (mis. alpha.secure.example.com). Perhatikan bahwa header HSTS adalah hanya diterima oleh browser ketika disajikan melalui koneksi SSL / TLS!

Untuk menguji konfigurasi server Anda terhadap praktik terbaik saat ini, sumber daya gratis yang baik adalah Uji Server SSL Qualys layanan; Saya ingin mencetak setidaknya A- (Anda tidak bisa mendapatkan lebih dari itu dengan Apache 2.2 karena kurangnya dukungan untuk kriptografi kurva elips).


22
2018-01-28 02:20



Saya harus menambahkan, mengirim header Strict-Transport-Security: max-age=0 akan meniadakan direktif sebelumnya; seperti biasa, ini harus dikirim melalui HTTPS untuk diterima, tetapi itu cara yang berguna untuk membatalkan sesuatu jika Anda memutuskan Anda juga perlu menggunakan HTTP di domain. - Calrion


Wow ! redirect HTTP ke HTTPS adalah hal yang sangat bagus dan saya tidak bisa melihat kekurangan untuk itu.

Pastikan klien Anda memiliki CA yang tepat untuk menghindari peringatan yang tidak ramah pengguna tentang sertifikat di browser.

Selain itu, cara Anda mengatur Apache untuk mengalihkan ke HTTPS sepertinya baik-baik saja.


5
2018-01-28 00:35





Apakah buruk untuk mengalihkan http ke https?

Tidak, tidak sama sekali. Sebenarnya, itu hal yang baik untuk dilakukan!

Pada pengalihan:

Itu bisa lebih efisien, oleh sepenuhnya menghilangkan penulisan ulang. Inilah konfigurasi saya pada situasi yang sama ...

<VirtualHost *:80>
  ServerName domainname.com

  <IfModule mod_alias.c>
    Redirect permanent / https://domainname.com/
  </IfModule>
</VirtualHost>

5
2018-01-28 13:45





HTTPS tidak bisa dibilang sangat mudah. Tentu saja, biasanya memaksa HTTPS adalah hal yang baik. Ini mencegah penjahat biasa melakukan sesuatu yang buruk kepada pengguna Anda.

Tapi tolong ingat untuk memeriksa Anda Pengaturan SSL seperti pengaturan SSLCiphers. Nonaktifkan hal-hal seperti RC4 crypto, protokol SSLv2, dan SSLv3. Juga, Anda harus mencari tahu, apakah libari sistem kripto dari sistem Anda mendukung TLS1.2 (yang merupakan hal yang ingin Anda miliki;))

Aktifkan SSL, ini hal yang baik.


4
2018-01-28 07:43



Entropi tidak terbiasa (setidaknya jika Anda membela melawan penyerang berbasis Bumi daripada melakukan voodoo). Entah Anda mulai dengan entropi yang tidak memadai, dan Anda tidak dapat melakukan apa pun yang membutuhkan keacakan, atau Anda mulai dengan entropi yang cukup, dan Anda tetap memiliki entropi yang cukup, tidak peduli seberapa banyak keacakan yang Anda hasilkan. - Gilles
Maaf, apa? Ada sejumlah operasi di Linux yang menuntut entropi kuat yang berasal dari perangkat keras daripada entropi yang mungkin cukup bagus dari PRNG, dan mereka memang dapat memblokir jika kedalaman kolam rendah. Hal ini tentu saja mungkin untuk memulai dengan entropi yang cukup pada sistem Linux, tetapi dengan terlalu sering menggunakan untuk menguras kolam, menyebabkan beberapa operasi untuk memblokir. - MadHatter


Secara pribadi saya semua untuk penggunaan SSL untuk mengamankan koneksi di web, namun saya merasa bahwa semua jawaban lain di sini telah terjawab adalah bahwa tidak setiap perangkat dan perangkat lunak yang mampu koneksi HTTP akan dapat menggunakan SSL, jadi saya akan mempertimbangkan menyediakan beberapa cara bagi pengguna untuk menghindarinya jika tidak didukung untuk mereka. Mungkin juga orang-orang di beberapa Negara tempat teknologi enkripsi ilegal tidak akan diizinkan mengakses situs Anda. Saya akan mempertimbangkan menambahkan halaman arahan yang tidak terenkripsi dengan tautan untuk memaksa versi situs yang tidak aman tetapi kecuali pengguna secara khusus memilih seperti yang Anda lakukan dan hanya meneruskannya ke versi HTTPS.


3
2018-01-28 10:13



Masalah dengan solusi seperti memiliki laman landas HTTP biasa, bahkan jika dipisahkan dengan benar, adalah laman ini dibiarkan terbuka untuk manipulasi. Yaitu, tidak ada jaminan nyata bahwa tautan untuk versi HTTPS dari situs ini disampaikan secara utuh kepada pengunjung. - Håkan Lindqvist