14

由于各种原因,我创建了一个简单的 HTTP 服务器,并通过 OpenSSL 添加了 SSL 支持。我正在使用自签名证书。只要我将 CA 添加到受信任的根 CA,IE、Firefox 和 Chrome 就会愉快地加载内容。

但是, 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:证书链中的自签名证书验证返回:0,然后

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 客户端根本不能使用自签名证书吗?

更新:

对于以后出现的任何人,添加此代码有助于 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);
4

2 回答 2

16

我检查了手册页wget--no-check-certificate似乎只影响服务器证书。您需要将您的自签名证书指定为本地有效的 CA 证书。

为此,请在--ca-certificate=...案例中指定证书。wget-CAfiles_client

于 2009-10-29T16:09:49.767 回答
6

您还可以通过多种方式之一将受信任的根 CA 证书安装到 OpenSSL:

于 2010-01-22T05:10:17.527 回答