Bagaimana Anda memperbaiki rantai SSL yang tidak lengkap

29

Saya telah menginstal sertifikat Go Daddy SSL, dan berfungsi dengan baik di mana saja kecuali Android.

https://www.ssllabs.com/ssltest/analyze.html mengatakan rantai tersebut tidak lengkap, dan saya membaca tentang stack overflow bahwa rantai SSL dengan urutan yang salah akan gagal di Android.

Tapi bagaimana saya mengaturnya? Di Server saya? Sertifikasi SSL sendiri perlu direkrut? Pindahkan sesuatu di FTP?

Jon
sumber

Jawaban:

19

Menindaklanjuti jawaban zakjan, saya punya masalah ketika saya mencoba menggunakan jquery untuk melakukan permintaan AJAX di server saya yang baru aman, di tampilan web android. Ini berfungsi di browser, tetapi tidak di aplikasi saya.

Saya menggunakan situs ini: https://certificatechain.io/

Saya menempelkan teks dari file .crt yang saya tandatangani dan saya dapatkan kembali dari Comodo (positiveSSL), dan itu memberi saya kembali sebuah gabungan dari semua yang saya butuhkan. Saya menyimpannya sebagai domain saya + "chain.crt" (lihat di bawah)

Kemudian, di konfigurasi apache saya, saya memasukkan sesuatu seperti ini untuk host virtual tertentu:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Setelah itu, tampilan web aplikasi Android saya tidak memiliki masalah menggunakan ajax untuk POST ke server saya. Saya mencobanya di 2 perangkat dunia nyata, satu menjalankan 2.3.4, satu menjalankan 4.something. Dan pada emulator berjalan 2.3. Semua berhasil.

Saya harap ini membantu.

Richard
sumber
1
Kunci bagi saya adalah menambahkan SSLCACertificateFilearahan dan mengarahkannya ke file CA yang diberikan otoritas saya kepada saya. Ini tidak akan berhasil jika saya hanya menggabungkan sertifikat lain ke file sertifikat saya.
Alex W
Dalam apache lama SSLCertificateChainFile bisa digunakan sebagai ganti SSLCACertificateFile (kalau-kalau Anda mencari kunci ini di konfigurasi Anda dan tidak dapat menemukannya).
dr0i
Luar biasa, tetapi balasan @Richard menggunakan situs certificatechain.io dan situs tersebut mengatakan "... terinspirasi oleh cert-chain-resolver oleh Jan Žák", yang menjawab pertanyaan ini di sini: superuser.com/a/866523/92500 , terima kasih @zakjan!
Andrés Morales
Itu SSLCACertificateFileadalah garis yang saya lewatkan. Awalnya saya menganggap CA saya terlalu baru karena SSL berfungsi ketika diminta dari beberapa browser / OS, tetapi tidak yang lain. Menggunakan decoder.link/sslchecker membantu mengklarifikasi bahwa konfigurasi saya salah, dan jawaban ini sudah diperbaiki. Terima kasih!!
josephdpurcell
9

Rantai itu dalam file crt, bahwa SSL asli berfungsi.

Untuk GoDaddy ada sertifikat ke-2 - gd_bundle.crt

Salin info ini dan tambahkan ke crt yang diinstal di server.

Jadi crt asli di server memiliki 1 sertifikat, dan setelah itu akan memiliki 3 pada file yang sama. Ini rantai.

Saya masih punya jangkar dalam masalah rantai di ssllabs.com tapi ini bukan masalah, hanya pilihan untuk keluar atau masuk - menurut - /security/24561/ssltest-chain-issues -contains-anchor / 24566 # 24566

Jon
sumber
2
Untuk menghilangkan masalah berantai, hapus sertifikat terakhir dari gd_bundle.crt
sanmai
7

Anda dapat memecahkan masalah rantai sertifikat yang tidak lengkap secara manual dengan menggabungkan semua sertifikat dari sertifikat ke sertifikat akar tepercaya (eksklusif, dalam urutan ini), untuk mencegah masalah tersebut. Catatan, sertifikat root tepercaya seharusnya tidak ada di sana, karena sudah termasuk dalam penyimpanan sertifikat root sistem.

Anda harus dapat mengambil sertifikat perantara dari penerbit dan menyatukannya sendiri. Btw, saya telah menulis skrip untuk mengotomatisasi prosedur, dibutuhkan sertifikat untuk menghasilkan output dari sertifikat yang dirantai dengan benar. https://github.com/zakjan/cert-chain-resolver

zakjan
sumber
Ini terdengar seperti solusi yang hanya "mengelabui" mesin lokal agar berpikir bahwa sertifikat telah dipasang dengan benar.
Alex W
Nggak. Bundel sertifikat keluaran seharusnya diunggah ke server, yang mengirimkan konten situs web. Setiap klien akan menerima sertifikat dengan perantaranya.
zakjan