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

wget、自签名证书和自定义HTTPS服务器,https,openssl,wget,self-signed,Https,Openssl,Wget,Self Signed,出于各种原因,我创建了一个简单的HTTP服务器,并通过OpenSSL添加了SSL支持。我正在使用自签名证书。IE、Firefox和Chrome都乐于加载内容,只要我将CA添加到受信任的根CA 但是,wget(即使在使用--无检查证书标志时)报告: 如果我在服务器上运行OpenSSL客户端,请使用: openssl s_client -connect dnvista:82 -debug 我回来了: 验证错误:num=19:证书链中的自签名证书 验证返回:0 然后 wget和OpenSSL客户机难

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

但是,wget(即使在使用
--无检查证书
标志时)报告:

如果我在服务器上运行OpenSSL客户端,请使用:

openssl s_client -connect dnvista:82 -debug
我回来了: 验证错误:num=19:证书链中的自签名证书 验证返回:0 然后

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);

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


为此,请在
wget
中将证书指定为
--ca certificate=…
,在
s_client
案例中将证书指定为
-CAfile

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

  • 将CA证书放在/etc/pki/tls/certs或等效目录中,然后基于证书哈希创建链接。有关详细信息,请参阅
  • 将CA证书附加到/etc/pki/tls/certs/CA-bundle.crt、/etc/pki/tls/cert.pem或等效的CA捆绑包

你好。我见过很多这样的评论,用同样多的词“关掉支票”。这真是个坏主意。有点像在潮湿的道路上用光头轮胎进行的街头赛车。威尔:我同意,把支票转到支票上通常是个坏主意。我的回答建议了一种让客户端知道CA证书的方法,以便正确执行检查。我发布了一个问题:,询问Ruby如何获得PEM或CRT资源来进行主机验证。我已经详尽地寻找了一个模块,该模块使用递归grep扫描加载环境或配置信息——运气不好(测试和示例除外)。
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:
EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
SSL_CTX_set_tmp_ecdh(ctx, ecdh);
EC_KEY_free(ecdh);