web-dev-qa-db-ja.com

CentOS PHP cURL NSSエラー5938

いくつかのCentOSボックスでcURLとPHPで奇妙な問題が発生しています。

ローカルでは、CentOS 6.3を実行しています。リモートはCentOS 5.9です

ローカルでは、ボックスがリクエストを受信し、scpがリモートサーバーにファイルを送信してから、PHPを介してリモートサーバーにcURLリクエストを実行し、情報を送信します。リクエストは、最初の試行で常に失敗します。当日以降のリクエストは正常に機能します。リモートには有効なSSL証明書があります。それでも、証明書を無効にすると、ホストの検証で問題が解決しません。

ロギングはあまり役に立ちませんでした。冗長性を11まで上げると、最も意味のあるエントリは次のようになります。

* About to connect() to www.example.com port 443 (#0)
*   Trying 203.0.113.10... * connected
* Connected to www.example.com (203.0.113.10) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -5938
* Closing connection #0
* SSL connect error

エラーをグーグルすることもあまり役に立ちません。 Twitterにも同様の問題( https://dev.Twitter.com/discussions/1549 )があったようですが、どうやらそれは修正されましたが、どのように修正されたかについては詳しく説明していません。

問題を軽減するためにどこを見るべきか、何をすべきかについてのアイデアは、いただければ幸いです。

4
stormdrain

nSSでコンパイルされたcurlの一般的な問題です(nssなしでコンパイルされたredhat-linuxes、debian、suse curlパッケージのみ)。 nss-libraryなしでソースからcurlをコンパイルする必要があります。

だから、私はhttps-connectionsがnss-curlでどのように機能するかを解決していません。

curl --version curl 7.29.0(x86_64-redhat-linux-gnu)libcurl/7.29.0 NSS/3.14.3. zlib/1.2.7 libidn/1.26 libssh2/1.4.3プロトコル:dict file ftp ftps Gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Features:AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz

curl --version curl 7.25.0(x86_64-suse-linux-gnu)libcurl/7.25.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.0プロトコル:dictファイルftp ftps Gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Features:AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

4
nexoma

古いCentOS 6.xシステムを使用して、TLS 1.0の受け入れを停止し、TLS 1.1以降のみを許可する組み込みデバイスに接続すると、同様の「NSSエラー-5938」が発生しました。私にとっての解決策は、yum update。私はこれらの更新が発生したのを見ました:

---> Package curl.x86_64 0:7.19.7-46.el6 will be updated
---> Package curl.x86_64 0:7.19.7-52.el6 will be an update
...
---> Package nss.x86_64 0:3.21.0-0.3.el6_7 will be updated
---> Package nss.x86_64 0:3.21.3-2.el6_8 will be an update

私はこれが助けになった具体的な変更かもしれないと思います:

$ rpm -q --changelog curl
[...]
* Mon Jan 11 2016 Kamil Dudka <[email protected]> 7.19.7-50
- use the default min/max TLS version provided by NSS (#1289205)
3
doshea

NSSエラー5938メッセージは通常、サーバーが接続を強制終了したことを意味します。 curlのターゲットのサーバー側のログをチェックして、接続が切断された理由を確認する必要があります。

それは「Xの逆DNSホスト名を取得できなかった」という単純なものかもしれません。

0
Andrew Domaszek