membuka sertifikat CA yang tidak valid

8

Saya sedang menyiapkan server-ke-server OpenVPN dengan infrastruktur PKI, dan tidak dapat membuatnya berfungsi. Saya curiga ada sesuatu dalam rantai sertifikat, tetapi saya bingung menjelaskan caranya. Saya memiliki Root CA offline, dan hierarki sertifikat. CA dikelola secara eksternal oleh produk yang disebut EJBCA. Secara bergambar rantai terlihat seperti ini (dengan nama berubah):

RootCA -> OnlineSubCA -> SubCA1 -> VPNCA

Saya menandatangani sertifikat server dan klien dengan CA VPNCA, dan memiliki rantai sertifikat pada sistem tersebut. Ketika debugging OpenVPN saya mencoba menggunakan "openssl s_server" dan s_client ", membuat saya percaya bahwa itu adalah rantai CA. Khususnya di server:

openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5

dan pada klien

openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5

server membalas, antara lain:

depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = [email protected]
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = [email protected]
verify return:1

dan saya benar-benar bingung untuk menjelaskan bagaimana atau mengapa ini terjadi. OpenVPN juga gagal dengan kesalahan serupa, dari klien:

VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA

Saya menjalankan OpenVPN 2.2.1 dan OpenSSL 1.0.1 di Ubuntu 12.04. Waktu sinkron pada keduanya.

Saya bingung bagaimana melanjutkan lebih jauh. Setiap ide / saran akan sangat dihargai.

Michael Hart
sumber

Jawaban:

16

Ini adalah masalah dengan ekstensi X509v3. Sertifikat modern ditandatangani dengan cara yang menunjukkan penggunaan yang disetujui untuk jenis sertifikat itu. Ini dapat ditampilkan dengan memasukkan sertifikat ke dalam openssl x509 -text, atau menentukan jalur file dengan -in.

Dalam kasus Anda, pesan kesalahan ini menunjukkan bahwa sertifikat yang Anda tentukan bukan sertifikat CA. (petunjuk terbesar adalah "tujuan sertifikat yang tidak didukung") Menggunakan perintah di atas, tampilkan info teks dari sertifikat. Sertifikat CA yang valid akan berbunyi seperti ini:

        X509v3 Basic Constraints:
            CA:TRUE

Sertifikat non-CA akan menampilkan ini sebagai gantinya:

        X509v3 Basic Constraints:
            CA:FALSE

Anda mungkin mendapatkan file Anda campur aduk, itu hal yang agak mudah dilakukan ketika memindahkan file. openssl x509akan menyinari kaca pembesar pada apa isi sertifikat yang sebenarnya.

Andrew B
sumber
Itu memang masalahnya, memeriksa sertifikat 2 menunjukkan "CA: FALSE". Tampaknya setup seperti itu di EJBCA yang merupakan kesalahan, saya mungkin harus membuatnya kembali. Andrew terima kasih!
Michael Hart
Senang itu membantu. :)
Andrew B
7
Selain itu, Anda akan mendapatkan 26 / tujuan sertifikat yang tidak didukung jika Anda memiliki "kritis" sebagai kendala dasar tetapi sertifikat Anda tidak ditandatangani / dipercayai oleh salah satu otoritas yang berwenang (berlari ke dalam ini mencoba menggunakan diri menandatangani root CA)
Zerkz