Dodawanie nowego certyfikatu SSL.

W artykule przedstawiono jak utworzyć nowy certyfikat Apache Web Server Self-Signed Certificate używając narzędzi openssl.

openssl_logoPROCEDURA

  1. Sprawdź datę wygaśnięcia istniejącego certyfikatu jeżeli go posiadasz new.crt używając następującego polecenia:
    > openssl x509 -in new.crt -noout -enddate
    notAfter=Dec 30 11:10:42 2013 GMT
  2. Wygeneruj nowy certyfikat używając polecenia new.key do tworzenia prywatnego certyfikatu.
    > openssl req -new -key new.key -out new.csr

    Jeżeli potrzebujesz klucza 2048 bitowego RSA (prywatnego) dla użyj:

    > openssl genrsa -out new.key 2048

    Zauważ: flaga –des3  może zostać użyta jeżeli nie chcesz ochrony hasłem swojego klucza.

    Sprawdź teraz informacje o kluczu:

    > openssl req -in new.csr -noout -text
    Certificate Request:
     Data:
     Version: 0 (0x0)
     Subject: C=PL, ST=SL, L=Sosnowiec, O=Artmetic, OU=Master, CN=Artmetic/emailAddress=artmetic@artmetic.pl
     Subject Public Key Info:
     Public Key Algorithm: rsaEncryption
     Public-Key: (4096 bit)
     Modulus:
     00:cd:41:ec:df:20:66:44:05:1e:fb:f9:a5:cc:7a:
     c8:5b:14:d0:0f:5b:01:aa:39:1c:64:f7:f0:6b:dd:
     2e:7f:35:fd:50:24:c4:51:9a:69:88:92:78:59:4a:
     dd:9f:aa:c5:de:57:7e:58:84:fe:ab:68:11:cb:71:
     b1:11:6f:2b:71:9e:e6:2d:75:05:84:ff:6e:b1:d6:
     a0:28:25:19:f2:a7:1c:62:f7:61:09:dc:fc:45:5f:
     8b:95:d7:2c:10:69:f7:e4:dd:6a:ee:ea:d0:25:ea:
     8b:a8:95:0f:8f:87:13:9a:8b:68:c4:98:9e:17:a6:
     68:e5:d8:d6:73:39:d3:b5:81:49:65:3f:d2:29:c2:
     a1:29:a4:ad:3a:d1:24:93:8f:12:aa:ea:a6:61:56:
     d3:5a:03:a5:63:1a:89:50:ac:fa:a9:a3:4d:09:c0:
    .........
  3. Wygeneruj nowy klucz na kolejne 365 dni.
    > openssl x509 -req -days 365 -in ssl/new.csr -signkey ssl/testingcert.key -out ssl/new.crt
  4. Utwórz new.pem dla klucza new.key.
    > cp new.key new.pem
  5. Dopisz do pliku new.pem zawartość pliku new.crt.
    >  cat new.crt >> ./new.pem
  6. Zweryfikuj nowo utworzny certyfikat.
    > openssl verify ssl/new.crt
    new.crt: C = PL, ST = SL, L = Sosnowiec, O = Artmetic, OU = Programmer, CN = Artmetic, emailAddress = artmetic@artmetic.pl
    error 18 at 0 depth lookup:self signed certificate
    OK
    
    

    Zbinduj certyfikat new.pem z portem4567.

    > openssl s_server -cert new.pem -www -accept 4567 
    Using default temp DH parameters
    ACCEPT
    

    Sprawdź jak certyfikat wyświetla się po połączeniu z portem. Jeżeli nie działa sprawdź firewall.

    >  openssl s_client -connect localhost:4567
    CONNECTED(00000003)
    depth=0 C = PL, ST = SL, L = Sosnowiec, O = Artmetic, OU = Programmer, CN = Artmetic, emailAddress = artmetic@artmetic.pl
    verify error:num=18:self signed certificate
    verify return:1
    depth=0 C = PL, ST = SL, L = Sosnowiec, O = Artmetic, OU = Programmer, CN = Artmetic, emailAddress = artmetic@artmetic.pl
    verify return:1
    ---
    Certificate chain
     0 s:/C=PL/ST=SL/L=Sosnowiec/O=Artmetic/OU=Programmer/CN=Artmetic/emailAddress=artmetic@artmetic.pl
     i:/C=PL/ST=SL/L=Sosnowiec/O=Artmetic/OU=Programmer/CN=Artmetic/emailAddress=artmetic@artmetic.pl
    ---
    Server certificate
    -----BEGIN CERTIFICATE-----
    MIIDmjCCAoICCQCNFJcrFLsz8DANBgkqhkiG9w0BAQsFADCBjjELMAkGA1UEBhMC
    A1UEBhMCY2ExEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0
    IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKOZIhvcNAQEBBQADggEPADCCAQoCggEB
    AMY9YCGsqII2jPAbmPskM2hgFKDBfb6LRMOBAu4dHtQiWm5ntO3exLG67HC+kVoH
    0J2HX+nnDi6bbsh244vh7KkpM9rgxkybAyOYYNnDZoiW+87DLxkAR041tX8Vl2yk
    ...

Jak odnaleźć zależne biblioteki współdzielone.

Biblioteki współdzielone mogą być odnalezione poprzez wydanie polecenia:

 ldd nazwaAplikacji

Jednak gdy chcemy odnaleść wszystkie biblioteki zależne, które potrzebne są do odpalenia aplikacji skompilowanej dynamicznie możemy posłużyć się poniższym skryptem:

#!/bin/bash
# Author : Hemanth.HM
# Email : hemanth[dot]hm[at]gmail[dot]com
# License : GNU GPLv3
#

function useage()
{
    cat << EOU
Useage: bash $0 <path to the binary> <path to copy the dependencies>
EOU

exit 1
}

#Validate the inputs
[[ $# < 2 ]] && useage

#Check if the paths are vaild
[[ ! -e $1 ]] && echo "Not a vaild input $1" && exit 1
[[ -d $2 ]] || echo "No such directory $2 creating..."&& mkdir -p "$2"

#Get the library dependencies
echo "Collecting the shared library dependencies for $1..."
deps=$(ldd $1 | awk 'BEGIN{ORS=" "}$1\
~/^\//{print $1}$3~/^\//{print $3}'
\
 | sed 's/,$/\n/')
echo "Copying the dependencies to $2"

#Copy the deps
for dep in $deps
do
    echo "Copying $dep to $2"
    cp "$dep" "$2"
done

echo "Done!"

Wydajemy wówczas polecenie:

 bash ./ref.sh <path to the binary> <path to copy the dependencies>

czyli np w przypadku aplikacji o nazwie myApp:

 mkdir libs
 bash ./ref.sh myApp ./libs

Oprogramowanie przyckisków Canon Lide 100 na Linuxie

Aby debugować scanbd używamy polecenia:

sudo scanbd -d7 -f -c /etc/scanbd/scanbd.conf

Output:

 scanbd: foreground
scanbd: config-file: /etc/scanbd/scanbd.conf
scanbd: reading config file /etc/scanbd/scanbd.conf
scanbd: debug on: level: 7
scanbd: dropping privs to uid saned
scanbd: dropping privs to gid scanner
scanbd: group scanner has member:
scanbd: saned
scanbd: drop privileges to gid: 109
scanbd: Running as effective gid 109
scanbd: drop privileges to uid: 108
scanbd: Running as effective uid 108
scanbd: dbus_init
scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
scanbd: SANE_CONFIG_DIR not set
scanbd: sane version 1.0
scanbd: Scanning for local-only devices
^Xscanbd: start_sane_threads
scanbd: start dbus thread
scanbd: Not Primary Owner (2)
scanbd: timeout: 500 ms
scanbd: Iteration on dbus call

Przykładowa konfiguracja:

global {
       
        debug   = true
        debug-level = 2
        user    = saned
        group   = scanner
        saned   = "/usr/sbin/saned"

       
        timeout = 500
        pidfile = "/var/run/scanbd.pid"
       
        environment {
                device = "SCANBD_DEVICE"
                action = "SCANBD_ACTION"
        }
        function function_knob {
                filter = "^message.*"
                desc   = "The value of the function knob / wheel / selector"
                env    = "SCANBD_FUNCTION"
        }
        function function_mode {
                filter = "^mode.*"
                desc   = "Color mode"
                env    = "SCANBD_FUNCTION_MODE"
        }
 
        action scan {
                filter = "^scan.*"
                numerical-trigger {
                        from-value = 1
                        to-value   = 0
                }
                desc   = "Scan to file"
                script = "/etc/scanbd/copy.sh"
        }
        action email {
                filter = "^email$"
                string-trigger {
                        from-value  = ""        
                        to-value    = "^email.*"
                }
                desc   = "Scan to email"
                script = "/etc/scanbd/mail.sh"
        }
        action copy {
                filter = "^copy$"
                string-trigger {
                        from-value  = ""
                        to-value    = "^copy.*"
                }
                desc   = "Copy to printer"
                script = "/etc/scanbd/copy.sh"
        }
        action preview {
                filter = "^preview$"
                numerical-trigger {
                        from-value = 1
                        to-value   = 0
                }
                desc   = "Preview"
                script = "/etc/scanbd/scan.sh"
        }
        action globaltest {
                filter = "^message.*"
                desc   = "Test (print all env vars)"
                script = "/etc/scanbd/pdf.sh"
        }
        action globaltest {
                filter = "^pdf.*"
                desc   = "Test (print all env vars)"
                script = "/etc/scanbd/pdf.sh"
        }
}

include(scanner.d/canon.conf)

Zwróć uwagę na ostatnie linijki, które powinne zaierać Twój skaner.

W plikach mamy nazwy script np:
/etc/scanbd/pdf.sh

przykładowy plik:

#!/bin/sh
TMPFILE="/tmp/image.tiff"
LOCKFILE="/tmp/copy.lock"

echo "pdf tworzę" >> /var/log/syslog

/usr/bin/scanimage --mode lineart -B10M --resolution 600 | pnmtops -imageheight 11 -imagewidth 8.5 | ps2pdf - /home/szymon/skaner/output.pdf | /usr/bin/mail -s "PDF" -a /home/szymon/skaner/output.pdf szymon@artmetic.pl
 
pamiętajmy o nadaniu uprawnień plikom:
 
chmod +x /etc/scanbd/pdf.sh

Linux błąd filtru i pytania o hasło drukarki – naprawa.

Dziś po upgradzie do Ubuntu 16.04 moja drukarka odmówiła posłuszeństwa, a co gorsza w panelu z drukarkami jestem ciągle atakowany o podanie hasła więc postanowiłem po wielu nieudanych próbach podawania prawidłowego hasła jednak odpalić ją z roota. Jednak to nie był koniec kłopotów bo wyświetlał się ciągle komunikat o brakującym filtrze do drukarki. A więc rozwiązałem to tak:

sudo system-config-printer

następnie usunąłem i dodałem. Drukarka wystartowała ale od razu przeszedłem do kolejki wydruku bo trochę zaległych dokumentów tam wpadło 🙂