Kesalahan SSL Apache: Kunci pribadi tidak ditemukan

8

Saya menjalankan apache di Ubuntu 14.04 dan mencoba menerapkan SSL. Bantuan apa pun akan sangat dihargai.

default-ssl.conf memiliki:

SSLCertificateFile      /etc/apache2/ssl/domain.crt 
SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Ketika saya me-restart apache, pesan kesalahan di /var/log/apache2/error.log adalah:

[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found
[Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$
[Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more inf$
mikesynan
sumber
bagaimana Anda memecahkan masalah ini?
Srinivas

Jawaban:

6

PERINGATAN: Jangan pernah memposting kunci pribadi Anda di internet. Jangan bahkan menyalinnya ke komputer lain, workstation dll. Itu harus dijaga kerahasiaannya.

SSLCertificateKeyFile membutuhkan Kunci Pribadi. Kunci ini biasanya dihasilkan sebelum CSR atau pada saat yang sama. Cari file yang dimulai dengan baris yang berisi:BEGIN PRIVATE KEY

CSR (permintaan penandatanganan sertifikat) diperlukan hanya ketika Anda meminta untuk menandatangani sertifikat. Setelah itu Anda bisa membuangnya.

Jika Anda kehilangan Kunci Privat Anda perlu membuat Kunci Privat baru, kemudian menghasilkan CSR baru dan meminta CA (otoritas sertifikat) untuk menandatangani CSR lagi.

Mircea Vutcovici
sumber
1

Inilah masalahnya:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Anda menempatkan file permintaan penandatanganan sertifikat (CSR) di sini karena kesalahan. Anda harus meletakkan di sana file kunci pribadi yang Anda gunakan untuk menghasilkan CSR. File kunci pribadi itu tidak boleh dilindungi kata sandi, jika tidak, Anda harus mengetikkan kata sandi setiap kali Anda memulai kembali Apache.

Untuk manfaat generasi yang akan datang, berikut adalah ringkasan singkat tentang cara menghasilkan CSR-s dengan OpenSSL (tutorial yang baik tersedia dari dokumentasi Ubuntu ):

1) Hasilkan kunci server:

openssl genrsa -des3 -out server.key 2048

Ini mengharuskan Anda menentukan kata sandi.

2) Membuat kunci pribadi tanpa kata sandi, masukkan kata sandi yang Anda gunakan di atas saat diminta:

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.SECURE
mv server.key.insecure server.key

3) Hasilkan CSR dengan kunci pribadi tanpa kata sandi Anda:

openssl req -new -key server.key -out mydomain.org.csr

di mana "mydomain.org" bisa menjadi domain Anda. Anda harus menjawab beberapa pertanyaan secara interaktif. Setelah selesai, Anda mengirim mydomain.org.csrfile ke otoritas sertifikat Anda. Anda akan mendapatkan kembali *.crtfile atau *.pemfile. Mari kita asumsikan mereka memberi Anda mydomain.org.crt. Instal sebagai sertifikat Anda dan file kunci tanpa kata sandi sebagai kunci Anda (lokasi berlaku untuk Ubuntu 14.04, mereka mungkin berada di tempat lain di sistem lain, periksa dokumentasi Apache2):

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

Dan akhirnya edit konfigurasi Apache2 (bisa jadi default-ssl.conf):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

Semoga ini membantu.

Laryx Decidua
sumber
1

Saya tahu seseorang telah menjawab pertanyaan ini, tetapi saya ingin orang lain tahu apa yang terjadi pada saya ketika saya mendapatkan kesalahan ini.

Dalam kasus saya, saya keliru memiliki SSLCertificateFile daripada SSLCertificateChainFile untuk bundel sertifikat saya. Kesalahan ini terus muncul dan membuat saya loop. Saya terus berpikir kunci pribadi saya salah.

pengguna1283449
sumber
0

Saya tahu posting ini sudah tua, tetapi saya pikir saya harus menambahkan lebih banyak karena ini adalah tautan pertama di pencarian google tentang kesalahan - "Init: Kunci pribadi tidak ditemukan"

Saya pernah melihat ini terjadi sebelumnya dan ternyata itu adalah kunci pribadi yang buruk. Saya menggunakan strace untuk melacak apache kunci pribadi terakhir yang mencoba memuat. Setelah saya menghapusnya dari direktori ssl dan httpd.conf, Apache memulai kembali tanpa masalah.

Kunci SSL Buruk: -rw-r ----- 1 root 754974732 1.7K 31 Mei 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Perintah yang digunakan untuk melacak kunci buruk: strace -f -v -s 1024 -o strace.log layanan httpd start

Lingkungan: OS: CentSO 6.9 Panel Kontrol: cPanel 11.64 Apache Versi 2.2

tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.

Saya harap ini membantu!

m33k
sumber
Selamat Datang di Kesalahan Server. Pos Anda dapat menggunakan pemformatan yang ditingkatkan. Apakah Kunci SSL Buruk: ... paragraf mungkin kutipan? Juga, TL; DR Anda tidak perlu diformat sebagai code. Terima kasih telah berkontribusi.
Saya katakan Reinstate Monica
0

Saya memutar roda saya yang satu ini sebentar, tetapi pastikan Anda memiliki file kunci pribadi yang lengkap. Ternyata saya memiliki beberapa garis yang hilang dari tambang.

Perintah untuk memeriksa kunci pribadi Anda adalah:

openssl rsa -in /etc/httpd/certs/server.key -check

ganti /etc/httpd/certs/server.key dengan path lengkap ke kunci pribadi server Anda dan jika semuanya baik Anda akan melihat:

RSA key ok

Semoga ini bisa membantu seseorang dan btw, server saya adalah CentOS 7.6 dengan Apache / 2.4.6

jbrahy
sumber