Bir sertifika yetkilisini (CA) Ubuntu'ya nasıl eklersiniz?


166

Çalışmalarım, sertifikalarımız için ödeme yapmadan işimizin farklı yönlerini güvenli bir şekilde ele almak için kendi sertifika yetkililerini (CA) düzenlemeye karar verdi .

  • Kriptografik olarak e-postaları imzala
  • E-posta içeriğini şifrele
  • IRC müşteri sertifikası tabanlı şirket gibi şeylere erişin .
  • Eski çalışanların anahtarlarını otomatik olarak iptal et

Bana bir .pemdosya gönderdiler ve Ubuntu kurulumuma nasıl ekleyeceğimi bilmiyorum. Gönderilen talimatlar şuydu: "Mac'e çift tıklamak, onu yüklemelidir." 

Nasıl ilerlerim? Ben bir şeyler yapmak gerekiyor mu OpenSSL bir yaratmak için .key, .csrya da .crtdosya mi?


2
"Gönderilen talimatlar şunlardı: \" Bir Mac’e çift tıklamak, onu yüklemeli. \ "" günümü yaptı
mzoll

Yanıtlar:


231

CA Yükleme

PEM biçimde sertifika (vardır biçimini kopyalayıp ----BEGIN CERTIFICATE----içine o) /usr/local/share/ca-certificatesve bir ile adlandırın .crtdosya uzantısı.

O zaman koş sudo update-ca-certificates.

Uyarılar: Bu yükleme yalnızca bu sertifika deposunu kullanan ürünleri etkiler. Bazı ürünler diğer sertifika depolarını kullanabilir; Bu ürünleri kullanıyorsanız, bu CA sertifikasını diğer sertifika depolarına da eklemeniz gerekir. ( Firefox Talimatları , Chrome Talimatları , Java Talimatları )

CA'yı Test Etme

Bunun işe yarayıp yaramadığını, daha önce eklediğiniz sertifikayı arayarak doğrulayabilirsiniz /etc/ssl/certs/ca-certificates.crt(ki bu, güvenilen tüm CA'larınızın birlikte bir araya getirildiği uzun bir listedir).

OpenSSL'nin s_client'ini, henüz yüklediğiniz CA tarafından imzalanmış bir sertifika kullandığını bildiğiniz bir sunucuya bağlanmaya çalışarak da kullanabilirsiniz.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

Aranacak ilk şey, çıktının tepesine yakın olan sertifika zinciridir. Bu CA'yı veren kişi olarak göstermelidir (yanında i:). Bu, sunucunun kurmakta olduğunuz CA tarafından imzalanmış bir sertifika sunduğunu bildirir.

İkincisi, verify return codeayarlanması gereken ucu arayın 0 (ok).


3
bu gerçekten işe yarıyor
Sabareesh Kkanan

1
Firefox / chrome'un varsayılan cert deposunu kullanmadığını belirttiğiniz için teşekkür ederiz.
Tim Strijdhorst,

4
Güncelleme-ca-sertifikalarının çok titiz olabileceğini unutmayın (muhtemelen tasarım gereği). mycert.pem.crt işe yaramadı ama mycert.crt işe yaramadı. Ayrıca / usr / local / share / ca-sertifikaları / / usr / share / ca-sertifikaları olması gerektiğini düşünüyorum (/etc/ca-certificates.conf.
labirent

2
crtEklenti yorumu için teşekkür ederim, bu işi benim için almanın sırrı certbuydu, uzatma içeren bir sertifika verildi ve neden hiçbir şeyin çalışmadığı konusunda kafam karıştı.
Ransom Briggs,

3
Bir uyarı: s_clientvarsayılan olarak SNI göndermez ve özellikle farklı sunuculara sahip sanal ana bilgisayarları / siteleri destekliyorsa sunucunun SNI'ya ihtiyacı olabilir; bu durum için ekleyin -servername foo.whatever.com. Ya da bir web sunucusu kullanıyorsa (modern versiyonları) curlveya wgetotomatik olarak SNI yapan.
dave_thompson_085

66

adam güncelleme-ca-sertifikaları :

update-ca-certificates  is  a  program  that  updates   the   directory
/etc/ssl/certs to hold SSL certificates and generates certificates.crt,
a concatenated single-file list of certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname
of  a  CA  certificate  under /usr/share/ca-certificates that should be
trusted.  Lines that begin with "#" are comment lines and thus ignored.
Lines  that  begin with "!" are deselected, causing the deactivation of
the CA certificate in question.

Furthermore   all   certificates   found   below   /usr/local/share/ca-
certificates are also included as implicitly trusted.

Yukarıdakilerden, yerel sertifika dosyalarını güvenilen mağazaya almak için tercih edilen yolun onları koymak /usr/local/share/ca-certificatesve çalıştırmak olduğuna inanıyorum update-ca-certificates. /etc/ssl/certsDoğrudan dokunmanıza gerek yoktur .


23
Sertifikaları .crt uzantılı olarak adlandırmak da gerekli görünüyordu.
phyzome

@Phyzome notu için teşekkürler - aksi takdirde benim sertifika ekleyemezdim.
Seiyria

1
--freshÇalışması için eklemek zorunda kaldım. egupdate-ca-certificates --fresh
Elijah Lynn

15

Aynı sorunu yaşadım ve .pemdosyayı kopyalayıp /usr/local/share/ca-certificatesyeniden adlandırdım .crt. .cerDosya kolayca dönüştürülebilir .pemEğer yoksa, örneğin, openssl ile, .pem.

Dosyayı kopyaladıktan sonra yürütmeniz gerekir sudo update-ca-certificates.


openssl x509 -inform DER -in certificate.cer -out certificate.crt
webwurst

14

Diğer cevaplar update-ca-certificates, sistem sertifika deposundan okunan uygulamalar için doğrudur. Chrome ve Firefox ve muhtemelen diğerleri için, sertifikanın Mozilla NSS kütüphanesinin arka ucu olan nssdb'ye yerleştirilmesi gerekir.

Gönderen https://code.google.com/p/chromium/wiki/LinuxCertManagement :

Örneğin, SSL sunucu sertifikaları vermek için bir kök CA sertifikasına güvenmek için,

certutil -d sql: $ HOME / .pki / nssdb -A - t "C ,," -n <sertifika takma adı> -i <sertifika dosya adı>

Nerede <certificate nickname>keyfi olduğunu ve <certificate filename>sizin .pem veya .crt dosyasıdır.

Diğer faydalı referanslar:


Teşekkürler. Chrome 53.0.2785.143 için Ubuntu 16.04 üzerinde çalışıyor, ancak Firefox 49, ayrı bir mağaza db'sine sahip görünüyor ve bundan daha fazlası için eklenmeli: tercihler # advanced [Sertifikaları Görüntüle] -> [Yetkililer] -> [İçe Aktar] firefox cert mağazası hakkında daha fazlası. askubuntu.com/a/248326/535154
mauron85

Bu arada, Chrome'un ilk çalıştırılmasından önce (yani .pki / dir hala eksikken) bir sertifika yüklemek istiyorsanız, önce nssdb dosyasını oluşturmalısınız:mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password
akavel

Chrome ve Firefox'un sistem sertifika deposundan okumasını sağlamanın bir yolu vardır. Cevabımı gör: superuser.com/a/1312419/506107
wheeler

11

Debian'ı temel alan yeni sürümler için çalıştırmanız gerekebilir:

sudo dpkg-reconfigure ca-certificates

NOT: sudo dpkg-reconfigure ca-sertifikaları dahili olarak update-ca-sertifikalarını çağırır

Elbette bunlardan herhangi birini yapmadan önce sertifikayı (.crt dosyası) / usr / share / ca-sertifikalarına kopyalamanız gerekecek :)


4

Dwmw2'nin cevabını temel alarak, sistem güven deposunu kullanmak için NSS kullanan uygulamalara sertifika yönetimi için söyleyebilirsiniz.

libnss3varsayılan olarak, salt okunur bir kök CA sertifikası ( libnssckbi.so) kümesiyle birlikte gönderilir , bu nedenle çoğu zaman bunları kendiniz içinde bulunan yerel kullanıcı güven deposuna kendiniz eklemeniz gerekir $HOME/.pki/nssdb. p11-kitiçinde libnssckbi.sokurulu sistem genelindeki kök sertifikalara bir adaptör görevi gören bunun için bir değiştirme seçeneği sunar /etc/ssl/certs.

Düzenle:

Daha versiyonları var gibi libnssckbi.sosadece orada daha out libnss3. Aşağıdakiler hepsini bulmak için bir komut dosyasıdır, yedekler ve bunları bağlantılara değiştirir p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Orijinal talimatlar:

Bunu yapmak için, kurun p11-kitve libnss3(önceden eğitilmemişlerse):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Ardından aşağıdakiler libnssckbi.sotarafından sağlanan mevcut olanı yedekleyin libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Son olarak, sembolik bağlantıyı oluşturun:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

İşe yaradığını onaylamak için koşabilirsiniz ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.sove bağlantıyı göstermelidir:

lrwxrwxrwx 1 root root 49 Apr  9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Şimdi, kullanarak CA deposuna bir sertifika eklerseniz update-ca-certificates, bu sertifikalar artık libnss3Chrome gibi NSS ( ) kullanan uygulamalarda kullanılabilir .


1

Belirtildiği gibi, NSS kullanan çeşitli uygulamaların kendi sertifika deposu vardır. İşler Ubuntu'da dururken, certutilher bir uygulama için CA'larınızı her kullanıcı için eklemek üzere manuel olarak kullanmanız gerekir.

Fedora gibi diğer dağıtımlarda, bu tür şeyler sadece Works ™ ve otomatik olarak yüklediğiniz CA'lara güvenmeyen uygulamalara karşı bir hata vermelisiniz update-ca-trust.

Bunu, p11-kit-modulespaketi yükleyerek ve sonra NSS yerleşik güven kökleri modülünü değiştirerek p11-kit-trust.soörneğin sembolik bir bağlantı kurarak düzeltebilirsiniz /usr/lib/firefox/libnssckbi.so./usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

O zaman olacaktır sistemin yapılandırılmış güven kökleri, bazı kodlanmış olanları olsun. Ubuntu'nun , libnssckbi.so kütüphanesinin farklı kodlu kopyalarını kodlanmış güven kökleriyle birlikte gönderdiğini ve hepsinin yerini alması gerektiğini unutmayın!

bakınız https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285


Ben yaptım sudo find / -type f -name "libnssckbi.so", o bulundu libnssckbi.soüç yerde: /usr/lib/thunderbird/, /usr/lib/firefox/, ve /usr/lib/x86_64-linux-gnu/nss/. Yani libnssckbi.so, bu üç klasörün de içine bağlanmam gerektiğini p11-kit-trust.somi söylüyorsun ?
wheeler

1
Tamam, sadece bağlama doğruladı /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so> - /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.sobir cazibe gibi çalıştı. Bir sertifika ekleyebildim /usr/local/share/ca-certificates, çalıştırdım sudo update-ca-certificatesve PRESTO, Chrome kendinden imzalı sertifikaları kabul etmeye başladı.
Wheeler

0

Buraya eklemek için cidden aptalca bir cevap, ama 2 saat boyunca Linux'taki certutillerle gidip geldim ... Her şeyin doğru olduğundan emindim:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy                                                     CT,, 
rootCA                                                       CT,, 
myasos                                                       CT,, 

Fakat yine de, kromda hiçbir şey çalışmıyordu. Her şeyi denedim, sonunda ...

Restarting Chrome

Takip ettikten sonra başarımın anahtarı oldu: Steven Monday'nin tavsiyesi

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.