mobaxterm
MobaXterm Custom Certificate Authorities
Eigene PKI oder CAs in MobaXterm unterbringen geht recht einfach.
Als erstes holen wir eine aktuelle Liste der vertrauenswürdigen CAs als Text (PEM) die auch von Mozilla genutzt werden.
https://github.com/bagder/ca-bundle
Hier können wir frei Root- und Intermediate Zertifikate einfügen oder auch entfernen.
Z.B. von CACert ->
Im MobaXterm Paket, am einfachsten Portable, nehmen wir das File CygUtils.plugin und öffnen es mit z.B. 7-ZIP.
Und ersetzten das file in /etc/pki/tls/certs/ca-bundle.crt.
Das ganze klappt, obwohl das Original File binär (vermutlich DER) kodiert ist und das neue File als Text (PEM).
Ab jetzt vertrauen curl, wget, openssl usw. auch der neuen CA.
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)
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.
Mobaxterm dnsutils plugin
Wer schon länger das dnsutils Plugin von MobaXterm verwendet, dem ist vielleicht aufgefallen, dass man damit keine CAA DNS Records prüfen kann.
Aber es gibt mittlerweile ein neues Plugin .
Vorher:
$ dig -version DiG 9.7.1 $ dig CAA xn--hllrigl-a90a.at ; <<>> DiG 9.7.1 <<>> CAA xn--hllrigl-a90a.at ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 41201 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;CAA. IN A ;; Query time: 6 msec ;; SERVER: 10.14.32.54#53(10.14.32.54) ;; WHEN: Mon Dec 10 12:43:16 2018 ;; MSG SIZE rcvd: 21 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28184 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;xn--hllrigl-a90a.at. IN A ;; AUTHORITY SECTION: at. 900 IN SOA dns.nic.at. domain-admin.univie.ac.at. 1544436002 10800 3600 604800 10800 ;; Query time: 11 msec ;; SERVER: 10.14.32.54#53(10.14.32.54) ;; WHEN: Mon Dec 10 12:43:16 2018 ;; MSG SIZE rcvd: 103
Nachher
$ dig -version DiG 9.9.7 $ dig CAA +short xn--hllrigl-90a.at 0 issue "letsencrypt.org" 0 iodef "mailto:hostmaster@xn--hllrigl-90a.at"
JPEG Dateierweiterung erzeugen
Einen Haufen Files im LOST Ordner. Ohne erweiterung. Aber fast alles Fotos…
Bitte einmal mit Mobaxterm und der Bash auf .jpg Umbenennen:
ls -1 | while read LINE; do mv $LINE $LINE.jpg; done
openssl 1.1.1-pre1 in mobaxterm
OpenSSL testet an einer neuen Version herum. Aber auch OpenSSL 1.1.1-pre1 lässt sich nicht ohne weiters in MobaXTerm bauen.
Bekanntes Problem, gleiche Lösung:
$ make clean && ./config && make
crypto/async/arch/async_posix.o:async_posix.c:(.text+0xe): undefined reference to `getcontext' crypto/async/arch/async_posix.o:async_posix.c:(.text+0x56): undefined reference to `getcontext' crypto/async/arch/async_posix.o:async_posix.c:(.text+0xd4): undefined reference to `makecontext' crypto/async/async.o:async.c:(.text+0x34): undefined reference to `setcontext' collect2: error: ld returned 1 exit status Makefile:728: recipe for target 'libcrypto.dll.a' failed make[1]: *** [libcrypto.dll.a] Error 1 make[1]: Leaving directory '/home/mobaxterm/_work/openssl-1.1.1-pre1' Makefile:143: recipe for target 'all' failed make: *** [all] Error 2 Command exited with non-zero status 2
$ make clean && ./config no_async && make
$ apps/openssl.exe version OpenSSL 1.1.1-pre1 (alpha) 13 Feb 2018
OpenSSL in MobaXterm
Neue OpenSSL Version kompilieren in MobaXterm bricht einfach ab mit Fehlermeldung
./config && make ... ... ... gcc -I. -Iinclude -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC-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 -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR=""/usr/local/ssl"" -DENGINESDIR=""/usr/local/lib/engines-1.1"" -D TERMIOS -DL_ENDIAN -Wall -O3 -fomit-frame-pointer -D_WINDLL -MMD -MF ssl/tls_srp.d.tmp -MT ssl/tls_srp.o -c -o ssl/tls_srp.o ssl/tls_srp.c ar r libssl.a ssl/bio_ssl.o ssl/d1_lib.o ssl/d1_msg.o ssl/d1_srtp.o ssl/methods.o ssl/pqueue.o ssl/record/dtls1_bitmap.o ssl/record/rec_layer_d1.o ssl/record/rec_layer_s3.o ssl/record/ssl3_buffer.o ssl/record/ssl3_record.o ssl/s3_cbc.o ssl/s3_enc.o ssl/s3_lib.o ssl/s3_msg.o ssl/ssl_asn1.o ssl/ssl_cert.o ssl/ssl_ciph.o ssl/ssl_conf.o ssl/ssl_err.o ssl/ssl_init.o ssl/ssl_lib.o ssl/ssl_mcnf.o ssl/ssl_rsa.o ssl/ssl_sess.o ssl/ssl_stat.o ssl/ssl_txt.o ssl/ssl_utst.o ssl/statem/statem.o ssl/statem/statem_clnt.o ssl/statem/statem_dtls.o ssl/statem/statem_lib.o ssl/statem/statem_srvr.o ssl/t1_enc.o ssl/t1_ext.o ssl/t1_lib.o ssl/t1_reneg.o ssl/t1_trce.o ssl/tls_srp.o ar: creating libssl.a ranlib libssl.a || echo Never mind. /bin/make -f ./Makefile.shared -e \ PLATFORM=Cygwin-x86 \ PERL="/usr/bin/perl" SRCDIR='.' DSTDIR="." \ INSTALLTOP='/usr/local' LIBDIR='lib' \ LIBDEPS=' '""' ' \ LIBNAME=crypto SHLIBVERSION=1.1 \ STLIBNAME=libcrypto.a \ SHLIBNAME=libcrypto.dll.a SHLIBNAME_FULL=cygcrypto-1.1.dll \ CC='gcc' CFLAGS='-DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -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 -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR=""/usr/local/ssl"" -DENGINESDIR=""/usr/local/lib/engines-1.1"" -DTERMIOS -DL_ENDIAN -Wall -O3 -fomit-frame-pointer -D_WINDLL' \ LDFLAGS='' SHARED_LDFLAGS='-shared ' \ RC='windres' SHARED_RCFLAGS='' \ link_shlib.cygwin-shared make[2]: Entering directory '/drives/c/temp/openssl-1.1.0g' /usr/bin/perl ./util/mkrc.pl cygcrypto-1.1.dll | windres -o rc.o LD_LIBRARY_PATH=:/bin gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -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 -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="/usr/local/ssl" -DENGINESDIR="/usr/local/lib/engines-1.1" -DTERMIOS -DL_ENDIAN -Wall -O3 -fomit-frame-pointer -D_WINDLL -shared -shared -Wl,--enable-auto-image-base -Wl,-Bsymbolic -Wl,--out-implib,libcrypto.dll.a rc.o -o cygcrypto-1.1.dll -Wl,--whole-archive libcrypto.a -Wl,--no-whole-archive libcrypto.a(async_posix.o):async_posix.c:(.text+0xe): undefined reference to `getcontext' libcrypto.a(async_posix.o):async_posix.c:(.text+0x56): undefined reference to `getcontext' libcrypto.a(async_posix.o):async_posix.c:(.text+0xd4): undefined reference to `makecontext' libcrypto.a(async.o):async.c:(.text+0x34): undefined reference to `setcontext' collect2: error: ld returned 1 exit status Makefile.shared:243: recipe for target 'link_shlib.cygwin' failed make[2]: *** [link_shlib.cygwin] Error 1 make[2]: Leaving directory '/drives/c/temp/openssl-1.1.0g' Makefile:639: recipe for target 'libcrypto.dll.a' failed make[1]: *** [libcrypto.dll.a] Error 2 make[1]: Leaving directory '/drives/c/temp/openssl-1.1.0g' Makefile:130: recipe for target 'all' failed make: *** [all] Error 2
Lösung:
./config no-async && make
Der Build läuft durch und baut eine funktionierende exe
$ apps/openssl.exe version OpenSSL 1.1.0g 2 Nov 2017
Powershell 32 Bit vs. 64 Bit
Wenn einem Certutil.exe bei manchen Parametern mitteilt, dass manche Klassen nicht geladen werden könne, ist möglicherweise die 32 Bit vs. 64 Bit Problematik daran schuld.
C:\windows\System32\certutil.exe -view -restrict "Issued Common Name=<CN>, Disposition=20" -out "RequestID,RequesterName" -config "<CAHostName>\<CAName>" CertUtil: -view command FAILED: 0x80040154 (-2147221164) CertUtil: Class not registered
Wie tritt das auf, wenn ich doch ein 64 Bit Betriebssystem habe? Und wie stelle ich fest, was ich für eine PowerShell am laufen habe?
Eine „normale“ PowerShell:
> [Environment]::Is64BitProcess True
Die „gleiche“ PowerShell geöffnet in MobaXterm:
> [Environment]::Is64BitProcess False
Erst Version 10 von MobaXterm soll das Problem beheben und auf 64 Bit Systemen die korrekte PowerShell öffnen.
Interessantes Detail am Rande, eine 64 Bit PowerShell liegt unter C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe die 32 Bit Version ist zu finden unter C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe!