Güvenilmez bir CA'ya güvenmek - Sistemin buna güvenmesini nasıl kısıtlayabilirim?


32

(İşletim sistemi yapılandırmasını programlama kodundan daha fazla düşündüğünü düşündüğümden, StackOverflow yerine ServerFault'a gönderildi).

Şu anda üçüncü taraf bir web servisine bağlanan bir sistemi korumaktan sorumluyum. Bu web hizmeti, yeterince adil olan istemci kimlik doğrulama sertifikalarını gerektirir, ancak web servisinin kendisi, kendisinin oluşturduğu bir kök sertifika yetkilisi sertifikası tarafından oluşturulan kendinden imzalı bir sertifika ile güvence altına alınır - müşteri kimlik doğrulama sertifikalarını oluşturan kök.

Mevcut hizmet sertifikasını yalnızca bilinen güvenilenler listesine eklemek ve kendi kendine oluşturulan yetki sertifikasını görmezden gelmek yeterli olacaktır, ne yazık ki hizmet sertifikası düzenli olarak değişmektedir, bu nedenle uygulamanın ne zaman kesileceğinden emin olmak için yetki sertifikasına güvenilmesi gerekir. servis sertifikası yenilendi.

Bununla birlikte (kişisel olarak) web servisini çalıştıran şirket ile olan tecrübelerime dayanarak CA certine güvenmiyorum - web’e sızdırılmış olsaydı beni şaşırtmazdı - ve endişe verici bir şekilde CA cert’inin üzerine yerleştirilmiş anahtar kullanım kısıtlamaları yoktur. bu (harici MITM saldırıları bir ihtimal olsa da, uzak olmasına rağmen, örneğin kod imzalamak için kullanılan sızdırılmış bir sertifika hakkında endişeliyim).

Bilgisayarıma (şu anda bir sunucu kutusu, ancak gelecekteki sıradan masaüstü istemci kutularında) bir CA'ya güvenmesini söylemem mümkün mü, ancak yalnızca belirli bir anahtar kullanım kümesi ve küçük bir olası konu adı kümesi (etki alanı adları) )?

Sunucu şu anda Windows Server 2012 R2'dir, ancak masaüstü bilgisayarların tümü Windows kutuları olmasına rağmen, bir Linux kutusunda çalışabilir.


3
En azından Linux'ta, birçok uygulamanın eş CA sertifikalarının konumunu belirleme seçeneği vardır, bu nedenle bu CA'nın kapsamını yalnızca onu kullanan uygulama ile sınırlayabilirsiniz. @CryptoGuy 'un cevabı Linux üzerinde de işe yarayacaktı, pencerede özel bir şey yok.
Edheldil

1
@Edheldil: Uygulamaya özel olsa da - örneğin, Windows N.50 veya GnuTLS'den daha uzun süre X.509 ad kısıtlamalarını destekledi.
Grawity

Sisteminiz bu üçüncü taraf hizmetine bağlanır; olabilir istemci kodu sisteminizde o yapıldığını şekilde, bu servisin CA güven için yapılandırılabilir o müşteri kodu için sadece değil, tüm sistem için,?
Castaglia

@Castaglia Ana bilgisayar sisteminden bağımsız olarak çalışan kendi sertifika doğrulama kodumu yazabilirim, ancak sistem genelinde sertifika hizmetlerini kullanan, üzerinde kontrol sahibi olmadığım başka istemci yazılımı parçaları da var.
Dai

Yanıtlar:


40

Evet mümkün. Windows durumunda, Sertifikalandırma veya Nitelikli Eşgüdüm olarak adlandırılan bir özellik vardır.

Buradaki fikir, üçüncü tarafın ortamınızda CA sertifikası verdiğini imzalamanızdır. Sonuç olarak, uzak SSL sertifikası kendi kök CA sertifikanıza zincirlenir. Kendinizi olası hileli sertifikalardan korumak için Name Constraints, kabul edilebilir adların bir listesini belirttiğiniz bir sertifika uzantısı uygularsınız . Üçüncü taraf CA başka bir ad için sertifika verirse (Ad Sınırlamaları uzantısında açıkça belirtilmemişse), CryptoAPI sağlayıcınız tarafından otomatik olarak reddedilir.

Ad kısıtlamalarına ek olarak Application Policies, çapraz sertifikadaki sertifika uzantısını tanımlayarak Geliştirilmiş Anahtar Kullanımı kısıtlamasını tanımlayabilirsiniz . Bu nedenle, güven sağlayıcınız yalnızca Application Policiesuzantıda belirtilen kullanımları başarıyla doğrular .

Daha fazla bilgi: Windows Server 2003 Kullanarak Sertifikalandırma ve Nitelikli Bir Alt Sertifika Planlama ve Uygulama

ps, makale Windows Server 2003'e karşı yazılmış olsa da, makale hala en son Windows Server sürümleri için geçerlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.