wget,自签名证书和自定义HTTPS服务器

Dou*_*ugN 10 https openssl wget self-signed

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

但是,wget(即使使用--no-check-certificate标志)报告:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)

如果我使用以下命令对我的服务器运行OpenSSL客户端:

openssl s_client -connect dnvista:82 -debug
Run Code Online (Sandbox Code Playgroud)

我回来了:验证错误: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:
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

And*_*ahl 11

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

为此,请将证书指定为--ca-certificate=...in wget-CAfilein s_clientcase.

  • 你好.我已经看过很多像这样的评论,"尽可能多的关闭".这是一个真正的_BAD_想法**.有点像在潮湿的道路上与秃头轮胎的街头赛车.我很失望这个答案得到了'滴答'的标记. (5认同)
  • 意志:我同意,转过来检查通常是个坏主意.我的回答提出了一种使客户端知道CA证书的方法,以便可以正确执行检查. (5认同)

tal*_*osh 5

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