Soru Http’yu https’e yönlendirmek kötü mü?


Sunucumda bir SSL sertifikası kurdum.

Daha sonra, Port 803'teki alanımdaki tüm trafikler için Port 443'e yönlendirmek için bir yönlendirme kurdu.

Başka bir deyişle, tüm http://example.com trafik şimdi uygun şekilde yönlendiriliyor https://example.com sayfanın sürümü.

Yönlendirme Apache Sanal Hosts dosyamda böyle bir şeyle yapıldı ...

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

Sorum şu: SSL kullanmanın sakıncaları var mı?

Bu bir 301 Yönlendirmesi olmadığından, arama motorlarında bağlantı suyunu / sıralamasını değiştirerek https?

Yardımı takdir ediyorum. Her zaman bir sunucuda SSL kurmak istedim, sadece bunu yapmak için yaptım ve sonunda bu gece yapmaya karar verdim. Şimdiye kadar iyi çalışıyor gibi görünüyor, ancak bunu her sayfada kullanmanın iyi bir fikir olup olmadığından emin değilim. Sitem e-Ticaret değil ve hassas verileri işlemiyor; esas olarak öğrenme için onu kurmanın heyecanına ve heyecanına.


GÜNCEL SORUN

Strangely Bing bu ekran görüntüsünü sitemden oluşturuyor ve şimdi her yerde HTTPS kullanıyor ...

enter image description here 


245
2018-01-28 00:12


Menşei


[WTF - Cevabı ekleyemem (gerçi yeterince temsilcisi var).] Cevabım (kısmen) KÖTÜ BADI. HTTP üzerinden bir GET'de bir COOKIE veya API Anahtarı geçirmeyi düşünün. Siteniz HTTP isteklerini HTTPS isteklerine yönlendiriyorsa, bu çağrılar işe yarardı, ancak COOKIE veya API Anahtarı açık pozlanmış olarak iletilecekti. Bazı API'lar HTTP'yi kapatır, daha sağlam bir yaklaşımdır - hiç HTTP yoktur, bu yüzden HTTPS kullanmadığınız sürece çalışamazsınız. Örnek: "Tüm API istekleri HTTPS üzerinden yapılmalıdır. Düz HTTP üzerinden yapılan çağrılar başarısız olur" stripe.com/docs/api?lang=php#authentication - codingoutloud
@codingoutloud - alternatif olan Bütün şey hiçbir HTTPS ile HTTP üzerinden gerçekleşir. Bu nasıl daha iyi? - Mark Henderson♦
@BenCrowell, çünkü bir esir portalı gibi bir çok şey görünüyor sslstripstil yönlendirme saldırı (her ikisi de ortadaki adam isteği ihlali) HSTS-telif tarayıcılar her ikisini de engelleyecektir. - Jeffrey Hantin
https kullanılmasının, dahil ettiğiniz her şeyin de https olması gerektiği veya yüklenmeyebileceği anlamına geldiğini unutmayın. Örneğin, jquery'yi kullanarak yükleyin. src="://example.com/jquery.js" - eksikliğini not et http veya https Böylece tarayıcı uygun olanı yükler. API (https yoluyla yüklendi) http linkleri oluşturduktan sonra yerleştirmek için bazı gömülü Amazon öğelerini almaya çalışan bir kabus gördüm. Bu, https bağlantılarını değiştirmek için belgesiz parametreyi bulana kadar düzgün çalışmadıkları anlamına geliyordu. - Basic
Jason; güncellemeniz muhtemelen yeni bir soru olmalı Web Yöneticileri orijinal sorunuzla alakasız (teknik olarak) olduğu gibi. Ancak muhtemelen stil sayfalarınız güvensiz bir alandan geliyor. - Mark Henderson♦


Cevaplar:


[R] bayrak kendi başına 302 yönlendirme (Moved Temporarily). Gerçekten sitenizin HTTPS sürümünü kullanan kullanıcıların (ipucu: siz yaparsanız), o zaman kullanmalısınız [R=301] kalıcı bir yönlendirme için:

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

bir 301 tüm google-fu'larınızı ve zor kazanılmış sayfalarınızı korur bozulmamış. Emin olmak mod_rewrite etkin:

a2enmod rewrite

Tam sorunuza cevap vermek için:

Http’yu https’e yönlendirmek kötü mü?

Cehennem hayır. Çok iyi.


309
2018-01-28 00:27



Bilgi için teşekkürler, patronum sadece sitenin belirli sayfalarında https çalıştırdığı nedeni, her sayfada çalıştırmak için çok daha fazla sunucu kaynakları kullanması olduğunu söylüyor. Bunun hakkında bir şey biliyor musun yoksa bu doğruysa? - JasonDavis
@jasondavis Sadece birkaç dakikayı harcamadıysanız optimize et. - Michael Hampton♦
"Her sayfada çalıştırmak için çok daha fazla sunucu kaynağı kullanıyor." Modern CPU'lar SSL'yi neredeyse özgür kılan şifreleme hızlandırma özelliklerine sahiptir. Genel gider hakkında endişelenme. - Adam Davis
@AdamDavis Kripto algoritması hafif olabilir, ancak el sıkışma yükü hala mevcuttur. Ayrıca HTTPS, HTTP proxy'lerinin içeriğinizi önbelleğe almasını engeller. İçinde çoğu durumlarda, HTTPS'nin tepesi minimal ve değerlidir, fakat aşırı genelleme konusunda dikkatli olun. - 200_success
Bu, bazı sitenin kullanım kalıpları için yararlı olan ve genellikle çok az koruma sağlayan paylaşılan önbellekleri öldürür (insanların siteyi ziyaret ettiğinizi bilmeleri önemlidir, ancak yaptığınız şeyin ayrıntılarını değil? SSL'nin yararlı olduğu tek durum budur). SSL'nin her kaynağındaki ana avantajı, "güvenli" olmanızın gerekmemesidir. "hakkımızda" görünen insanlar, ama kaçıramayacağınız ve bunu yapamayacağınız bir durumda kullanamayacağınız. - Jon Hanna


Sadece SSL siteleri fikrini desteklerken, site tasarımınıza bağlı olarak bir dezavantajın genel gider olduğunu söyleyebilirim. Örneğin, img etiketlerinde çok sayıda tekil resim yayınlıyorsanız, bu durum sitenizin çok daha yavaş çalışmasına neden olabilir. Aşağıdakiler üzerinde çalıştıklarından emin olmak için yalnızca SSL kullanan sunucuları öneriyorum.

  1. Site içi bağlantılar için sitenin tamamını kontrol edin ve kendi alan adlarınızı bağlantılarda belirtmişseniz HTTPS kullandığından emin olun, böylece kendi yönlendirmelerinize neden olmuyorsunuz.
  2. Güncelleyin <meta property="og:url" alan adınızın https sürümünü kullanmak için.
  3. Eğer kullanırsan <base href= HTTPS'yi kullanmak için tekrar güncelleyin.
  4. kurmak SPDY protokolü Eğer mümkünse
  5. İstek sayısını azaltmak için, mümkün olduğunda CSS Image sprite'ları kullandığınızdan emin olun.
  6. Site haritalarınızı https durumunu göstermek için güncelleyin; böylece örümcekler zamanla bu değişikliği öğrenirler.
  7. HTTPS'yi tercih etmek için Google Web Yöneticisi Araçları gibi Arama Motoru tercihlerini değiştirin
  8. Mümkün olduğunda, herhangi bir statik ortamı HTTPS CDN sunucularına yükleyin.

Eğer yukarıdakiler ele alınırsa, o zaman birçok sorun yaşayacağınızdan şüpheliyim.


49
2018-01-28 02:08



SPDY iyi bir öneridir; hatta bir modül gibi görünüyor Apache 2.x'e SPDY desteği ekleniyor. - Calrion
"//Yourserver.com/some-uri" yerine "yourserver.com/some-uri"sorun çözülüyor (1) çünkü tarayıcı, sayfanın yüklendiği şemaya bağlı olarak uygun şemayı (http veya https) seçecektir. - MauganRa
@MauganRa Tabii ki, bu, örneğin, http makale sayfasından https giriş sayfasına bir bağlantı değildir. - Mołot
Google, bir kullanıcının ziyaret ettiği URL’yi görür. Referer başlığı. Örneğin, bu site Google’ın CDN'sinden jQuery'yi kullanır ve sitemi her yüklediğimde tarayıcım Google'a bir istek gönderir. Böylece bir Referer başlık da bu sitenin URL'sine ayarlanmış Google'a gönderilir. Google, IP adresimin değişmediği sırada ziyaret ettiğim siteleri izleyebilir (ve bu süre zarfında bir Google hizmetini kullanırsam, Google bu bilgileri Google hesabımla da bağlayabilir). - Stephan Kulla
1) Ben sadece bir arama yaptım ve MySQL veritabanında http yerine https ... WordPress kullanıyorum, bu yüzden yüzlerce bağlantıyı güncellemek çok kolay oldu - JasonDavis


Https oluşturdunuz, sonra sitenin her yerinde kullanmalısınız. Karma içerik sorunları riskinden kaçınacaksınız ve gerekli araçlara sahipseniz, neden tüm siteyi güvenli hale getirmiyorsunuz?

Http'den https'ye yönlendirme ile ilgili olarak cevap bu kadar basit değildir.

Yönlendirme, kullanıcılarınız için çok daha kolaylaştıracak, sadece whateversite.com yazacak ve https'ye yönlendirilecek.

Fakat. Kullanıcı bazen güvensiz bir ağda ise (ya da yakınsa) Troy Hunt ve Ananas)? Daha sonra kullanıcı talep edecek http://whateversite.com eski alışkanlıktan. Bu http. Bu tehlikeye düşebilir. Yönlendirme işaret edebilir https://whateversite.com.some.infrastructure.long.strange.url.hacker.org. Sıradan bir kullanıcı için oldukça yasal görünüyordu. Ancak trafik engellenebilir.

Bu yüzden burada iki rakip gereksinimimiz var: Kullanıcı dostu olmak ve güvende olmak. Neyse ki, denilen bir çare var HSTS başlığı. Bununla birlikte yönlendirmeyi etkinleştirebilirsiniz. Tarayıcı güvenli siteye geçecek, ancak HSTS başlığı sayesinde bunu hatırlayın. Kullanıcı, bu güvenli olmayan ağ üzerinde oturan whateversite.com'da yazdığında, tarayıcı http üzerinden yönlendirme yapmadan hemen https'ye gider. Çok hassas verilerle ilgilenmediğiniz sürece, bunun çoğu site için güvenlik ve kullanılabilirlik arasında adil bir anlaşma olduğunu düşünüyorum. (Yakın zamanda tıbbi kayıtlarla ilgili bir uygulama kurduğumda, yönlendirme olmadan tüm https'lere gittim). Ne yazık ki Internet Explorer'ın HSTS desteği yok (kaynak), böylece hedef kitlenizin en çok IE kullanıyorsa ve veriler hassassa, yönlendirmeleri devre dışı bırakmak isteyebilirsiniz.

Yani, IE kullanıcılarını hedeflemiyorsanız, devam edin ve yönlendirme kullanın, ancak HSTS üstbilgisini de etkinleştirin.


38
2018-01-28 07:40



Daha fazla insan buna da dikkat etmelidir. Başka bir şey, insanların GET'ler veya POST'larda sayfaya gönderilen tüm bilgilerin düz metinde olması gerçeğini göz ardı ederek son nokta HTTPS olduğu için güvenli olduklarını varsaymalarıdır. - Velox
@Velox - "GET'lerde veya POST'larda sayfaya gönderilen tüm bilgilerin düz metinde olduğunu göz ardı ederek, insanların son nokta HTTPS olduğu için güvenli olduklarını varsaydığını" sanmıyorum. Bazı tuhaflıklar olsa da, GET sorgu paramları HTTPS üzerinden taşıma sırasında net olarak hareket etmiyor. Örneğin bakınız: stackoverflow.com/questions/323200/... POST yükleri de korunurken, kayıt ve yönlendirme başlıklarına da açık değildir. - codingoutloud
@codingoutloud Bu benim amacım. HTTPS üzerinden şifrelenir, ancak HTTP sayfasının ilk isteğinde değillerdi. - Velox
@Velox - Sitenin tamamı HTTPS'ye yönlendiriliyorsa, HTTPS'nin devreye girmesinden önce herhangi bir GET parametresinin gönderilmesinin muhtemel olması olası değildir (ve her şey bu noktadan sonra HTTPS olarak kalır). HSTS ile düzeltilebilecek çerezlerin gönderilebileceği bir başlangıç ​​isteği ve JavaScript'le yenilecek olan SSLStrip için küçük bir saldırı penceresi var ancak bu kendi başına bir silahlanma yarışması. - Brilliand
@Brilliand Fuar noktası, ama güvenlikte zayıf bir nokta tüm şeyi zayıflatıyor. Her zaman dikkate değer. - Velox


Bu konuda yanlış bir şey yok ve aslında en iyi uygulama (siteler için meli güvenli bir bağlantı üzerinden sunulmalıdır). Aslında, yaptığınız yapılandırma, kullandığım yapılandırmaya oldukça benzer:

<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 :)

301 durum kodu bir kalıcı Yönlendirme, gelecekteki istemciler için güvenli URL'leri kullanmaları için talimat verir (ör., yer imini güncelleyin).

Sadece siteyi TLS / SSL üzerinden sunacak olursanız, HTTP'yi etkinleştirmek için başka bir yönerge öneririm. Sıkı Ulaştırma Güvenliği (HSTS) senin güvenli sanal konak:

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

Bu başlık, yetenekli müşterilere (çoğu bugünlerde inanıyorum) sadece HTTPS kullan sağlanan alanla (secure.example.comBu durumda, sonraki için 1234 saniye. ; includeSubdomains porsiyon isteğe bağlı ve direktifin sadece geçerli alana değil, altındaki herhangi birine de uygulandığını belirtir (ör. alpha.secure.example.com). HSTS üstbilgisinin olduğunu unutmayın. sadece SSL / TLS bağlantısı üzerinden sunulduğunda tarayıcılar tarafından kabul edildi!

Sunucu yapılandırmanızı mevcut en iyi uygulamaya karşı test etmek için iyi bir ücretsiz kaynak Qualys'in SSL Sunucu Testi hizmet; En az bir A- puan almayı hedefleyeceğim (eliptik eğri kriptografisine destek olmaması nedeniyle Apache 2.2'den daha fazlasını elde edemezsiniz).


22
2018-01-28 02:20



Başlık eklemeli eklemeliyim Strict-Transport-Security: max-age=0 herhangi bir önceki yönergeyi reddeder; her zamanki gibi, bu şart kabul edilmek üzere HTTPS üzerinden gönderilmeli, ancak etki alanında HTTP kullanmanız gerektiğine karar verirseniz, işleri iptal etmenin kullanışlı bir yoludur. - Calrion


Vaov ! HTTP'yi HTTPS'ye yönlendirmek çok güzel bir şey ve bunun için herhangi bir sakınca göremiyorum.

Tarayıcınızda sertifika ile ilgili kullanıcı dostu olmayan uyarılardan kaçınmak için müşterilerinizin doğru CA'ya sahip olduğundan emin olun.

Ek olarak, Apache'yi HTTPS'ye yönlendirmek için kurulum şekliniz iyi görünüyor.


5
2018-01-28 00:35





Http’yu https’e yönlendirmek kötü mü?

Hayır, hiç de değil. Aslında, yapılması iyi bir şey!

Yönlendirmelerde:

Daha verimli olabilir, tarafından yeniden yazmaların tamamen ortadan kaldırılması. İşte benzer bir durumdaki konfigürasyonum ...

<VirtualHost *:80>
  ServerName domainname.com

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

5
2018-01-28 13:45





HTTPS tam olarak kusursuz değildir. Tabii ki, normalde HTTPS'yi zorlamak iyi bir şeydir. Normal suçluların kullanıcılarınız için kötü bir şey yapmasını engeller.

Ancak lütfen SSLCiphers ayarı gibi SSL Ayarlarını kontrol etmeyi unutmayın. RC4 kripto, SSLv2 ve SSLv3 protokolü gibi şeyleri devre dışı bırakın. Ayrıca, sisteminizin kripto sistem kütüphanelerinin TLS1.2'yi destekleyip desteklemediğini de öğrenmelisiniz (sahip olmak istediğiniz şey);)

SSL'yi aç, iyi bir şey.


4
2018-01-28 07:43



Entropi tükenmez (En azından Dünya tabanlı saldırganlara karşı savunursanız ziyade voodoo yapmak). Ya yetersiz entropi ile başlarsınız ve rastgelelik gerektiren bir şey yapamazsınız, ya da yeterli entropi ile başlarsınız ve ne kadar rastlantısallık yaratırsanız kazansın, entropi yapmaya devam edersiniz. - Gilles
Afedersiniz, ne? Linux üzerinde, PRNG tabanlı, muhtemelen yeterince iyi entropi yerine donanımdan türetilmiş güçlü entropi konusunda ısrar eden ve havuz derinliği düşükse gerçekten engel olabilecek birçok işlem vardır. Bir Linux sistemi üzerinde yeterli entropi ile başlamak kesinlikle mümkün, ama havuzun tahliyesi için aşırı kullanımla, bazı işlemlerin engellenmesine neden oluyor. - MadHatter


Şahsen ben internet üzerinden bağlantıları güvence altına almak için SSL kullanmaktayım, ancak burada tüm diğer cevapların kaçırıldığına dikkat etmeliyim ki, bir HTTP bağlantısına sahip her aygıt ve yazılım parçası SSL kullanamayacaktır. Bu nedenle, kullanıcılar için desteklenmiyorsa, kullanıcıların bundan kaçınması için bir yol sağlamayı düşünürdüm. Şifreleme teknolojisinin yasadışı olduğu bazı Ülkelerde bulunan kişilerin sitenize erişmesine izin verilmemesi de mümkündür. Sitenin güvenli olmayan sürümünü zorlamak için bir bağlantı içeren şifrelenmemiş bir açılış sayfası eklemeyi düşünürdüm, ancak bir kullanıcı özellikle dediğiniz gibi yapmadıkça ve bunları HTTPS sürümüne yönlendirmedikçe.


3
2018-01-28 10:13



Düz bir HTTP açılış sayfası gibi çözümlerle ilgili sorun, düzgün bir şekilde ayrılmış olsa bile, bu sayfanın manipülasyona açık kalmasıdır. Yani, sitenin HTTPS sürümü için bağlantının ziyaretçilere sağlam şekilde teslim edildiğine dair gerçek bir garanti yoktur. - Håkan Lindqvist


İşte geniş fırça darbesi sorunlarından bazıları:

  • MITM / SSLSTRIP: Bu büyük bir uyarı. Sitenizi HTTPS üzerinden sunacaksanız, sonra sitede HTTP'yi devre dışı bırak. Aksi takdirde, kullanıcılarınızı, istekleri kesiştirecek ve HTTP üzerinden kendilerine kötü amaçlı yazılımlar sunarak kendi zararlı yazılım kodlarını akışa ekleyecek olan SSLSTRIP dahil olmak üzere çeşitli ortadaki adam saldırılarına açık bırakabilirsiniz. Kullanıcı fark etmezse, o zaman düşünmek Onların oturumu aslında olmadığında güvenlidir.

    • Bununla ilgili sorun, siteniz bir genel site ise ve HTTP'yi sadece belirsiz bir şekilde devre dışı bırakıyorsanız, çok fazla ziyaretçi kaybedebilirsiniz. Muhtemelen bile olmaz meydana site HTTP ile yüklenmezse HTTPS'yi denemeleri için.
  • Siteniz güvenli bir giriş gerektiriyorsa, tüm kullanıcı oturumu güvenli hale getirilmelidir. HTTPS üzerinden kimlik doğrulama yapmayın, ardından kullanıcıyı tekrar HTTP'ye yönlendirin. Yine yaparsanız, kullanıcılarınızı MITM saldırılarına karşı savunmasız bırakacaksınız. Bu günlerde kimlik doğrulamaya yönelik standart yaklaşım bir kez kimlik doğrulaması yapmak, daha sonra bir kimlik doğrulama jetonunu ileri geri almaktır (bir çerezde). Ancak, HTTPS üzerinden kimlik doğrulaması yaparsanız ve HTTP'ye yönlendirirseniz, ortadaki bir adam bu çerezi engelleyebilir ve siteyi kimliğinizin doğrulanmış kullanıcısı olarak kullanabilir ve güvenliğini atlayabilir.

  • HTTPS ile "performans" sorunları, yeni bir bağlantı oluşturmaya dahil olan el sıkışma ile sınırlı olan tüm pratik amaçlar içindir. Bir URL'den birden çok HTTPS bağlantısına olan ihtiyacı en aza indirgemek için elinizden geleni yapın ve ileride mil olacaksınız. İçeriğinizi HTTP üzerinden sunsanız bile doğrudur. SPDY'yi okuduysanız, yaptığınız her şeyin tüm içeriği tek bir bağlantı üzerinden tek bir URL'den sunmaya yönelik olduğunu anlayacaksınız. Evet, HTTPS'yi kullanarak önbelleğe almayı etkiler. Ancak bu günlerde kaç tane web sitesi sadece durağan, önbelleklenebilir içerikler? Web sunucunuzda önbelleğe alma işlemini kullanarak, daha fazla veri tabanı sorgularını değiştirmeden tekrar tekrar veri almaktan vazgeçirmek ve pahalı kod yollarının gerektiğinden daha fazla çalıştırılmasını engellemek için paranızı daha fazla patlatabilirsiniz.


3
2018-04-19 10:43



Aslında adreslemek için yapabileceğiniz şey sslstrip HSTS kullanmaktır (tercihen HSTS ayarlarınızı önceden yüklenmiş duruma getirin). Düz HTTP üzerinden istekleri kabul edip etmemeniz veya gerçekten bu konuda bir sorun teşkil etmese de, bir HTTPS sadece HTTPS isteklerini kabul etseniz bile düz HTTP (muhtemelen HTTPS sitenize proxy) üzerinden cevap verebilir. - Håkan Lindqvist
@ HåkanLindqvist Gerçekten senden bir düşüş aldım? HTTPS üzerinden doğrulama yapmama ve sonrasında oturumun geri kalanı için HTTP'ye geçme konusunda kötü bir tavsiye veya iyi tavsiyeler verdim mi? HTTPS performans mitler konusunda kötü tavsiyelerde bulundum mu? Ayrıca, istemci başlangıçta HTTPS kullanarak bağlanmaya çalışırsa, MITM, tarayıcıda bir uyarı tetiklemeden müdahale edemez ve yanıt veremez, çünkü çalıntı veya başarılı bir sertifika almış olmadıkça sertifikaları eşleşmez. Öte yandan, site bir HTTP bağlantısı kabul ederse, kesişme daha kolaydır. Her iki durumda da HTTPS çubuğu yükseltir. - Craig
..ve elbette HSTS'yi kullanarak gönülden katılıyorum. - Craig
Cevabımla ilgili problemim, sslstrip'i ele aldığını iddia eden listedeki ilk madde (efsanelerin konuşulması). İlk yorumuma girmeye çalıştığım şey, aktif bir MITM'iniz varsa (ilk etapta ihtiyacınız olan şey budur), saldırganın esas olarak, müşteri perspektifinden "site" olabileceği; İstemciden düz HTTP bağlantılarını kabul etmek isteyip istemediğine, gerçek web sunucunuzun bu konuda nasıl davrandığına karar veren saldırganın, saldırganın yapacağı veya yapacağı şeyi etkilememesidir. - Håkan Lindqvist
@ HåkanLindqvist Ziyaretçinin kasıtlı olarak HTTPS ile bağlantı kurmaya çalışması durumunda, saldırgan, sunucu sertifikası çalmayı başarmadıkça veya bir şekilde başarılı bir şekilde oluşturdukları sürece, tarayıcıda bayrak atmadan bu talebi karşılayamazlar. bağlantıyı HTTP'ye geçirmek için yapın. HTTPS yine çubuğu yükseltir. Tabii ki ziyaretçi ilk bağlantı denemesini HTTP üzerinden yaparsa, tüm bahisler tamamen kapanır. - Craig