2009-10-29 34 views
10

さまざまな理由から、私は簡単なHTTPサーバーを作成し、OpenSSL経由でSSLサポートを追加しました。自己署名証明書を使用しています。 IE、Firefox、Chromeは、信頼できるルートCAにCAを追加する限り、コンテンツをうまく読み込みます。しかしwget、自己署名証明書とカスタムHTTPSサーバー

、wgetの(--no-check-certificateフラグを使用していても)報告:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 

私が使用して自分のサーバーに対してのOpenSSLクライアントを実行する場合:

openssl s_client -connect dnvista:82 -debug 

私が取り戻す: がエラーを確認します。 num = 19:証明書チェーン内の自己署名証明書 検証結果: 、次に

5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40 
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188: 

wgetを実行しても、OpenSSLクライアントは自己署名証明書を使用できません。

UPDATE:に沿って、後に来る人のため

、このコードを追加するには、OpenSSLクライアントとFirefoxのを手伝ってくれました:

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 
SSL_CTX_set_tmp_ecdh(ctx, ecdh); 
EC_KEY_free(ecdh); 

答えて

11

私はwgetのmanページをチェックし、--no-check-certificateだけに思えますサーバー証明書に影響します。自己署名証明書を有効なCA証明書としてローカルに指定する必要があります。

--ca-certificate=...wgetに、-CAfiles_clientのように指定してください。また、いくつかの方法の一つにはOpenSSLに信頼されたルートCA証明書をインストールすることができます

+5

こんにちは。私はこれらのようなコメントをたくさん見てきました。それは**本当に_BAD_アイデアです**。濡れた路面で大げさなタイヤを使った路上競技のようなもの。私はこの答えに「目盛り」がついていることに失望しています。 – will

+5

意志:私は同意し、チェックを回すことは一般に悪い考えです。私の答えは、CA証明書をクライアントに知らせる方法の1つで、チェックを正しく実行できることを示唆しています。 –

5

  • は、ベースのリンクを作成するには、/ etc/PKI/TLS/certsのまたは同等のディレクトリにCA証明書を入れて証明書のハッシュに詳細はhttp://gagravarr.org/writing/openssl-certs/others.shtml#ca-opensslを参照してください。
  • CA証明書を/etc/pki/tls/certs/ca-bundle.crt、/etc/pki/tls/cert.pem、または同等のCAバンドルに追加します。
+0

私は質問を投稿しました:[あなたのアプリケーションコードのためのRuby OpenSSLセットアップまたは設定](http://stackoverflow.com/questions/5233169/ruby-openssl-set-up-or-configuration-for-your-application-コード)、_HOW_ RubyがPEMやCRTリソースを取得してホスト検証を行うようにします。再帰的** grep **スキャンで環境や設定情報をロードするモジュールを徹底的に探しました。 - テストやサンプルを除いて運はありません。 – will

関連する問題