mobaxterm

MobaXterm Custom Certificate Authorities

Written by  on August 3, 2021

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

Written by  on November 7, 2020

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

Written by  on April 25, 2020

Ankündigung OpenSSL3.0Alpha1

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

Written by  on Oktober 26, 2019
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

Written by  on Oktober 15, 2019

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.

Bugreport Unable to compile OpenSSL 1.1.1d on Cygwin

Mobaxterm dnsutils plugin

Written by  on Dezember 14, 2018

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

Written by  on Juli 22, 2018

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

Written by  on Februar 15, 2018

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

Written by  on November 8, 2017

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

Written by  on März 21, 2017

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!