Menambahkan sertifikat yang ditandatangani sendiri ke "daftar tepercaya"


88

Saya telah menghasilkan sertifikat yang ditandatangani sendiri untuk server build saya dan saya ingin mempercayai sertifikat itu secara global pada mesin saya, karena saya sendiri yang membuat kunci dan saya muak melihat peringatan.

Saya di Ubuntu 12,04. Bagaimana saya bisa mengambil sertifikat dan mempercayainya secara global sehingga peramban (Google Chrome), utilitas CLI (wget, curl), dan bahasa pemrograman (Python, Java, dll.) Mempercayai koneksi ke https://mysite.com tanpa meminta pertanyaan?


Semua TLS harus di-vektor melalui OpenSSL, jadi itulah tempat untuk mencari dokumentasi. Dalam hal ini: gagravarr.org/writing/openssl-certs/… terlihat berguna.
msw

Jawaban:


88

Jawaban sederhana untuk ini adalah bahwa hampir setiap aplikasi akan menanganinya secara berbeda.

Juga OpenSSL dan GNUTLS (perpustakaan pemrosesan sertifikat yang paling banyak digunakan untuk menangani sertifikat yang ditandatangani) berperilaku berbeda dalam perlakuan mereka terhadap sertifikat yang juga memperumit masalah. Juga sistem operasi menggunakan mekanisme berbeda untuk memanfaatkan "root CA" yang digunakan oleh sebagian besar situs web.

Selain itu, memberi Debian sebagai contoh. Instal ca-certificatespaket:

apt-get install ca-certificates

Anda kemudian menyalin setengah publik dari sertifikat CA yang tidak tepercaya (yang Anda gunakan untuk menandatangani CSR) ke direktori sertifikat CA (sebagai root):

cp cacert.pem /usr/share/ca-certificates

Dan mendapatkannya untuk membangun kembali direktori dengan sertifikat Anda, jalankan sebagai root:

dpkg-reconfigure ca-certificates

dan pilih askopsi, gulir ke sertifikat Anda, tandai untuk dimasukkan dan pilih ok.

Sebagian besar browser menggunakan database CA mereka sendiri, dan alat-alat seperti certutilharus digunakan untuk memodifikasi konten mereka (pada Debian yang disediakan oleh libnss3-toolspaket). Misalnya, dengan Chrome Anda menjalankan sesuatu di sepanjang baris:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox akan memungkinkan Anda untuk mencari ke sertifikat pada disk, mengenalinya file sertifikat dan kemudian memungkinkan Anda untuk mengimpornya ke daftar Root CA.

Sebagian besar perintah lain seperti curltake switch baris perintah yang dapat Anda gunakan untuk menunjuk pada CA Anda,

 curl --cacert  /path/to/CA/cert.file https://...

atau lepaskan validasi SSL sama sekali

 curl --insecure https://...

Selebihnya akan memerlukan penyelidikan individu jika ca-certificatestrik sejenisnya tidak mengurutkannya untuk aplikasi tertentu.


Juga, seperti disebutkan di sini , menambahkan sertifikat CA untuk Java juga merupakan masalah yang terpisah.
Naftuli Kay

2
Setelah menyalin sertifikat ke / usr / share / ca-sertifikat, saya tidak bisa melihatnya dalam dpkg-reconfigure ca-certificatesdaftar. Apa yang saya lakukan salah?
Georges Dupéron

19
@ GeorgesDupéron Itu terjadi pada saya. Saya mengatasinya dengan mengganti nama sertifikat dari whatever.pemmenjadi whatever.crt.
Hello World


2
FYI, saya punya file cert bernama .cer, dan itu tidak berhasil. Saya harus mengganti nama .crtagar bisa dikenali.
Tri Nguyen

54

Pendekatan Non Interaktif

Untuk digunakan dalam konteks non-interaktif (misalnya resep koki), Anda dapat menggunakan urutan berikut.

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Diuji dan bekerja pada debian 5/6 & Ubuntu 14.04.
  • Untuk informasi lebih lanjut, lihat man update-ca-certificates

Metode ini lebih disukai daripada metode @ Drav, karena /usr/share/biasanya disediakan untuk file yang ditambahkan oleh OS / apt-get.


4
Lebih baik menyalin file /usr/local/share/ca-certificates/seperti yang disebutkan di halaman manual
ortang

3
FYI si A harus .crt, saya menemukan .certklaim itu ditambahkan tetapi tidak membantu
KCD

6

Pada Fedora 23, tambahkan file .pem atau .der ke /etc/pki/ca-trust/source/anchors/dan jalankan sudo update-ca-trust extract.

Lihat man update-ca-trustdetailnya, misalnya apakah akan menggunakan / etc atau / usr.


4

Dalam centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Kapan saya openssl connectharus menentukan folder / jangkar ini? Saya masih mendapatkan kesalahan "self signed certs
Janac Meena

2

Pendekatan Non Interaktif (Oct'18)
untuk sistem berbasis debian terbaru

Ada perbedaan antara menambahkan sertifikat ke toko host dan mengaktifkannya sehingga aplikasi benar-benar memanfaatkannya. Sertifikat yang ada di toko belum tentu digunakan (walaupun saya harus mengakui bahwa masih banyak paket yang salah melakukannya)
Ini dapat membingungkan ketika Anda menyiapkan paket yang mempertimbangkan /etc/ca-certificate.confdan hanya menolak untuk menggunakan sertifikat Anda meskipun telah memiliki telah ditambahkan tanpa kesalahan. Anda harus memberi tahu update-ca-certificatessecara eksplisit untuk (tidak hanya menyalin tetapi) mengaktifkan sertifikat dengan menambahkannya ke /etc/ca-certificate.confatau /etc/ca-certificate/update.d.

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

Sekarang ini menjadi membingungkan karena ada cara untuk secara implisit mempercayai sertifikat dengan menggunakan jalur yang berbeda:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.