Kebingungan antara sertifikat yang ditandatangani dan kesalahan: - x509: sertifikat ditandatangani oleh otoritas yang tidak dikenal

Jadi saya sedang mengerjakan homeserver sinapsis matriks.org dan mencoba melakukan federasi.

Saya mendapat sertifikat untuk server rumah saya. Ada 3 file di dalamnya chain.crt(biner),server.crt(non-biner) dan server.key(non-biner).

server.crt telah memulai sertifikat dan server.key memiliki kunci pribadi. Saya membalikkan proksi server rumah saya dengan server web Nginx dan dalam konfigurasi Nginx saya telah mengarahkan sertifikat SSL ke server.crt dan kunci SSL ke server.key.

Masalah yang saya dapatkan di https://federationtester.matrix.org/ apakah ini menunjukkan x509: sertifikat ditandatangani oleh otoritas yang tidak diketahui.

Apakah saya perlu menyertakan chain.crt (file biner) di suatu tempat juga?


person curious_21    schedule 20.11.2019    source sumber


Jawaban (2)


Biasanya merupakan praktik yang baik untuk menyertakan sertifikat perantara dalam konfigurasi TLS Anda. Namun sertifikat biasanya harus divalidasi dengan benar, karena klien biasanya juga memiliki berbagai sertifikat perantara di penyimpanannya dan dapat membangun rantai dengan cara itu.

Apakah sertifikat Anda ditandatangani oleh CA publik? Synapse memerlukan sertifikat tersebut sejak beberapa versi. Sertifikat default mungkin ditandatangani sendiri, kecuali Anda mengonfigurasi klien ACME bawaan untuk mengambilnya dari Let's Encrypt.

Salah satu cara untuk memeriksanya adalah dengan membuka URL federasi di browser Anda dan melihat apakah ada kesalahan validasi.

person lub    schedule 20.11.2019
comment
Sertifikat ditandatangani oleh CA publik thawte. Saya tidak menggunakan ACME bawaan karena saya sudah mendapatkan sertifikat dari CA. - person curious_21; 20.11.2019
comment
Apakah sertifikat perantara chain.crt dan jika itu perantara, lalu bagaimana cara memasukkannya ke server web nginx? - person curious_21; 20.11.2019
comment
Hanya browser yang memiliki sertifikat perantara di tokonya. Hampir semua hal lainnya memerlukan sertifikat rantai yang tepat untuk disiapkan. - person Tulir; 20.11.2019
comment
Ini berfungsi sekarang. Saya menggunakan situs whatsmychaincert.com untuk mendapatkan sertifikat rantai dan menambahkannya. Terima kasih lub dan Tulir - person curious_21; 20.11.2019
comment
@ShreyasPandey Terima kasih telah merekomendasikan situs web itu! Saya terjebak dalam menyiapkan server Matrix saya (Construct, bukan Synapse) selama berhari-hari. - person stommestack; 05.02.2021

nginx menginginkan sertifikat server (daun) dan sertifikat rantai (perantara), keduanya dalam format PEM (yang Anda sebut non-biner) dalam file yang sama tetapi apa yang Anda sebut biner hampir pasti adalah apa yang oleh banyak perangkat lunak disebut DER (yang merupakan pengkodean biner tertentu dari ASN.1, yang digunakan X.509). Jika Anda memiliki OpenSSL yang tersedia (atau mendapatkannya), gunakan

openssl x509 -in chain.binary -inform der -out chain.pem

lalu tambahkan chain.pem ke akhir server.crt; atau Anda dapat melakukannya dalam satu langkah

openssl x509 -in chain.binary -inform der >>server.crt

Jika ini tidak berhasil, mungkin rantai Anda.crt adalah sesuatu yang lebih aneh, seperti PKCS7/CMS dalam biner/DER. Posting hex dump, atau buat file persisnya tersedia di suatu tempat seperti pastebin.

Jika Anda tidak memiliki/mendapatkan OpenSSL, ada alat lain yang dapat digunakan tergantung pada lingkungan Anda. Tentukan sistem operasi Anda dan alat utama apa pun yang ada seperti Java.

person dave_thompson_085    schedule 20.11.2019
comment
Terima kasih atas bantuannya, Dave! Jadi saya menggunakan whatsmychaincert.com situs ini untuk mendapatkan sertifikat rantai dan kemudian menambahkannya di akhir server.crt dan itu berhasil. Hanya ada keraguan sejauh yang saya tahu linux akan membaca file server.crt dari bawah ke atas jadi apakah itu berarti server.crt konten sebelumnya adalah perantara dan sertifikat rantai yang saya dapatkan adalah sertifikat root? Jika tidak, maka yang mana root dan mana yang sertifikat perantara atau akhir? - person curious_21; 20.11.2019
comment
'Linux' tidak membaca file sertifikat sama sekali; beberapa program di Linux dan sistem lain, seperti nginx, juga memilikinya, namun saya tidak tahu mana saja (di mana pun) yang bertuliskan 'bawah ke atas' -- dari mana Anda mendapatkannya? Saya harus melihat apakah nginx melakukan prapemrosesan sebelum memberikannya ke OpenSSL, tetapi paling aman jika Anda memiliki server=leaf=End-Entity first dan chain=intermediate second; Anda tidak perlu root sama sekali. (Server SSL/TLS tidak perlu mengirimkan root karena klien selalu harus sudah memilikinya, meskipun beberapa mengirimkannya jika tidak perlu karena nyaman dan diperbolehkan.) - person dave_thompson_085; 22.11.2019