OpenSSL-1.1.0 elközeleg

De tényleg, előbb-utóbb kell vele foglalkozni. Egyelőre az 1.1.0-pre6 próbálható ki.

Bizonyos jelek [lásd a Makefile-t] arra utalnak, hogy a fejlesztők úgy képzelik, hogy az 1 a major verziószám és az 1.0-pre6 a minor. (Vagy csak az 1, és a .0-pre6 nem is számít. Legalábbis a shared object nevébe nem kerül bele.)

Namostan ezt mérések nem támasztják alá, default fordítás után:


# readelf -d /usr/local/lib64/libssl.so
 0x000000000000000e (SONAME)             Library soname: [libssl.so.1.1]
 0x0000000000000001 (NEEDED)             Shared library: [libcrypto.so.1.1]

Hát én ezt úgy mondanám, hogy az 1.1 a major, és minort nem sikerült adni neki.

Egyelőre az a házigányos gondolatom, hogy megpróbálkozom a MAJOR=1.1, MINOR=0-pre6 értékekkel, azt majd meglátjuk.

20160818.1708: Na azért ezt még egy kicsit reszelni kell: van egy szoftver, ami a fájl kiterjesztéséből megsaccolja a típusát, mint pl. .o .lo .la .so

Namostan a shared objectek csodás névkonvenciója miatt képes volt olyan csodára, hogy a .so.1.22.333-at tekintse kiterjesztésnek. Ekkor jött az openssl, az .so.1.0.2f-szerű kiterjesztéssel. Tehát alfanumerikus is lehet a verziószám. Jó.

Namostan amit lehet fokozni, azt kell is fokozni, tehát most ezt kell elfogadni kiterjesztésnek: .so.1.1.0-pre6 tehát számjegyek, betűk, és kötőjelek.

20160817.1220: Olvasmány: https://wiki.openssl.org/index.php/1.1_API_Changes

20160817.1450: wget-1.16 nem fordul. Van frissebb? Akkor megpróbálom az 1.18-at.

20160817.1525: De legalább a curl-7.50.1 fordul/pördül

20160829.1025: Sőt, már itt is van az openssl-1.1.0.tar.gz Persze próbaképpen lefordítom, de attól még az OpenSSH, a wget, a lynx meg a többi nem lesz vele kompatibilis, tehát az éles termelésbe nem lehet még betenni.

20180821.0902: Szóval van egy OpenSSL-1.1.0i, amiben így néz ki a verziószám:


/usr/local/src/openssl-1.1.0i$ readelf -d libssl.so.1.1
 0x0e (SONAME)     Library soname: [libssl.so.1.1]

Meg van az 1.1.1-pre8:


/usr/local/src/openssl-1.1.1-pre8$ readelf -d libssl.so.1.1
 0x00e (SONAME)     Library soname: [libssl.so.1.1]

Szóval nincs 'minor' verzió, a 'major' pedig azonos (1.1). Mit is mondott Lord Helmet, amikor kiderült, hogy a legénység minden tagjának azonos a csalágneve?

2080821.0956: Azért van itt más is:


Perl v5.10.0 required--this is only v5.8.8, stopped at ./Configure line 12.

Hozzászólások

OpenSSH-7.3p1 meglátása:


checking OpenSSL header version... not found
configure: error: OpenSSL version header not found.

Szerk: ldconfig hiányzott neki. Következő meglátása:


gcc ... -c ssh_api.c -o ssh_api.o
In file included from ssh_api.h:26,
                 from ssh_api.c:20:
cipher.h:69: error: field 'evp' has incomplete type

Az van ottan (cipher.h), hogy:


...
#include <openssl/evp.h>
...
struct sshcipher_ctx {
        int     plaintext;
        int     encrypt;
        EVP_CIPHER_CTX evp;
        struct chachapoly_ctx cp_ctx; /* XXX union with evp? */
        struct aesctr_ctx ac_ctx; /* XXX union with evp? */
        const struct sshcipher *cipher;
};

Van egy olyan, hogy /usr/local/include/openssl/ossl_typ.h, abban:


typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;

Korábban ez a struktúra definiálva volt az evp.h-ban, de azóta ebben is fejlődtünk. Ami persze jó. Lenne, ha fordulna az OpenSSH.

Saját programnak az alábbiak hiányoznak:


undefined reference to `SSL_library_init'
undefined reference to `SSL_load_error_strings'
undefined reference to `SSLv23_client_method'

Esetleg egy recompile segít?

Később. Igen, sokkal jobb lett:


undefined reference to `OPENSSL_init_ssl'
undefined reference to `OPENSSL_init_ssl'
undefined reference to `TLS_client_method'

Szóval ezek makrók [lettek], amik most másra fejtődnek ki.

Javítva, de azért próbáljuk meg újra, SSLv3 támogatással (vö: kőbaltás ember)

Ami (valószínűleg) így történik:

enable-ssl3 enable-ssl3-method

nem tudom, miért nem elég az első...

lynx azzal örvendeztet meg, hogy a -L/lib64-et begyümködi a LDFLAGS elé... Sajnos ez nem annyira jó, mint amennyire rossz:


lrwxrwxrwx 1 root root       9 Sep  4  2014 /lib64/libc.so -> libc.so.6
lrwxrwxrwx 1 root root      14 Feb 19 11:29 /lib64/libc.so.6 -> libc-2.11.3.so
-rwxr-xr-x 1 root root 1478056 Feb 16  2016 /lib64/libc-2.11.3.so
# cat /usr/lib64/libc.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )

Tudom, ne legyen nekem /lib64/libc.so-m, és minden oké lesz...

Teljesen oké, de így sem fordul az ssl-1.1-gyel

Mostanra összeállt egy 64-bites perl-5.28.0
Már csak a hozzátákolt komponenseket kell újracsinálni, mint DBI, DBD::Oracle,Term::ReadLine::Gnu stb, míg végül diadalmasan elérünk a yasql-hez. Akkor aztán elgondolkozunk azon, hogy honnan is kerültünk ide.

OpenSSH-7.8p1 nem túl tüzes az újításért:


checking OpenSSL header version... 1010009f (OpenSSL 1.1.0i  14 Aug 2018)
checking OpenSSL library version... configure: error:
OpenSSL >= 1.1.0 is not yet supported (have "1010009f (OpenSSL 1.1.0i  14 Aug 2018)")