Hasilkan sertifikat SSL yang ditandatangani sendiri untuk apache

10

Saya ingin membuat sertifikat yang ditandatangani sendiri untuk situs web. Sertifikat lama berakhir beberapa hari yang lalu. Ada lebih dari satu NameVirtualHosts yang dihosting di sistem. Perintah yang saya gunakan untuk membuat sertifikat diambil dari satu situs web tutorial dan adalah:

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr 
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Setelah ini dalam file ssl.conf saya tentukan di bagian VirtualHost bersama dengan pengaturan lama yang dilakukan oleh admin lain

SSLEngine on
SSLCertificateFile <full_path>/server.crt
SSLCertificateKeyFile <full_path>/server.key

Saat memulai server saya mendapatkan pesan berikut dalam file log dan server gagal memulai.

Dalam pesan file error_log adalah

 [Mon Jun 01 23:52:46 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

Dalam file file ssl_error_log adalah

 [Mon Jun 01 23:52:46 2009] [error] Init: Private key not found
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218710120 error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218734605 error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib

Saya akan sangat menghargai jika ada yang bisa menjelaskan cara mengatasi ini. Saya telah mencoba beberapa situs web tutorial lainnya tentang sertifikat SSL yang ditandatangani sendiri tetapi tidak ada langkah-langkah yang mereka sebutkan yang berfungsi.

Saurabh Barjatiya
sumber

Jawaban:

21

Gunakan liner satu ini untuk menghasilkan sertifikat dan memasukkan satu file

openssl req -new -x509 -days 999 -nodes -out apache.pem -keyout apache.pem

Maka satu-satunya konfigurasi yang Anda butuhkan adalah

SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
hayalci
sumber
maksud Anda tambahkan baris di atas sslengine dan sslcertificatefile / etc / ssh
Rajat
ini untuk konfigurasi apache, bukan ssh.
hayalci
1
Perintah itu akan membiarkan kunci privat di hapus pada sistem file, berbeda dengan perintah asli OP. Menghilangkan -nodesopsi mengenkripsi kunci menggunakan Triple-DES. (Frasa sandi kunci tentu saja harus disediakan setiap kali server dimulai.) reqPerintah OpenSSL tidak mendukung menghasilkan kunci yang dienkripsi lebih kuat, tetapi dapat menggunakan kunci yang dienkripsi kuat yang dihasilkan sebelumnya.
Calrion
4

Ini mungkin terlihat agak sepele, tetapi periksa izin pada file .key Anda

Jeff Hengesbach
sumber
+1 Terkadang hal-hal sepele adalah yang paling sedikit dipikirkan.
Burkhard
0

Anda dapat menggunakan openssl req -newkey rsa:1024 -keyout privkey.pemuntuk menyimpan kunci SSL seperti yang dihasilkan, jika generasi kunci tidak tepat.

davenpcj
sumber