Bagaimana cara membuat sertifikat SSL yang ditandatangani sendiri?

64

Saya telah menyiapkan SSL di server web saya, sekarang saya perlu dua file:

  • sebuah sertifikat
  • Kunci sertifikat

Bagaimana cara membuat sertifikat yang ditandatangani sendiri untuk tujuan pengujian?

Stefano Palazzo
sumber

Jawaban:

93

Ubuntu, bahkan rasa 'minimal', hadir dengan ssl-certpaket yang sudah diinstal sebelumnya, yang berarti Anda tidak perlu melakukan apa pun.

File yang Anda cari sudah ada di sistem Anda:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Maju:

Jika karena alasan tertentu Anda perlu membuat sertifikat baru, Anda dapat menjalankannya

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Jika Anda ingin mengubah tanggal kedaluwarsa sertifikat Anda, Anda dapat memanipulasi skrip make-ssl-cert di /usr/sbin/make-ssl-cert. Sekitar seperti 124 ada garis yang mirip dengan ini:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Di mana Anda dapat mengubah tanggal kedaluwarsa dengan menambahkan -daysargumen:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Opsi lainnya dapat ditemukan di halaman manualreq .

Stefano Palazzo
sumber
10
ubuntu-server 12.04 (AMI cloud image) tidak memiliki ssl-cert yang diinstal secara default. Tetapi begitu ssl-cert diinstal - /etc/ssl/certs/ssl-cert-snakeoil.pem tersedia secara otomatis.
Stann
make-ssl-cert membutuhkan panjang kunci (dan pengaturan lainnya) untuk digunakan /usr/share/ssl-cert/ssleay.cnf.
Tim Smith
Dalam mencoba menguji situs web dalam instance VM gelandangan lokal, saya ingin Google Chrome bertindak seolah-olah itu adalah sertifikat yang benar-benar normal. Saya harus terlebih dahulu mengatur nama host VM agar sesuai dengan url pengujian (mis. www.test.mydomain.com) Menggunakan hostnameperintah di VM CLI. Kemudian membuat ulang kunci seperti yang Anda sarankan, dengan --force-overwrite, Nama Umum (CN) kunci kemudian cocok dengan url pengujian. Akhirnya, pada mesin host, memasang kunci sebagai Otoritas Sertifikat Akar Tepercaya (di Pengaturan / Tingkat Lanjut Chrome) memberi saya bilah alamat hijau yang didambakan.
Buttle Butkus
1
sertifikat saya yang berumur 9 tahun berhenti bekerja dengan upgrade saya ke debian 10, jadi make-ssl-certperintah itu menyelamatkan saya!
Jayen
23

Seperti yang telah disebutkan, Ubuntu Server dilengkapi dengan alat yang diperlukan. Tergantung pada versi server Anda, Anda harus mencari dokumentasi khusus . Saya akan mencoba merangkum proses pembuatan sertifikat yang ditandatangani sendiri oleh LTS saat ini (12.04) .

Pertama, Anda menghasilkan kunci untuk Permintaan Penandatanganan Sertifikat (CSR):

openssl genrsa -des3 -out server.key 2048

Terserah Anda untuk memasukkan kata sandi atau tidak. Jika ya, setiap kali Anda memulai layanan menggunakan sertifikat itu, Anda harus memberikan frasa sandi. Otoh Anda dapat membuat kunci "tidak aman" tanpa frasa sandi dari yang aman:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

Dan sekarang Anda akan membuat CSR dari kuncinya. Dengan CSR dan kunci, sertifikat yang ditandatangani sendiri dapat dihasilkan:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Langkah terakhir terdiri dari menginstal sertifikat dan kunci, di Debian / Ubuntu biasanya di /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

Dan akhirnya aplikasi yang menggunakan sertifikat / kunci harus dikonfigurasi sesuai.

nietonfir
sumber