Bug 7085

Summary: openssl: compile openSSL with OPENSSL_NO_SSL3 flag
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Sona Sarmadi <sona.sarmadi>
Component: connectivityAssignee: Brendan Le Foll <brendan.le.foll>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Medium CC: jessica.zhang, meta.mr.watcher, meta.watcher, sgw
Version: 1.7   
Target Milestone: 1.8 M3   
Hardware: All   
OS: Multiple   
Whiteboard: Backport 1.7.1
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: Yes (doc changes required)

Description Sona Sarmadi 2014-12-16 07:24:15 UTC
To disable SSLv3 in Python (7015), OpenSSL needs to be compiled with the OPENSSL_NO_SSL3 flag.

See https://docs.python.org/2/library/ssl.html

 ssl.PROTOCOL_SSLv3

    Selects SSL version 3 as the channel encryption protocol.
    This protocol is not be available if OpenSSL is compiled with the
    OPENSSL_NO_SSLv3 flag.
====================================
SSLV3 support can be disabled in openssl by adding "-no-ssl3" in the openssl recipes:

meta/recipes-connectivity/openssl/openssl_1.0.1g.bb:
EXTRA_OECONF = " -no-ssl2 -no-ssl3"

After building openssl this define is in the include/openssl/opensslconf.h:

#ifndef OPENSSL_NO_SSL3
# define OPENSSL_NO_SSL3
#endif

Openssl compiled with this define:
===================================
root@p2020rdb:~# openssl s_client -connect 173.252.120.6:443 -ssl3
unknown option -ssl3
usage: s_client args

......

root@p2020rdb:~# openssl s_client -connect 173.252.120.6:443 -tls1
CONNECTED(00000003)
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance CA-3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=CA/L=Menlo Park/O=Facebook, Inc./CN=*.facebook.com
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCer

Openssl NOT compiled with this define:
=======================================
root@p2020rdb:~# openssl s_client -connect 173.252.120.6:443 -ssl3
CONNECTED(00000003)
3079103692:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1292:SSL alert number 40
3079103692:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:615:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1418713871
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---
root@p2020rdb:~# 


It would be good to document this
Comment 1 Brendan Le Foll 2015-02-23 17:16:51 UTC
Fix pushed with 0a5395738b0c5c41e48b882a5fb7c671b98dc732