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

标签 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

如果我使用以下命令针对我的服务器运行 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);

最佳答案

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

为此,请将证书指定为 --ca-certificate=...wget-CAfiles_client案件。

关于https - wget、自签名证书和自定义 HTTPS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644622/

相关文章:

android - 移动应用程序上的 HTTPS 证书续订

python - 为什么python请求默认不使用系统ssl证书?

python - subprocces.call 语法错误python

ruby - 为自编译Ruby安装安装OpenSSL支持

linux - 如何仅显示 wget 进度条?

linux - 如何使用 wget 访问两个网站,但将输出从第一个网站发送到 `/dev/null` ?

linux - wget 一些网站 .gif 文件

ssl - Golang : http2 and TLS handshake errors

apache - 将 http 重定向到 https,将 www 重定向到非 www

ssl - 哪个是私钥?