← man/security_and_auth
certtool — man certtool — 80×24
ugur@toprak:~/man/security_and_auth$man certtool
Bölüm 1 Güvenlik & Kimlik

certtool

Keychains (Anahtar Zincirleri) ile kullanılmak üzere anahtar çiftleri, sertifikalar ve sertifika imzalama istekleri oluşturma

Synopsis

       certtool command [command-args] [options]

       certtool c [options]

       certtool r outFileName [options]

       certtool V infileName [options]

       certtool C domainName [options]

       certtool i inFileName [options]

       certtool d inFileName [options]

       certtool y [options]

Certtool Command Summary

c Anahtar çifti ve Sertifika oluşturma

r CSR oluşturma

V CSR doğrulama

C Bir Sistem Kimliği oluşturma

i Sertifika içe aktarma

d Sertifika görüntüleme

y Anahtar zincirindeki tüm sertifikaları görüntüleme

Certtool Option Summary

c Gerekirse anahtar zincirini oluşturur.

d DER biçiminde bir CSR oluşturur; varsayılan PEM biçimidir.

k=keychainName İşlem için kullanılacak Anahtar Zincirini belirtir. Eğer keychainName '/' ile başlıyorsa mutlak bir yol olduğu varsayılır; aksi takdirde, belirtilen dosya adı kullanıcının Library/Keychains dizinine görelidir.

p=passphrase Oluşturma sırasında anahtar zinciri parolasını belirtir.

r=privateKeyFileName İsteğe bağlı özel anahtar, yalnızca Sertifika İçe Aktarma (Import Certificate) için geçerlidir.

f=[18f] Özel Anahtar Biçimi = PKCS1/PKCS8/FIPS186; varsayılan PKCS1 (openssl) biçimidir.

x=[aSsm] Genişletilmiş Anahtar Kullanımı (Extended Key Usage): a=Herhangi biri; s=SSL İstemcisi; S=SSL Sunucusu; m=SMIME.

a Varsayılan ACL ile özel anahtar üretir.

u Erişimi mevcut kullanıcıyla sınırlayan ACL ile özel anahtar üretir.

P Belirtilen etki alanı (domain) için zaten mevcutsa Sistem Kimliği oluşturmaz.

h Kullanım mesajını yazdırır.

v Ayrıntılı (verbose) modda yürütür.

Description

certtool, anahtar çiftleri, sertifikalar ve sertifika imzalama istekleri oluşturmak; harici olarak üretilen sertifikaları bir Anahtar Zincirine (Keychain) içe aktarmak ve sertifikaların içeriğini görüntülemek için kullanılan bir UNIX komut satırı programıdır.

Examples

       Kendi Kendine İmzalı Sertifika Üretme

       Bu komut bir anahtar çifti ve kendi kendine imzalı (kök) bir sertifika üreterek bunları bir
       anahtar zincirine yerleştirir. Kök sertifika, bu komut sırasında üretilen özel anahtar ile imzalanır.
       Bu komut tarafından üretilen sertifika tamamen güvenilmezdir ve "gerçek dünyada" kullanılamaz;
       bu komutun birincil amacı, SecureTransport tabanlı SSL sunucu uygulamalarının erken geliştirilmesini
       kolaylaştırmaktır. Özellikle, "gerçek dünyadaki" SSL istemcileri (örneğin web tarayıcıları), bu
       komutla üretilmiş bir sertifikayı sunan bir SSL sunucusuna bağlanmaya çalıştıklarında değişen
       derecelerde şikayet edeceklerdir. Bazı tarayıcılar, bir miktar yönlendirmenin ardından bu sertifikaya
       koşullu olarak "güvenmenize" izin verecektir.
       # CertTool c [options]
       Kullanılabilir seçenekler şunlardır:
       k=keyChainName
       Burada "keyChainName", anahtarların ve sertifikanın ekleneceği anahtar zincirinin adıdır.
       Belirtilen anahtar zinciri mevcut olmalıdır. Eğer mevcut değilse ve anahtar zincirinin sizin yerinize
       oluşturulmasını istiyorsanız, 'c' seçeneğini belirtin. Hiçbir anahtar zinciri belirtilmezse, anahtarlar
       ve sertifikalar varsayılan anahtar zincirine eklenir.
       c
       Belirtilen anahtar zincirinin oluşturulacağını belirtir.
       x=[aSsm]
       İsteğe bağlı bir Genişletilmiş Anahtar Kullanımı (Extended Key Usage) uzantısı belirtir. Değerler;
       ExtendedKeyUseAny için 'a', SSL istemcisi (ClientAuth) için 's', SSL sunucusu (ServerAuth) için 'S'
       ve S/MIME (EmailProtection) için 'm' şeklindedir.
       a
       Özel anahtarın varsayılan bir ACL ile oluşturulmasını sağlar. Belirtilmezse, özel anahtar ACL olmadan
       oluşturulur.

       u
       Erişimi mevcut kullanıcıyla sınırlayan bir ACL ile özel anahtar oluşturur.

       Bu etkileşimli bir komuttur; anahtar çiftini ve sertifikayı üretmek için kullanılan bir dizi farklı
       öğe için size komut satırında sorular sorulacaktır. Örnek bir oturum aşağıda gösterilmiştir.
       # CertTool k=certkc
       Anahtar ve sertifika etiketini girin (key and certificate label): testCert

       Lütfen üreteceğiniz anahtar çifti için parametreleri belirtin.

	   r RSA
	   d DSA
	   f FEE
	   e ECDSA

       Harfe göre anahtar algoritmasını seçin: r

       RSA için geçerli anahtar boyutları 1024..2048'dir; varsayılan 2048'dir
       Bit cinsinden anahtar boyutunu girin veya varsayılan için Enter tuşuna basın: 2048

       RSA algoritmasını ve 2048 bit anahtar boyutunu seçtiniz.
       Tamam mı (y/herhangi bir tuş)? y
       Sertifika/anahtar kullanımını girin (s=imzalama, b=imzalama VE şifreleme): b
	...Anahtar çifti üretiliyor...

       Not: Belirtilen anahtar zinciri açık değilse ve 'p' seçeneği aracılığıyla parolayı belirtmediyseniz,
       bu noktada Anahtar Zinciri sistemi tarafından Anahtar Zinciri parolası girmeniz istenecektir.
       Lütfen sertifikanızın imzalanacağı algoritmayı belirtin.

	   s  SHA1 ile RSA
	   2  SHA256 ile RSA
	   3  SHA384 ile RSA
	   5  SHA512 ile RSA

       Harfe göre imza algoritmasını seçin: s

       SHA1 ile RSA algoritmasını seçtiniz.
       Tamam mı (y/herhangi bir tuş)? y
	...sertifika oluşturuluyor...
       Şimdi sertifikanın Göreli Ayırt Edici Adının (Relative Distinguished Name - RDN) çeşitli
       bileşenlerini belirteceksiniz. Bir RDN'nin hepsi isteğe bağlı olan bir dizi bileşeni vardır,
       ancak en az birinin bulunması gerekir.

       Sertifikayı bir SSL/TLS sunucusunda kullanmak üzere oluşturuyorsanız, RDN'nin Ortak Ad (Common Name)
       bileşeninin sunucunun ana bilgisayar adıyla (host name) tam olarak eşleşmesi gerektiğini unutmayın.
       Bu bir IP adresi olmamalı, gerçek etki alanı adı olmalıdır, örneğin www.apple.com. Belirli bir
       RDN bileşeni için Enter tuşuna basılması, o bileşen için hiçbir değer verilmemesiyle sonuçlanır.
       Ortak Ad	 (örneğin www.apple.com) : 10.0.61.5
       Ülke		 (örneğin US) :
       Kuruluş	 (örneğin Apple, Inc.) : Apple
       Kuruluş Birimi (örneğin Apple Software Engineering) :
       Eyalet/İl	 (örneğin California) : California
       E-posta Adresi	 (örneğin username@apple.com) :
       Belirttikleriniz:
	Ortak Ad (Common Name)   : 10.0.61.5
	Kuruluş (Organization)  : Apple
	Eyalet/İl (State/Province) : California
       Bu uygun mu (y/herhangi bir tuş)? y
	..sertifika Anahtar Zincirine kaydedildi.
       #
       RDN'nin "Ortak Ad" (Common Name) kısmı - yukarıdaki durumda "10.0.61.5" - SSL/TLS sunucusunu
       çalıştıracağınız makinenin ana bilgisayar adıyla MUST (kesinlikle) eşleşmelidir. (Bu durumda test
       makinesinin gerçek bir ana bilgisayar adı yoktur; bir güvenlik duvarının arkasında DHCP ile yapılandırılmıştır,
       bu yüzden Ortak Ad için "10.0.61.5" belirtilmiştir.) Bu, SSL'in sertifika doğrulama sürecinin bir parçasıdır;
       DNS sahtekarlığı (spoofing) kullanan saldırıları önler.

       Sertifika/anahtar kullanımı hakkında kısa bir not: SecureTransport'un normal yapılandırması,
       SSLSetCertificate() içinde belirtilen sunucu sertifikasının hem imzalama hem de şifreleme yeteneğine
       sahip olmasıdır. Eğer bu sertifika yalnızca imzalama yeteneğine sahipse, şifreleme yeteneğine sahip bir
       sertifika içeren ikinci bir anahtar zinciri oluşturmanız ve bunu SSLSetEncryptionCertificate() işlevine
       aktarmanız gerekir.

       Sertifika İmzalama İsteği (CSR) Oluşturma

       Bir CSR, bir web sunucusu yöneticisinin, CA tarafından imzalanmış geçerli bir sertifika elde etmek amacıyla
       bir Sertifika Yetkilisine (Certificate Authority - CA) bilgi sağlamasının standart yoludur. Bu tür bir
       sertifika gerçek dünyada kullanılır; Verisign ve Thawte gibi CA'lar tarafından imzalanan sertifikalar,
       SSL işlemleri gerçekleştirilirken çoğu web tarayıcısı tarafından tanınır.

       "Gerçek" bir sertifika almanın genel prosedürü şudur:

       •      Anahtar çifti üretme

       •      CSR oluşturma

       •      CSR'yi ve diğer bazı bilgileri ve/veya belgeleri CA'ya sunma

       •      CA'nın size, kendisi tarafından imzalanmış bir sertifika göndermesi.

       •      CA'dan alınan bu sertifikayı anahtar zincirinize aktarma.

       Bu anahtar zincirindeki öğeler artık SecureTransport'un SSLSetCertificate() çağrısında kullanılabilir.

       Bu komut, yukarıdaki prosedürün ilk iki adımını gerçekleştirir. Elde edilen sertifikayı anahtar zincirinize
       aktarma hakkında bilgi edinmek için aşağıdaki "Sertifika İçe Aktarma" başlıklı bölüme bakın. Bu komutun biçimi:
       # CertTool r outFileName [options]
       Elde edilen CSR "outFileName" dosyasına yazılacaktır. Kullanılabilir seçenekler şunlardır:
       k=keyChainName
       Burada "KeyChainName", anahtarların ve sertifikanın ekleneceği anahtar zincirinin adıdır. Hiçbir anahtar
       zinciri belirtilmezse, anahtarlar ve sertifikalar varsayılan anahtar zincirine eklenir. 'c' seçeneğini
       belirtmediğiniz sürece belirtilen anahtar zinciri mevcut olmalıdır.
	d
       'd' seçeneği CertTool'a CSR'yi DER kodlamalı biçimde oluşturmasını söyler. Varsayılan değer, çoğu CA'nın
       beklediği PEM kodlamalı biçimdir. PEM kodlamalı veri, örneğin bir e-posta mesajına yapıştırılabilen,
       yazdırılabilir ASCII metninden oluşur. DER kodlamalı veri ise yazdırılamayan ikili veridir.
	c
       Belirtilen anahtar zincirinin oluşturulacağını belirtir.
       a
       Özel anahtarın varsayılan bir ACL ile oluşturulmasını sağlar. Belirtilmezse, özel anahtar ACL olmadan
       oluşturulur.
       u
       Erişimi mevcut kullanıcıyla sınırlayan bir ACL ile özel anahtar oluşturur.

       Bu etkileşimli bir komuttur; anahtar çiftini ve CSR'yi üretmek için kullanılan bir dizi farklı öğe
       için size komut satırında sorular sorulacaktır. Sorulan sorular ve sağlamanız gereken verilerin biçimi,
       Bölüm 2'deki örnek oturumda gösterilen verilerle tamamen aynıdır.

       CSR Doğrulama

       Bir CSR, diğer şeylerin yanı sıra, yukarıda açıklandığı gibi üretilen genel anahtarı içerir. CSR, ilişkili
       özel anahtarla imzalanmıştır. Bu nedenle bir CSR'nin bütünlüğü, genel anahtarının çıkarılması ve CSR'nin
       imzasının doğrulanması yoluyla doğrulanabilir. Bu komut bu bütünlük kontrolünü gerçekleştirir. Bu komutun
       biçimi:
       # CertTool V inFileName [options]
       Kullanılabilir tek seçenek 'd' bayrağıdır; bu bayrak, "Sertifika İmzalama İsteği Oluşturma" başlıklı
       bölümde açıklandığı gibi, CSR'nin varsayılan PEM biçimi yerine DER biçiminde olduğunu belirtir. Bu komutun
       tipik (başarılı) çalıştırılması şu şekildedir:
       # CertTool V myCsr.pem
	...CSR başarıyla doğrulandı.
       Doğrulama başarısız olursa birçok şey ters gitmiş olabilir; yukarıdaki başarı mesajından başka bir şey
       görüyorsanız, hatalı veya bozuk bir CSR'ye sahip olduğunuzu söylemek yeterlidir.

       Sistem Kimliği Oluşturma

       Bu komut, System anahtar zincirinde bir anahtar çifti ve kendi kendine imzalı (kök) bir sertifika oluşturur
       ve sonucu, belirtilen etki alanı adıyla ilişkili Sistem Kimliği (Identity) olarak Sistem Kimliği
       veritabanına kaydeder. Etki alanı adı genellikle "com.apple.somedomain..." biçiminde bir dizedir. Bu komutu
       çalıştırmak için root olarak çalışıyor olmanız gerekir. Bu komutun biçimi:
       # CertTool C domainName [options]
       Kullanılabilir seçenekler şunlardır:
       u
       Erişimi mevcut kullanıcıyla sınırlayan bir ACL ile özel anahtar oluşturur. Belirtilmezse, özel anahtar
       varsayılan bir ACL ile oluşturulacaktır.
       P
       Belirtilen etki alanı için zaten mevcutsa sistem kimliği oluşturmaz.

       Sertifika Yetkilisinden Alınan Sertifikayı İçe Aktarma

       CA ile görüştükten ve onlara yukarıda açıklandığı gibi üretilen CSR'nin yanı sıra gereksinim duydukları
       diğer bilgileri, belgeleri ve ödemeyi sağladıktan sonra, CA size bir sertifika verecektir. Bu sertifikayı,
       daha önce ürettiğiniz anahtar çiftini içeren anahtar zincirine eklemek için bu komutu kullanın.

       Bu komutun biçimi:
       # CertTool i inFileName [options]
       İçe aktarılacak sertifika "inFileName" dosyasından alınır. Kullanılabilir seçenekler şunlardır:
       k=keyChainName
       Burada "keyChainName", sertifikanın ekleneceği anahtar zincirinin adıdır. Hiçbir anahtar zinciri
       belirtilmezse, sertifika varsayılan anahtar zincirine eklenir. Belirtilen anahtar zinciri tipik olarak
       daha önce ürettiğiniz anahtar çiftini içerir. (Anahtar üretmediğiniz bir anahtar zincirine de sertifika
       içe aktarabileceğinizi ancak bunu yaparsanız içe aktarılan sertifika ile özel anahtar arasında hiçbir
       bağlantı olmayacağını unutmayın.) Bu komut yürütülürken anahtar zinciri açık değilse, Anahtar Zinciri
       sistemi tarafından parolası istenecektir.
       r=privateKeyFileName
       Burada "privateKeyFileName", sertifika ile birlikte içe aktarılacak isteğe bağlı özel anahtar dosyasının
       adıdır. Bu seçenek, OpenSSL gibi diğer yollarla üretilen sertifika/anahtar çiftlerini içe aktarmak için
       kullanılır.
       f=privateKeyFormat
       Burada "privateKeyFormat", 'r' seçeneğiyle belirtilen özel anahtarın biçimidir. Biçimler şunlardır:
       PKCS1 (OpenSSL biçimi) için '1', PKCS8 için '8' ve FIPS186 (BSAFE biçimi) için 'f'. Varsayılan değer,
       hem RSA hem de DSA anahtarları için OpenSSL biçimidir.
	d
       Yukarıda açıklandığı gibi DER biçimini belirtir. Varsayılan PEM biçimidir.
	c
       Belirtilen anahtar zincirinin oluşturulacağını belirtir.

       Sertifika Görüntüleme

       Bu komut, bir dosyadan alınan mevcut bir sertifikanın içeriğini görüntüler. Bu komutun biçimi:
       # CertTool d inFileName [options]
       Görüntülenecek sertifika "inFileName" dosyasından alınır. Kullanılabilir tek seçenek, yukarıda açıklandığı
       gibi DER biçimini belirten 'd' bayrağıdır. Varsayılan PEM biçimidir. Aslında bu seçeneğin yokluğunda
       certtool, sertifikanın biçimini (PEM veya DER) doğru bir şekilde belirleyecektir.

       Bir Anahtar Zincirindeki Sertifikaları Görüntüleme

       Bu komut, bir anahtar zincirindeki tüm sertifikaların içeriğini görüntüler. Bu komutun biçimi:
       # CertTool y [options]
       Kullanılabilir seçenekler şunlardır:
       k=keyChainName
       Burada "KeyChainName", görüntülenecek anahtar zincirinin adıdır.
       v
       Ayrıntılı (verbose) modu belirtir.

       Sertifika Yetkilileri ve CSR'ler

       Yukarıda belirtildiği gibi, "gerçek" bir sertifika almanın genel prosedürü şudur:

       •      Anahtar çifti üretme

       •      CSR oluşturma

       •      CSR'yi ve diğer bazı bilgileri ve/veya belgeleri CA'ya sunma

       •      CA'nın size, kendisi tarafından imzalanmış bir sertifika göndermesi.

       •      CA'dan alınan bu sertifikayı anahtar zincirinize aktarma.

       Bu anahtar zincirindeki öğeler artık SecureTransport'un SSLSetCertificate() çağrısında kullanılabilir.

       Sertifika almak için mükemmel bir web tabanlı arayüze sahip olan bir CA, Verisign firmasıdır
       (http://www.verisign.com/products/site/index.html). Yalnızca CertTool, Verisign'ın web sitesi ve
       e-posta kullanarak 14 günlük ücretsiz bir deneme sertifikası alabilirsiniz. Bazı kişisel bilgiler
       sağlamanız gerekir. "Sertifika İmzalama İsteği Oluşturma" başlıklı bölümde açıklandığı gibi üretilen
       CSR'yi web sitesindeki bir forma yapıştırın. Birkaç dakika sonra Verisign size e-posta ile bir sertifika
       gönderir ve siz de bunu anahtar zincirinize aktarırsınız. Tüm süreç 10 dakikadan az sürer. Bu şekilde
       elde edilen ücretsiz sertifika, hiçbir tarayıcı tarafından tanınmayan geçici bir kök sertifika tarafından
       imzalanır, ancak Verisign bu geçici kök sertifikayı doğrudan kendi web sitesinden tarayıcınıza yüklemeniz
       için bir araç da sağlar. Genellikle, sunucunun ilk yapılandırmasını gerçekleştirmek ve genel SSL
       altyapısını test etmek için ücretsiz, geçici sertifika kullanılır. Sunucunun çalışmasından memnun kaldığınızda,
       web sunucunuzun herhangi bir tarayıcı tarafından güvenilmesini sağlayacak "gerçek" bir sertifika satın
       alma zamanı gelmiş demektir.

       Thawte firmasının da http://www.thawte.com/ adresinde benzer, çok samimi bir hizmeti vardır. Erken web
       sunucusu geliştirme ve/veya test işlemleri için yukarıda açıklanan prosedürün tamamını atlayabileceğinizi
       ve yukarıda açıklandığı gibi kendi kendi kendine imzalı kök sertifikanızı üretebileceğinizi unutmayın.
       Hiçbir CA dahil olmaz; hiçbir CSR oluşturulmaz; hiçbir sertifikanın içe aktarılması gerekmez - CertTool
       sizin için bir sertifika üretir ve bunu hemen anahtar zincirinize ekler. Bu seçeneğin, test edeceğiniz
       ve hiçbiri sizin kök sertifikanızı tanımayan çeşitli SSL istemcilerinden destek gerektireceğini unutmayın.

Files

/System/Library/Keychains/X509Anchors Sistem kök sertifika veritabanı /Library/Keychains/System.keychain Sistem Anahtar Zinciri (System Keychain)

See Also

openssl(1)

Apple Computer, Inc. March 19, 2003 CERTTOOL(1)