openssl
mobaxterm und openssl3 alpha 8
In openssl alpha 7 wurde irgendwas eingeführt, dass das command „ar“ mit einer Option q ausgeführt wird. Im Mobaxterm ist das aber zu alt. Oder die BusyBox unterstützt das halt nicht und es entsteht diese Fehlermeldung:
ar qc apps/libapps.a apps/lib/libapps-lib-app_params.obj apps/lib/libapps-lib-app_provider.obj apps/lib/libapps-lib-app_rand.obj apps/lib/libapps-lib-app_x509.obj apps/lib/libapps-lib-apps.obj apps/lib/libapps-lib-apps_ui.obj apps/lib/libapps-lib-columns.obj apps/lib/libapps-lib-engine.obj apps/lib/libapps-lib-fmt.obj apps/lib/libapps-lib-http_server.obj apps/lib/libapps-lib-names.obj apps/lib/libapps-lib-opt.obj apps/lib/libapps-lib-s_cb.obj apps/lib/libapps-lib-s_socket.obj ar: unknown option -- q BusyBox v1.22.1 (2015-11-10 11:07:12 ) multi-call binary. Usage: ar [-o] [-v] [-p] [-t] [-x] ARCHIVE FILES Extract or list FILES from an ar archive -o Preserve original dates -p Extract to stdout -t List -x Extract -v Verbose Makefile:4124: recipe for target 'apps/libapps.a' failed make[1]: *** [apps/libapps.a] Error 1 make[1]: Leaving directory '/drives/c/temp/openssl-3.0.0-alpha8' Makefile:3137: recipe for target 'build_sw' failed make: *** [build_sw] Error 2
In welchem Paket ist denn ar enthalten und wie kann ich das updaten?
apt-get install binutils
So, jetzt ist eine neuere Version installiert, mit „ar“ kann ich die aufrufen, aber nicht mit „/bin/ar“. Die Pfade sind aber korrekt.
Dann weg mit dem Softlink:
ls /bin/ar -lh lrwxrwxrwx 1 user UsersGrp 16 Sep 26 10:31 /bin/ar -> /bin/busybox.exe rm /bin/ar
Und schon funktionierts:
ls -lh /bin/ar -rwxr-xr-x 1 user UsersGrp 975K Oct 6 2017 /bin/ar
Und damit auch openssl3
openssl-3.0.0-alpha8/apps/openssl.exe version OpenSSL 3.0.0-alpha8 5 Nov 2020 (Library: OpenSSL 3.0.0-alpha8 5 Nov 2020)
Umlaute und Encoding
Eine schöne Aufstellung woher Encoding Probleme kommen zwischen ISO und UTF8:
Umlautproblem
Falls man UTF8 String in Openssl braucht, es gibt eine einfache Option die „alles“ wieder gut macht:
openssl req -utf8 -config ./openssl.cnf -new -key file.key -subj '/C=${C}/CN=${CN}'
OpenSSL3 in MobaXterm
Vorbereitung für MobaXterm: OpenSSL benötigt ein aktuelles Perl zum kompilieren.
apt-get install perl (hebt die Version von 14 auf 26)
Download von github.com/openssl/openssl -> Clone or Download -> Download ZIP
unzip
./config
make
apps/openssl.exe version OpenSSL 3.0.0-alpha2-dev (Library: OpenSSL 3.0.0-alpha2-dev )
OpenSSL und Custom Certificates
openssl version -a ... OPENSSLDIR: "/usr/local/ssl" ...
Place cert.pem File here (Liste of custom certificates)
See also:
Stackoverflow
MadBoa
Der Ordner ./certs da drin funktioniert nicht – zumindest nicht bei mir
MobaXterm und OpenSSL 1.1.1d
OpenSSL 1.1.1d bricht leider mit einem Fehler ab
gcc -I. -Icrypto/include -Iinclude -Wall -O3 -fomit-frame-pointer -DTERMIOS -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_ IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_A SM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR=""/usr/local/ssl"" -DENGINESDIR=""/usr/local/lib/engines-1.1"" -DNDEBUG -MMD -MF crypto/dso/dso_dlfcn.d.tm p -MT crypto/dso/dso_dlfcn.o -c -o crypto/dso/dso_dlfcn.o crypto/dso/dso_dlfcn.c crypto/dso/dso_dlfcn.c: In function 'dlfcn_pathbyaddr': crypto/dso/dso_dlfcn.c:409:5: error: unknown type name 'Dl_info' Dl_info dli; ^ crypto/dso/dso_dlfcn.c:422:5: warning: implicit declaration of function 'dladdr' [-Wimplicit-function-declaration] if (dladdr(addr, &dli)) { ^ crypto/dso/dso_dlfcn.c:423:30: error: request for member 'dli_fname' in something not a structure or union len = (int)strlen(dli.dli_fname); ^ crypto/dso/dso_dlfcn.c:432:25: error: request for member 'dli_fname' in something not a structure or union memcpy(path, dli.dli_fname, len); ^ Makefile:2735: recipe for target 'crypto/dso/dso_dlfcn.o' failed make[1]: *** [crypto/dso/dso_dlfcn.o] Error 1 make[1]: Leaving directory '/drives/c/temp/openssl-1.1.1d' Makefile:174: recipe for target 'all' failed make: *** [all] Error 2
Ursache ist diese Änderung im Code
Wurde mit dieser Issue eingeführt
Build läuft wie gewohnt durch, wenn man die Datei crypto/dso/dso_dlfcn.c aus 1.1.1c verwendet.
OpenSSL PFX aus geschütztem Key erzeugen
openssl pkcs12 -export -in "${FILE}.cer" -inkey "${FILE}.key" -passin pass:$PASS -out "${FILE}.pfx" -name "${FILE}_$(date +%Y%m%d_%H%M%S)" -passout pass:$PASS
-name … Friendly Name / Alias
-passout … Passwort fürs PFX
-passin … Passwort vom KEY
OpenSSL PFX erzeugen
openssl pkcs12 -export -out ${FILE}.pfx -inkey ${FILE}.key -in ${FILE}.cer
openssl nameopt
OpenSSL unterstützt eine nette Option, falls man den Output in einem Script weiterverarbeiten will.
Hier die normale Ausgabe:
openssl x509 -in test.cer -noout -text
Certificate: Data: Version: 3 (0x2) Serial Number: 55:0d:00:d6:79:bf:17:7b Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, O = Google Trust Services, CN = Google Internet Authority G3 Validity Not Before: Nov 27 14:02:00 2018 GMT Not After : Feb 19 14:02:00 2019 GMT Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.google.com
Und hier die Multiline Ausgabe:
openssl x509 -in test.cer -noout -text -nameopt multiline
Certificate: Data: Version: 3 (0x2) Serial Number: 55:0d:00:d6:79:bf:17:7b Signature Algorithm: sha256WithRSAEncryption Issuer: countryName = US organizationName = Google Trust Services commonName = Google Internet Authority G3 Validity Not Before: Nov 27 14:02:00 2018 GMT Not After : Feb 19 14:02:00 2019 GMT Subject: countryName = US stateOrProvinceName = California localityName = Mountain View organizationName = Google LLC commonName = *.google.com
Compiler Zeit Openssl 1.1.1 Pre7
Auf Quadcore Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz mit Virenscanner
./config no-async && time make real 1h 36m 37s user 5m 9.02s sys 1h 22m 34s
Auf Quadcore Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz mit Windows Defender
./config no-async && time make real 11m 16.66s user 3m 13.19s sys 4m 27.34s
So gefühlt, rechnet der i5 also 5 Minuten statt 3 Minuten. Aber die System-Time scheint vom Virenscanner zu kommen.
Warum man auf OpenSSL 1.1.1 wartet
Schön langsam wird es Zeit fürs neue OpenSSL 1.1.1. Das will man haben, damit endlich TLS 1.3 in der Breite verfügbar wird.
Aber es gibt weitere interessante Änderungen.
SNI ist ab dann der Standard für s_client.
Bei s_client -starttls werden mehr Protokolle wie LDAP unterstützt.