X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fopenssl.c;h=b725a065f8336aec2d15a3a923fb624f379e1793;hp=e2eec4f7c2932b704fd5cd63e0ed48a735f15813;hb=38a7829dcb4eb5dba28dbf0f05c6a80fea9217f8;hpb=b8f036d16c508efde5bacfab9a96d8b6c6aeeeb2 diff --git a/src/openssl.c b/src/openssl.c index e2eec4f7..b725a065 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -194,6 +194,7 @@ ssl_init (void) case secure_protocol_sslv3: meth = SSLv3_client_method (); break; + case secure_protocol_pfs: case secure_protocol_tlsv1: meth = TLSv1_client_method (); break; @@ -207,6 +208,12 @@ ssl_init (void) if (!ssl_ctx) goto error; + /* OpenSSL ciphers: https://www.openssl.org/docs/apps/ciphers.html + * Since we want a good protection, we also use HIGH (that excludes MD4 ciphers and some more) + */ + if (opt.secure_protocol == secure_protocol_pfs) + SSL_CTX_set_cipher_list (ssl_ctx, "HIGH:MEDIUM:!RC4:!SRP:!PSK:!RSA:!aNULL@STRENGTH"); + SSL_CTX_set_default_verify_paths (ssl_ctx); SSL_CTX_load_verify_locations (ssl_ctx, opt.ca_cert, opt.ca_directory); @@ -298,7 +305,7 @@ openssl_read (int fd, char *buf, int bufsize, void *arg) } static int -openssl_write (int fd, char *buf, int bufsize, void *arg) +openssl_write (int fd _GL_UNUSED, char *buf, int bufsize, void *arg) { int ret = 0; struct openssl_transport_context *ctx = arg; @@ -340,7 +347,7 @@ openssl_peek (int fd, char *buf, int bufsize, void *arg) } static const char * -openssl_errstr (int fd, void *arg) +openssl_errstr (int fd _GL_UNUSED, void *arg) { struct openssl_transport_context *ctx = arg; unsigned long errcode; @@ -682,7 +689,7 @@ ssl_check_certificate (int fd, const char *host) /* Compare and check for NULL attack in ASN1_STRING */ if (pattern_match ((char *)name_in_utf8, host) && (strlen ((char *)name_in_utf8) == - ASN1_STRING_length (name->d.dNSName))) + (size_t) ASN1_STRING_length (name->d.dNSName))) { OPENSSL_free (name_in_utf8); break; @@ -746,7 +753,7 @@ ssl_check_certificate (int fd, const char *host) xentry = X509_NAME_get_entry(xname,i); sdata = X509_NAME_ENTRY_get_data(xentry); - if (strlen (common_name) != ASN1_STRING_length (sdata)) + if (strlen (common_name) != (size_t) ASN1_STRING_length (sdata)) { logprintf (LOG_NOTQUIET, _("\ %s: certificate common name is invalid (contains a NUL character).\n\