Pertanyaan cURL SSL menghubungkan kesalahan 35 dengan kesalahan NSS -5961


Saya memiliki remote Windows 7 server yang hanya dapat diakses melalui HTTPS di port 768. Server menggunakan sertifikat yang ditandatangani dari CA yang terdaftar di server CentOS lokal.

Setiap kali saya mencoba mengakses server jauh melalui cURL menggunakan perintah berikut, kesalahannya sebagai berikut:

[usr@serv certs]# curl -3 -v https://1.1.1.1:768/user/login
* About to connect() to 1.1.1.1 port 768 (#0)
*   Trying 1.1.1.1... connected
* Connected to 1.1.1.1 (1.1.1.1) port 768 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -5961
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error

(Perhatikan bahwa alamat IP telah disembunyikan karena alasan keamanan).

Saya menjalankan versi cURL berikut:

curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2

Perlu dicatat bahwa ini bekerja pada dua server jauh lainnya yang sama-sama menjalankan Windows XP daripada windows 7.

Saya telah mencoba memaksa cURL untuk menggunakan SSLv3 (menggunakan flag -3 dan flag -SSLv3) tanpa keberhasilan.


Saya baru saja menguji perintah CURL yang sama pada Raspberry Pi menjalankan Raspbian dan telah berhasil terhubung. Karena itu saya yakin ini mungkin menjadi masalah dengan versi cURL yang digunakan pada server CentOS. Raspberry pi menjalankan versi berikut:

curl 7.26.0 (arm-unknown-linux-gnueabihf) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

16
2018-02-19 17:03


asal


Jawaban:


curl dengan NSS membaca sertifikat Root CA secara default dari "/etc/pki/tls/certs/ca-bundle.crt" dalam format PEM.

* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt

Anda dapat menentukan sertifikat CA lain (Anda) (atau bundel di NSS DB Bersama) dengan opsi curl --cacert dengan file PEM yang berisi sertifikat CA (s).

Jika Anda tidak menentukan sertifikat secara manual dengan --cacert pilihan, NSS mencoba untuk memilih yang benar dari database NSS (terletak di /etc/pki/nssdb) secara otomatis. Anda dapat menentukan nama panggilan itu dengan opsi curl --cert, ini harus cukup jika kunci tertanam dalam sertifikat, jika tidak Anda dapat menentukan file PEM dengan kunci sertifikat menggunakan --key. Jika kunci dilindungi oleh pass-phrase, Anda dapat memberikannya dengan opsi curl --pass sehingga Anda dapat mengimpor sertifikat Anda ke NSS bersama DB menggunakan nss-tools (yum install nss-tools)

Menambahkan sertifikat (baris perintah umum)

certutil -d sql:/etc/pki/nssdb -A -t <TRUSTARGS> -n <certificate nickname> -i <certificate filename>

Tentang TRUSTARGS

Tentukan atribut kepercayaan untuk memodifikasi sertifikat yang ada atau untuk menerapkan ke sertifikat saat membuatnya atau menambahkannya ke database.

Ada tiga kategori kepercayaan yang tersedia untuk setiap sertifikat,   dinyatakan dalam urutan ini: "SSL, email, penandatanganan objek". Di setiap   posisi kategori menggunakan nol atau lebih dari kode atribut berikut:

  • p dilarang (tidak dipercaya secara eksplisit)
  • P Trusted peer
  • c Valid CA
  • T Trusted CA untuk mengeluarkan sertifikat klien (menyiratkan c)
  • C Trusted CA untuk mengeluarkan sertifikat server (hanya SSL) (artinya c)
  • Sertifikat u dapat digunakan untuk otentikasi atau penandatanganan
  • w Kirim peringatan (digunakan dengan atribut lain untuk menyertakan peringatan ketika sertifikat digunakan dalam konteks itu)

Kode atribut untuk kategori dipisahkan oleh koma, dan   seluruh himpunan atribut yang ditutup oleh tanda kutip. Sebagai contoh:

-t "TCu, Cu, Tuw"

Mempercayai sertifikat CA akar untuk menerbitkan sertifikat server SSL

certutil -d sql:/etc/pki/nssdb -A -t "C,," -n <certificate nickname> -i <certificate filename> 

Mengimpor sertifikat CA menengah

certutil -d sql:/etc/pki/nssdb -A -t ",," -n <certificate nickname> -i <certificate filename>

Mempercayai sertifikat server yang ditandatangani sendiri

certutil -d sql:/etc/pki/nssdb -A -t "P,," -n <certificate nickname> -i <certificate filename> 

Menambahkan sertifikat pribadi dan kunci pribadi untuk otentikasi klien SSL

pk12util -d sql:/etc/pki/nssdb -i PKCS12_file_with_your_cert.p12

Mendata semua sertifikat yang disimpan ke NSS DB

certutil -d sql:/etc/pki/nssdb -L

Mendaftar detail sertifikat

certutil -d sql:/etc/pki/nssdb -L -n <certificate nickname>

Menghapus sertifikat

certutil -d sql:/etc/pki/nssdb -D -n <certificate nickname>

Semoga ini membantu.


16
2018-03-03 11:10



Saya baru-baru ini mengalami masalah yang sama dalam kotak CentOS 6. Ternyata server belum diperbarui untuk beberapa waktu dan versi NSS sudah terlalu lama. Memperbaiki dengan memperbarui curl dan NSS:

yum update -y nss curl libcurl

7
2017-11-10 07:34



Apa yang terjadi

Sepertinya Anda mengalami masalah timeout saat terhubung ke server Windows 7.

Solusi yang memungkinkan

Satu mungkin menjawab menunjukkan akar penyebab kesalahan 5961 berubah menjadi masalah pengaturan MTU jaringan. Tidak jelas apakah Anda memiliki akses ke server Windows 7 atau komponen lengkap lingkungan untuk mengidentifikasi penyebab pasti dari batas waktu yang menyebabkan koneksi gagal. Saya akan memeriksa MTU dari Windows 7 Server dan membandingkan pengaturan MTU dengan server lain. Jika Anda menemukan bahwa Anda perlu mengubah pengaturan, Anda dapat mengikuti ini prosedur.


1
2018-03-03 00:22



Kesalahan ini juga dikeluarkan ketika protokol ssl tidak didukung oleh server, Coba tentukan semua varian / protokol di file server.xml.


1
2018-04-01 10:10



Ini juga akan terjadi ketika cipher antara klien dan server tidak tumpang tindih.

Misalnya server hanya menerima cipher ECHDE tetapi klien (beberapa versi lama curl dibangun dengan nss) tidak memiliki cipher ini.

dalam hal ini, server akan mengirim TCP RST ke klien untuk mengakhiri upaya koneksi SSL ketika menemukan bahwa tidak ada cipher yang tumpang tindih (klien akan menyertakan cipher yang didukung di 'client hello').


0
2018-05-09 03:41