wget,自签证书和一个自定义HTTPS server
-
10-07-2019 - |
题
由于各种原因我已经创建了一个简单HTTP服务器,并加入SSL支持通过OpenSSL。我使用的是自签证书。即Firefox和铬愉快地加载内容,只要我加入CA到信任的根CAs。
然而,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=...
案例中将证书指定为-CAfile
,并在s_client
情况下指定<=>。
其他提示
你也可以安装信任的根源证书进OpenSSL在一些方面:
- 把你的CA证书/etc/pki/tls/证书或同等的目录,然后创建的链接的基于证书的散列。看看 http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl 对于细节。
- 追加CA证书/etc/pki/tls/cert/ca-束。crt,/etc/pki/tls/cert。pem,或相当于CA束。
不隶属于 StackOverflow